机器人学笔记(1)变换矩阵
给出齐次变换矩阵的三个定义:1.它是坐标系的描述。BAT^{A}_{B}TBAT表示相对于坐标系{A}的坐标系{B}。特别的,BAR^{A}_BRBAR(纯旋转矩阵)的各列是B坐标系主轴上的单位矢量(在A坐标系下的表示),APBORGAPBORG只起到确定B的原点的作用。2.它是变换映射,BAT^{A}_{B}TBAT可以将矢量从B坐标系变换到A坐标系。3.它是变换算子。
机器人学笔记(1)变换矩阵
空间描述
如果要描述空间中确定的一点相对于空间中坐标系的位置,使用AP^{A}PAP表示点P相对坐标系A的位置矢量,然而,在实际的三维空间描述中,单单使用位置矢量是不足以描述位置信息的。
为了描述物体与参考坐标系之间的位置关系,一般选择在物体上建立坐标系,通过物体坐
标系与参考坐标系之间的关系来描述物体在空间中的位置,如图,坐标系之间的位置关系可以使用位置矢量AP^{A}PAP来表示,而两坐标系之间的旋转关系可以使用旋转矩阵来表示,一般地,我们可以将物体坐标系的三个坐标轴的单位矢量用向量XA^\hat{X_A}XA^、YA^\hat{Y_A}YA^、ZA^\hat{Z_A}ZA^表示,则其在参考坐标系上的表达为:BXA^\hat{^{B}X_A}BXA^、BYA^\hat{^{B}Y_A}BYA^、BZA^\hat{^{B}Z_A}BZA^。可有旋转矩阵为(B相对于A的表达):BAR^{A}_{B}RBAR,有:
BAR=(BXA^BYA^BZA^)=(r11r12r13r21r22r23r31r32r33) ^{A}_{B}R = \begin{pmatrix} \hat{^{B}X_A}&\hat{^{B}Y_A}&\hat{^{B}Z_A} \end{pmatrix}=\begin{pmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\ r_{31}&r_{32}&r_{33} \end{pmatrix} BAR=(BXA^BYA^BZA^)=⎝
⎛r11r21r31r12r22r32r13r23r33⎠
⎞
对于以上3×3矩阵中的每一个元素分别为物体坐标系三轴在参考坐标系下的投影,即:
BAR=(BXA^BYA^BZA^)=(XB^× XA^YB^× XA^ZB^× XA^XB^× YA^YB^× YA^ZB^× YA^XB^× ZA^YB^× ZA^ZB^× ZA^)^{A}_{B}R = \begin{pmatrix}\hat{^{B}X_A}&\hat{^{B}Y_A}&\hat{^{B}Z_A}\end{pmatrix}= \begin{pmatrix} \hat{X_B}\times\ \hat{X_A}&\hat{Y_B}\times\ \hat{X_A}&\hat{Z_B}\times\ \hat{X_A}\\ \hat{X_B}\times\ \hat{Y_A}&\hat{Y_B}\times\ \hat{Y_A}&\hat{Z_B}\times\ \hat{Y_A}\\ \hat{X_B}\times\ \hat{Z_A}&\hat{Y_B}\times\ \hat{Z_A}&\hat{Z_B}\times\ \hat{Z_A} \end{pmatrix} BAR=(BXA^BYA^BZA^)=⎝
⎛XB^× XA^XB^× YA^XB^× ZA^YB^× XA^YB^× YA^YB^× ZA^ZB^× XA^ZB^× YA^ZB^× ZA^⎠
⎞
在上式中,上标被省略,事实上,只需要在同一个坐标系下即可,结果是一样的。
观察上述矩阵,可有:
BAR=ABRT ^{A}_{B}R = ^{B}_{A}R^T BAR=ABRT
坐标系描述
为了完整描述下述机械手的位置,可将机械手上任选位置作为描述,为方便,将其设置为连体坐标系的原点,在机器人学中,位置和姿态常常成对出现,可将其描述为坐标系,使用四个矢量为一组描述位置和姿态信息,一个位置矢量描述坐标系的位置,另三个矢量描述坐标系的姿态,即为
[B]=[BAR,PBORG] [{B}]=[^{A}_{B}R,P_{BORG}] [B]=[BAR,PBORG]
P为位置矢量,
从坐标系到坐标系的映射
平移坐标的映射
如果两个坐标姿态相同,而他们在空间中的位置是不同的,则两者之间只需做一个平移变换,如下图所示。
此时,只需要做简单的矢量加法:
AP=APBOGR+BP ^{A}P=^{A}P_{BOGR}+^{B}P AP=APBOGR+BP
旋转坐标的映射
已知旋转矩阵每一列均为相互垂直的单位向量,有:
BAR=ABR−1=ABRT ^{A}_{B}R =^{B}_AR^{-1}=^{B}_AR^{T} BAR=ABR−1=ABRT
旋转矩阵是三个一组的列向量或三个一组的行向量。
BAR=(AX^BAY^BAZ^B) ^{A}_{B}R=\begin{pmatrix}^{A}\hat{X}_B&^{A}\hat{Y}_B &^{A}\hat{Z}_B\end{pmatrix} BAR=(AX^BAY^BAZ^B)
此时,我们已知矢量相对于某坐标系B的定义,现在求一矢量相对于另一个坐标系A的关系,且两个坐标系原点重合,这个B对A姿态描述是可以用一个姿态矩阵BAR^A_BRBAR来表示的,在下面这种情况中,我们已知矢量BP^BPBP在B坐标系下的表示,要求AP^APAP,我们知道任一矢量的分量就是该矢量在参考系上单位矢量的投影,而这样的投影是由点乘得到的,即:
Apx=AX^B⋅BPApy=AY^B⋅BPApz=AZ^B⋅BP ^Ap_x=^{A}\hat{X}_B\cdot^BP\\ ^Ap_y=^{A}\hat{Y}_B\cdot^BP\\ ^Ap_z=^{A}\hat{Z}_B\cdot^BP\\ Apx=AX^B⋅BPApy=AY^B⋅BPApz=AZ^B⋅BP
整理得:
AP=BAR⋅BP ^AP=^A_BR\cdot^BP AP=BAR⋅BP
在这种case中,我们已知BP^{B}PBP,求AP^A{P}AP,考虑最一般的情况,B坐标系与A坐标系的原点不重合,有一个矢量偏移,确定B原点的矢量用APBORG^A{P}_{BORG}APBORG表示,B对A的旋转用旋转矩阵BAR^{A}_{B}RBAR表示。
他们之间的变换可以借助中间坐标系先进行一次旋转,再进行一次平移得到,即:
AP=BAR⋅BP+APBOGR ^{A}P=^{A}_{B}R\cdot^{B}P+^{A}P_{BOGR} AP=BAR⋅BP+APBOGR
为了将旋转和平移统一表示,我们引入一种新的形式:
AP=BATBP ^{A}P=^{A}_{B}T^{B}P AP=BATBP
即用一个矩阵形式的算子表示一个坐标系到另一个坐标系的映射,其中T是增广后的4×4矩阵。
(AP1)=(BARAPBOGR01)(BP1) \begin{pmatrix} ^{A}P\\1 \end{pmatrix}=\begin{pmatrix} ^{A}_BR&^{A}P_{BOGR}\\0&1 \end{pmatrix}\begin{pmatrix} ^{B}P\\1 \end{pmatrix} (AP1)=(BAR0APBOGR1)(BP1)
算子:平移与旋转
平移算子:
平移指的是一个点沿一个矢量方向移动一定的距离,对于空间中一点来说,空间中点的平移与此点到另一坐标系的映射具有相同的描述,对于某一个向量在空间中的移动而言:
对于向量AP1^{A}P_1AP1而言,AQ^{A}QAQ描述了AP1^{A}P_1AP1的位置变换,为:
AP2=AQ+AP1 ^{A}P_2 =^{A}Q+^{A}P_1 AP2=AQ+AP1
用矩阵算子写出平移变换,有:
AP2=DQ(q)AP1 ^{A}P_2=D_Q(q)^{A}P_1 AP2=DQ(q)AP1
式中,q是沿矢量AQ^{A}QAQ平移的数量,其中算子DQ(q)D_Q(q)DQ(q)为一种特殊的矢量变换
DQ(q)=(100q1010q2001q30001) D_Q(q)=\begin{pmatrix} 1&0&0&q_1 \\ 0&1&0&q_2 \\ 0&0&1&q_3 \\ 0&0&0&1 \end{pmatrix} DQ(q)=⎝
⎛100001000010q1q2q31⎠
⎞
其中q1q_1q1、q2q_2q2和q3q_3q3是平移矢量AQ^AQAQ的分量,且满足q12+q22+q32=q\sqrt {q_1^2+q_2^2+q_3^2} = qq12+q22+q32=q。
旋转算子
旋转变换算子还可以通过绕某轴转过的角度来表述,例如,绕z轴旋转的旋转矩阵为:
Rz=(cosθ−sinθ00sinθcosθ0000100001) R_z=\begin{pmatrix} cos\theta&-sin\theta&0&0\\ sin\theta&cos\theta&0&0 \\ 0&0&1&0\\ 0&0&0&1 \end{pmatrix} Rz=⎝
⎛cosθsinθ00−sinθcosθ0000100001⎠
⎞
总结
给出齐次变换矩阵的三个定义:
1.它是坐标系的描述。BAT^{A}_{B}TBAT表示相对于坐标系{A}的坐标系{B}。特别的,BAR^{A}_BRBAR(纯旋转矩阵)的各列是B坐标系主轴上的单位矢量(在A坐标系下的表示),APBORG^{A}P_{BORG}APBORG只起到确定B的原点的作用。
2.它是变换映射,BAT^{A}_{B}TBAT可以将矢量从B坐标系变换到A坐标系。
3.它是变换算子。
变换算法
变换的乘法与变换的逆运算,两套变换构成了一套功能完备的变换算子。
混合变换
已知坐标系C相对于坐标系B的变换矩阵CBT^{B}_{C}TCBT和坐标系B相对于坐标系A的变换矩阵BAT^{A}_{B}TBAT,将矢量CP^CPCP变换为AP^APAP,有:
AP=BATCBTCP ^AP=^{A}_{B}T^{B}_{C}T^CP AP=BATCBTCP
即:
CAT=BATCBT ^{A}_{C}T=^{A}_{B}T^{B}_{C}T CAT=BATCBT
转为分块矩阵的形式:
CAT=(BARCBRBARBPCORG+APBORG01) ^{A}_{C}T=\begin{pmatrix} ^A_BR^B_CR&^A_BR^BP_{CORG}+^AP_{BORG}\\ 0&1 \end{pmatrix} CAT=(BARCBR0BARBPCORG+APBORG1)
逆变换
已知坐标系B相对于坐标系A——即已知变换矩阵BAT^{A}_{B}TBAT的值,为了得到坐标系A相对于坐标系B的描述,需要求解这个矩阵的逆。当然可以直接求矩阵的逆,但这样算比较繁琐,下面介绍如何利用变换矩阵的性质计算矩阵的逆。
要求BAT^A_BTBAT,必须通过APBORG^AP_{BORG}APBORG和BAR^A_BRBAR计算得到BPAORG^BP_{AORG}BPAORG和ABR^B_ARABR,首先回顾一下,关于旋转矩阵,有:
ABR=BART ^B_AR=^A_BR^T ABR=BART
计算APBORG^AP_{BORG}APBORG在B坐标系下的表示,有
(B(APBORG)1)=(ABRBPAOGR01)(APBORG1) \begin{pmatrix}^B(^AP_{BORG})\\1\end{pmatrix}=\begin{pmatrix}^{B}_AR&^{B}P_{AOGR}\\0&1\end{pmatrix}\begin{pmatrix}^AP_{BORG}\\1\end{pmatrix} (B(APBORG)1)=(ABR0BPAOGR1)(APBORG1)
注意,由于计算的是APBORG^AP_{BORG}APBORG在B坐标系下的表示,故B(APBORG)^B(^AP_{BORG})B(APBORG)是零矢量,有:
ABRAPBORG+BPAOGR=0 ^{B}_AR^AP_{BORG}+^{B}P_{AOGR}=0 ABRAPBORG+BPAOGR=0
即:
−BART⋅APBORG=BPAOGR -^A_BR^T\cdot ^AP_{BORG}=^{B}P_{AOGR} −BART⋅APBORG=BPAOGR
得到ABT^{B}_{A}TABT为:
ABT=(BART−BART⋅APBORG01) ^{B}_{A}T=\begin{pmatrix}^A_BR^T&-^A_BR^T\cdot ^AP_{BORG}\\0&1 \end{pmatrix} ABT=(BART0−BART⋅APBORG1)
})$是零矢量,有:
ABRAPBORG+BPAOGR=0 ^{B}_AR^AP_{BORG}+^{B}P_{AOGR}=0 ABRAPBORG+BPAOGR=0
即:
−BART⋅APBORG=BPAOGR -^A_BR^T\cdot ^AP_{BORG}=^{B}P_{AOGR} −BART⋅APBORG=BPAOGR
得到ABT^{B}_{A}TABT为:
ABT=(BART−BART⋅APBORG01) ^{B}_{A}T=\begin{pmatrix}^A_BR^T&-^A_BR^T\cdot ^AP_{BORG}\\0&1 \end{pmatrix} ABT=(BART0−BART⋅APBORG1)
更多推荐
所有评论(0)