指令盒

Choregraphe的工作原理基于指令盒。实际上,您在Choregraphe里创建行为所需的第一要素就是指令盒。首先,让我们来看看什么是指令盒。以“动作”指令盒为例:

Movement box

一个指令盒有输入点(左侧)和输出点(右侧),用于把不同的指令盒相互连在一起。事实上,要激活一个指令盒的输入点,必须把它连接至一个行为的输入点(流程图屏幕左上方)或是另一个指令盒的输出点。实例见下图:

example of connected boxes

指令盒之间的连接基于事件。一个简单的事件信号会从一个指令盒传送到另一个指令盒。这个信号还可以承载信息(例如字符串、数字、数组等)。 这就是为什么有时无法连接两个指令盒:一个指令盒输出点送出的信息必须被另一个指令盒的输入点读懂。否则,这两个指令盒就无法连接。稍后,您会了解到Choregraphe中的各种信号。

我们现在要介绍Choregraphe中三种不同的指令盒。

脚本指令盒

将"Switch LEDs" 指令盒拖放至流程图,然后双击,打开“脚本编辑器”。

script editor

脚本定义的是何时加载包含指令盒的流程图,以及何时激活指令盒的一个输入点。可以使用Python和Urbi语言编写脚本,指令盒可以使用NAOqi的任何功能进行交流(与其它模块交流,通过ALMemory记录等)。

流程图指令盒

使用以上介绍的基础指令盒,您可以构建较为复杂的指令盒。例如,一个指令盒中可以包含其它指令盒,这些指示盒里又包含有其它相互连接的指示盒。这对于构建和组织行为流程图非常有用。

您可以将若干相互连接的指令盒合并到同一个指令盒中,以获得一个可读性更强的流程图。

flow diagram

上图中,我们打开了一个“Walk”(行走)指令盒,其中有两个链接在一起的指令盒:“Distance”(距离)和“WalkStraight”(直走)。请注意,在流程图左上方的“root”(根)按钮旁,有一个“Walk”框,表明您目前处于该流程图结构的第二级,在“行走”这一指令盒里。

使用这一方法,您可以轻松地定义流程图的不同级。详见后文。

结合时间轴和流程图指令盒

在指令盒中,您可创建一个时间轴来定义动作。使用可储存关节值及数值间插值(线性、样条曲线等)的关键帧,可以在Choregraphe里快速编写动作。有关时间轴的介绍详见使用指导“从零开始创建动作”。

Timeline with keyframes

一个指令盒里可包含带有两种不同关键帧的时间轴:

  • 动作关键帧:包含关节值以及上一个动作关键帧的插值。
  • 行为关键帧:包含一个流程图,该流程图会一直运行,直到遇到下一个行为关键帧为止。

如下图所示,这两种关键帧处于不同层:

Timeline and layers

  • 可以创建若干动作或行为层,以便同时运行流程图或动作。
注释:

目前,无法在不同层上为同一关节定义数值。在以后推出的功能中会有混合模式。

  • 使用每一层旁边的小眼睛图标可以“屏蔽”这一层,即在播放行为时,会忽略该层。这个功能在调试您创建的行为时会很有用。





Copyright © 2010 Aldebaran-Robotics - 版权所有