执行器
笛卡尔方法接受5个链及“Torso”(躯干)的命令。这些控制点的位置如下所示。这些名称也可以在关节控制中使用,指每个链的关节组。
// effector names "Head" ( At the neck joint ) "LArm" ( Inside the hand ) "LLeg" ( Below the ankle ) "RLeg" ( Below the ankle ) "RArm" ( Inside the hand ) "Torso" ( A reference point in the torso )
空间
给NAO创建命令时,要格外注意用来定义命令的空间。一个空间错误可能会导致严重后果。
- 躯干空间(Torso Space):与NAO的躯干参考相连,因此会随着NAO的行走而移动,随NAO身体的倾斜而改变方向。这个空间在进行本地任务时会很有用,可以帮助确定躯干框架的方向。
- 世界空间(World Space):这是一个永远不会改变的固定原点。NAO行走时,为左后方;NAO转身后,在z转动轴上会有所改变。对于那些需要一个外部绝对参考框架的计算,这个空间会很有用。
- NAO空间(NAO Space):这是映射在垂直z轴周围的双脚位置的平均值。 这个空间很有用,由于x轴总是向前方,因此就提供了一个以自我为中心的参考。
执行一个任务时,在任务开始时决定空间,并在接下来的插值中保持不变。例如,插值一旦被定义后就不会随着因腿部移动或躯干转动而引起的参考变化而改变。
轴掩码(Axis Mask)
控制NAO的手臂时,NAO没有足够的自由度来完成有六个限制的任务。
通过轴掩码,您可以定义需要控制的轴。轴掩码作为一个单一参数(一个int),可以使用以下定义进行计算:
#define AXIS_MASK_X 1 #define AXIS_MASK_Y 2 #define AXIS_MASK_Z 4 #define AXIS_MASK_WX 8 #define AXIS_MASK_WY 16 #define AXIS_MASK_WZ 32
例如,如果您只想控制位置,可以进行如下计算:
// An Axis Mask for Position only: 7 int axisMask = AXIS_MASK_X + AXIS_MASK_Y + AXIS_MASK_Z;
轴掩码的执行空间与用来定义任务的空间相同。轴掩码的作用是把不在掩码内的每个轴从限制中解放出来。请注意,世界空间里的掩码可能与躯干空间里的掩码有较大差异。
注释: |
对于Torso(躯干)、LLeg(左腿)和RLeg(右腿)执行器,不在掩码内的轴会有一个固定位置,即在执行任务时不会移动。 对于Head(头部)、LArm(左臂)和RArm(右臂)执行器,不在掩码内的轴不受限制,即可以自由移动来执行任务。 |
---|