在行为之间管理资源
资源是执行任务或程序时必须的因素。例如,说话时,NAO使用TextToSpeech资源。在说话的同时移动左手时,NAO使用TextToSpeech、以及左臂与左手的电机资源。 NAO拥有许多资源,如LED、扩音器、电机、TextToSpeech、摄像头设定等。 您可以为每个指令盒设定所需资源以及如何在行为之间管理资源。 改变行为时进行资源管理非常重要,原因主要有以下两个:
解决冲突
范例: | 您设计了两个行为,一个让NAO随着音乐起舞(如“太极拳”指令盒),而另外一个行为则是当左碰撞器被按下时,NAO开始走路(“Walk Toward”指令盒 + “Bumper”指令盒)。 由于跳舞和行走时都需要用到双腿,因此,您应该合理管理资源,以避免当这两个行为都加载至NAO上时,向NAO的双腿发送相互矛盾的指令。 |
---|
使资源同步
范例: | 您设计的行为让NAO伸出左手打招呼,并说“Hello”。 只有在NAO可以同时使用这两个资源时,才能执行这个行为。 |
---|
设定资源管理器(Resource Manager)
- 右击一个指令盒。
- 在环境菜单中,选择 (编辑资源)。
- 规定第一个设定:即当同一资源被另一个行为调用时,会发生什么情况:
-
(锁定):正在进行中的行为没有停止。-
(根据要求停止):正在进行中的行为停止(该行为指令盒的“OnStop”输入点被激活)。-
(根据要求回调):(仅限高级用户使用)应用“onResource”函数。您应在指令盒脚本中定义“onResource”函数(更多信息,请参见下文)。-
(根据要求暂停,测试版):正在进行中的行为被中断;当资源被释放后,会重新开始。 这只应用于移动(即与时间轴一起使用)。 - 规定
-
(立刻):如果可用资源无法立刻使用,就不会播放指令盒。-
(等待n秒):规定行为应等候多长时间,设定等待多少秒。-
(不限时):这一设定应只用于一些可以永久等待的特殊情况。 该行为不会释放资源,也不会停止。
(超时): 即一个行为应等候多长时间,以获得可用资源
- 在列表中选择资源(建议多选)。
- 点击 。
设定onResource函数
当设定为
时,调用onResource函数。范例: | 以下为一个编码范例: |
---|
def onResource(self, resource): print "another behavior asks for your resource ", resource