在行为之间管理资源

资源是执行任务或程序时必须的因素。例如,说话时,NAO使用TextToSpeech资源。在说话的同时移动左手时,NAO使用TextToSpeech、以及左臂与左手的电机资源。 NAO拥有许多资源,如LED、扩音器、电机、TextToSpeech、摄像头设定等。 您可以为每个指令盒设定所需资源以及如何在行为之间管理资源。 改变行为时进行资源管理非常重要,原因主要有以下两个:

解决冲突

范例:

您设计了两个行为,一个让NAO随着音乐起舞(如“太极拳”指令盒),而另外一个行为则是当左碰撞器被按下时,NAO开始走路(“Walk Toward”指令盒 + “Bumper”指令盒)。 由于跳舞和行走时都需要用到双腿,因此,您应该合理管理资源,以避免当这两个行为都加载至NAO上时,向NAO的双腿发送相互矛盾的指令。

使资源同步

范例:

您设计的行为让NAO伸出左手打招呼,并说“Hello”。 只有在NAO可以同时使用这两个资源时,才能执行这个行为。

设定资源管理器(Resource Manager)

  1. 右击一个指令盒。
  2. 在环境菜单中,选择Edit resources(编辑资源)。
  3. 规定第一个设定:即当同一资源被另一个行为调用时,会发生什么情况:

    - Lock (锁定):正在进行中的行为没有停止。

    - Stop on demand (根据要求停止):正在进行中的行为停止(该行为指令盒的“OnStop”输入点被激活)。

    - Callback on demand (根据要求回调):(仅限高级用户使用)应用“onResource”函数。您应在指令盒脚本中定义“onResource”函数(更多信息,请参见下文)。

    - Pause on demand (beta) (根据要求暂停,测试版):正在进行中的行为被中断;当资源被释放后,会重新开始。 这只应用于移动(即与时间轴一起使用)。

  4. 规定Timeout(超时): 即一个行为应等候多长时间,以获得可用资源

    - Immediate(立刻):如果可用资源无法立刻使用,就不会播放指令盒。

    - Wait n seconds (等待n秒):规定行为应等候多长时间,设定等待多少秒。

    - Infinite(不限时):这一设定应只用于一些可以永久等待的特殊情况。 该行为不会释放资源,也不会停止。

  5. 在列表中选择资源(建议多选)。
  6. 点击OK

设定onResource函数

当设定为Callback on demand时,调用onResource函数。

范例:

以下为一个编码范例:

def onResource(self, resource): print "another behavior asks for your resource ", resource





Copyright © 2010 Aldebaran-Robotics - 版权所有