角)运动前与参考坐标系相同。如果当前坐标系不平行于参考坐标系,那么机器人手最终的姿态将会是先前的姿态与RPY右乘的结果。
因为不希望运动坐标系原点的位置有任何改变(它已被放在一个期望的位置上,所以只需要旋转她到所期望的姿态),所以RPY的旋转运动都是相对于当前的运动轴的。否则。如前面所看到的,运动坐标系的位置将会改变。于是,右乘所有由RPY和其他旋转所产生的与姿态改变有关的矩阵。
图2.22 绕当前坐标轴的RPY旋转
参考图2.22,可看到RPY旋转包括以下几种: ? 绕a轴(运动坐标系的z轴)旋转?a叫滚动; ? 绕o轴(运动坐标系的y轴)旋转?o叫俯仰; ? 绕n轴(运动坐标系的x轴)旋转?n叫偏航。 表示RPY姿态变化的矩阵为:
RPY(?a,?o,?n)?Rot?a,?a?Rot?o,?o?Rot?n,?n??
0?0?? (2.36) 0??1? 这个矩阵表示了仅由RPY引起的姿态变化。该坐标系相对于参考坐标系的位置和最终姿态是表示位置变化和RPY的两个矩阵的乘积。例如,假设一个机器人是根据球坐标和RPY来设计的,那么这个机器人就可以表示为:
R?C?aC?o?S?C??ao??S?o??0C?aS?oS?n?S?aC?nS?aS?oS?n?C?aC?nC?oS?n0C?aS?oC?n?S?aS?nS?aS?oC?n?C?aS?nC?oC?n0TH?Tsph?r,?,???RPY??a,?o,?n?
关于RPY的你运动学方程的解比球坐标更复杂,因为这里有三个耦合角,所以需要所有三个角各自的正弦和余弦值的信息才能解出这个角。为解出这三个角的正弦值和余弦值,必须将这些角解耦。因此,用Rot?a,?a?的逆左乘方程两边,得:
Rot?a,?a?RPY??a,?o,?n??Ro?to,?o?,Ro?tn,?n? (2.37)
?1假设用RPY得到的最后所期望的姿态是用n,o,a矩阵来表示的,则有:
???nx??1?nyRot?a,?a??nz??0进行矩阵相乘后得:
oxoyoz0axayaz00?0???Rot?o,?o?,Rot?n,?n? (2.38) 0??1?axC?a?ayS?aayC?a?axS?aaz0S?oC?n?S?nC?oC?n00?0??? 0??1?0?0?? (2.39) 0??1??nxC?a?nyS?a?nC??nS?axa?y?nz?0?oxC?a?oyS?aoyC?a?oxS?aoz0?C?o?0???S?o??0S?oS?nC?nC?oS?n0在式(2.38)中的n,o,a分量表示了最终的期望值,它们通常是给定或已知的,而RPY角的值是未知的变量。
让式(2.39)左右两边对应的元素相等,将产生如下结果(关于ATAN2函数的解释请参考附录A):
根据2,1元素得:
??ny,?nx? (2.40) nyC?a?nxS?a?0??a?ATAN2?ny,nx? ?a?ATA2N
根据3,1元素和1,1元素得:
C?o?nxC?a?nyS?a??o?ATAN2??nz,?nxC?a?nyS?a??
根据2,2元素和2,3元素得:
C?n?oyC?a?oxS?aS?o??nz (2.41)
S?n??ayC?a?axS?a??n?ATAN2??ayC?a?axS?a?,?oyC?a?oxS?a??? (2.42)
例2.16 下面给出了一个笛卡尔坐标-RPY型机器人手所期望的最终位姿,求滚动角,俯仰角,
偏航角和位移。
?nx?nRTp??y?nz??0
oxoyoz0axayaz0px??0.354?0.6740.6494.33??0.505?py?0.7220.4752.50???? pz???0.7880.1600.5958????1??0001?解:
根据上述方程,得到两组解:
?a?TAN2?ny,nx??ATAN?0.505,0.354??55?或235?
?o?ATAN2?nz,nxC?a?nyS?a?ATAN2?0.788,0.616??52?或128?
?????n?ATAN2???ayC?a?axS?a?,?oyC?a?oxS?a??
?ATAN2?0.259,0.966??15?或195?
px?4.33 py?2.5 pz?8
例2.17 与例2.16中的位姿一样,如果机器人是圆柱坐标-RPY型,求所有关节变量。 解: 在这种情况下,可用:
?0.354?0.6740.6494.33??0.505?0.7220.4752.50R??Tcy1(r,?,l)?RPY(?a,?o,?n) TP????0.7880.1600.5958???0001??这个方程右边有4个角,它们是耦合的,因此必须像前面那样将它们解耦。但是,因为
对于圆柱坐标系z轴旋转?a角并不影响a轴,所以它仍平行于z轴。其结果是,对于RPY绕a轴旋转的?角可简单地加到?a上。这意味着,求出的?a实际上是?a??(参见图2.23)。根据给定的位置数据,可求得例2.16的解。参考式(2.33),得到:
rC??4.33 rS??2.5???30?
?a???55? ??a?25?
S??0.5 ?r?5
pz?8 ?l?8
同例2.16一样 ??o?52? ?n?15?
当然,可以用类似的解法求出第二组解。
图2.23 例2.17的圆柱和RPY坐标
2.7.2.2 欧拉角
除了最后的旋转使然当前的a轴外,欧拉角的其他方面均与RPY相似(参见图2.24)。我们仍需要使所有旋转都是绕当前的轴转动以防止机器人的位置有任何改变。表示欧拉角的转动如下:
? 绕a轴(运动坐标系的z轴)旋转?度; ? 接着绕o轴(运动坐标系的y轴)旋转?度; ? 最后再绕a轴(运动坐标系的x轴)旋转?度。 表示欧拉角姿态变化的矩阵是:
Euler??,?,???Rot?a,??Rot?o,??,Rot?a,???
?C?C?C??S?C??S?C?C??C?S????S?C??0??C?C?S??S?C??S?C?S??C?C?S?S?0C?S?S?S?C?00?0?? (2.43) 0??1?
图2.24 绕当前坐标轴的欧拉旋转
再次强调,该矩阵只是表示了由欧拉角所引起的姿态变化。相对于参考坐标系,这个坐标系的最终位姿是表示位置变化的矩阵和表示欧拉角的矩阵的乘积。
欧拉角的逆运动学求解与RPY非常相似。可以使欧拉方程的两边左乘Rot?1?a,??来消去其中一边的?。让两边的对应元素相等,就可得到以下方程(假设由欧拉角得到的最终所期望的姿态是由n,o,a矩阵表示):
???nx?n?1Rot?a,????y?nz??0或
oxoyoz0axayaz00??C?C??S?0????0???S?C???1??0?C?S?C?S?S?0S?0C?00?0??? 0??1?0?0?? (2.44) 0??1??nxC??nyS???nS??nC?y?x?nz?0?oxC??oyS??oxS??oyC?oz0?C?C??S????S?C???0C?S?S?0axC??ayS??axS??ayC?az0S?0C?0?C?S?0?0?? (2.45) 0??1?记住,式(2.44)中的n,o,a表示了最终的期望值,它们通常是给定或已知的。欧拉角的值是未知变量。
让式(2.45)左右两边对应的元素相等,可得到如下结果: 根据2,3元素,可得:
?axS??ayC??0???ATAN2?ay,ax?或??ATAN2??ay,?ax? (2.46)
由于求得了值,因此式(2.45)左边所有的元素都是已知的。根据2,1元素和2,2元素得:
S???nxS??nyC?
C???oxS??oyC????ATAN2??nxS??nyC?,?oxS??oyC?? (2.47)
最后根据1,3元素和3,3元素,得:
C??az???ATAN2?axC??ayS?,az?S??axC??ayS? (2.48)
例2.18 给定一个直角坐标系—欧拉角型机器人手的最终期望状态,求相应的欧拉角。