0rC??0rS???1l??01?
经过一系列变换后,前三列表示了坐标系的姿态,然而我们只对坐标系的原点位置即最后一列感兴趣。显然,在圆柱型坐标运动中,由于绕z轴旋转了?角,运动坐标系的姿态也将改变,这一改变将在后面讨论。
实际上,可以通过绕n,o,a坐标系中的a轴旋转??角度使坐标系回转到和初始参考坐标系平行的状态,它等效于圆柱坐标矩阵右乘旋转矩阵(a,??),其结果是,该坐标系的位置仍在同一地方,但其姿态再次平行于参考坐标系,如下所示:
?C??S?RTP?Tcyl???0??0?S?C?00
图2.19 圆柱坐标
?C??S?Tcyl?Rot(z,??)???0??0?S?C?000rC???C(??)?S(??)?S(??)C(??)0rS?????1l??00??01??0000??1?000????10??0??01??000rC??10rS???01l?
?001?由此可见,运动坐标系的原点位置没有改变,但它转回到了与参考坐标系平行的状态。需注意的是,
最后的旋转是绕本地坐标系的a轴的,其目的是为了不引起坐标系位置的任何改变,而只改变姿态。
例2.14 假设要将圆柱坐标机器人手坐标系的原点放在?347?,计算该机器人的关节变量。
解:
根据式(2.33)的Tcyl矩阵,将手坐标系原点的位置分量设置为期望值,可以得到:
l?7T rC??3
rS??44于是有: tan??和??53.1?
3将?代入其中任何一个方程,可得r?5,最终结果是:
??53.?l1?, r?5,应注意:必须确保在机器人运动学中计算的角度位于正确的象限。在这个例子中,请注意rC?和rS?都是正的,并且r也是正的,这样角度?便在第一象限,且为53.1°。
2.7.1.3 球坐标
如图2.20所示,球坐标系统由一个线性运动和两个旋转运动组成,运动顺序为:先沿z轴平移r,再绕y轴旋转?并绕z轴旋转?。这三个变换建立了手坐标系与参考坐标系之间的联系。由于这些变换都是相对于全局参考坐标系的坐标轴的,因此有这三个变换所产生的总变换可以通过一次左乘每一个矩阵而求得:
RTP?Tsph?r,?,???Rot?z,??Rot?y,??Trans?0,0,?? (2.34)
?S?C?0000100??C??00????0???S???1??0?C??C??C??S?????S???00S?100C?00?S?C?000??1?00????0??0??1??0S??C?S??S?C?0010000100?0?? r??1??C??S?RTP???0??0RTP?TsphrS??C??rS??S??? (2.35) rC???1?
图2.20 球坐标
前三列表是了经过一系列变换后的坐标系的姿态,而最后一列则表示了坐标系原点的位置。以后还要进一步讨论该矩阵的姿态部分。 这里也可回转最后一个坐标系,使它与参考坐标系平行。这一问题将作为练习留给读者,要求找出正确的运动顺序来获得正确的答案。
球坐标的逆运动学方程比简单的直角坐标和圆柱坐标更复杂,因为两个角度?和?是耦合的。让
我们通过下例来说明如何求解球坐标的逆运动学方程。
例2.15 假设要将球坐标机器人手坐标系原点放在?3,4,7?,计算机器人的关节变量。
T解:
根据式(2.35)的Tsph矩阵,将手坐标系原点的位置分量设置为期望值,可以得到:
rS?C?=3
rS?S?=4
rC?=7
由第三个方程,我们得出C?是正数,但没有关于S?是正或负的信息。将前两个方程彼此相除,
因为不知道S?的实际符号是什么,因此可能会有两个解。下面的方法给出了两个可能的解,后面还必须对这最后的结果进行检验以确保它们是正确的。
4?=53.1? 或 233.1? tan?=?
3
S?=0.8 或 -0.8 C?=0.6 或 -0.6
3=5 0.6
?S?= 或 -5
?C?=7 ?=35.5? 或 -35.5? ?=8.6
可以对这两组解进行检验并正是这两组解都能满足所有的位置方程。如果沿给定的三维坐标轴旋转这些角度,物理上的确能到达同一点。然而必须注意,其中只有一组解能满足姿态方程。换句话说,前两种解将产生同样的位置,但处于不同的姿态。由于目前并不关心手坐标系在这点的姿态,因此两个位置解都是正确的。实际上,由于不能对三自由度的机器人指定姿态,所以无法确定两个解中哪一个和特定的姿态有关。 2.7.1.4 链式坐标 如图2.21所示,链式坐标由三个旋转组成。后面在讨论Denavit-Hartenberg表示法时,将推导链式坐标的矩阵表示法。
图2.21 链式坐标
2.7.2 姿态的正逆运动学方程
假设固连在机器人手上的运动坐标系已经运动到期望的位置上,但它仍然平行于参考坐标系,或者假设其姿态并不是所期望的,下一步是要在不改变位置的情况下,适当地旋转坐标系而使其达到所期望的姿态。合适的旋转顺序取决于机器人手腕的设计以及关节装配在一起的方式。考虑以下三中常见的构型配置:
(a) 滚动角、俯仰角、偏航(RPY)角 (b) 欧拉角
(c) 链式关节
2.7.2.1 滚动角、俯仰角和偏航角
这是分别绕当前a,o,n轴的三个旋转顺序,能够把机器人的手调整到所期望的姿态。此时,假定当前的坐标系平行于参考坐标系,于是机器人手的姿态在RPY(滚动角、俯仰角、偏航角)运动前与参考坐标系相同。如果当前坐标系不平行于参考坐标系,那么机器人手最终的姿态将会是先前的姿态与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来设计的,那么这个机器人就可以表示为:
?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?n0RTH?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?oS?nC?nC?oS?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?oC?n?S?nC?oC?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元素得:
S?o??nz (2.41)
C?n?oyC?a?oxS?aS?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?