2-1 Rotation Matrix与转角

这里想说明旋转矩阵与转角之间的对应关系,旋转矩阵是描述最终物体的姿态,而转角可以理解成旋转的过程。举个例子,旋转矩阵就像一张最终摆好姿势的照片,而转角则是怎么一步一步摆成这个姿势的,而这里有两种旋转方式,一种是Fixed Angles:绕固定不动的坐标轴转,另一种是Euler Angles:绕自身坐标轴旋转(轴会变)。同时,转动和移动不一样的是:旋转有先后顺序,而移动改变先后顺序也能到达同一个位置。
在这里插入图片描述

2-2 Fixed Angles 01

分别绕固定的X-Y-Z轴旋转(逆时针),计算所得的旋转矩阵,先转的矩阵放在后面(右边)再做连乘:
在这里插入图片描述
旋转动画:

旋转动画

Ex:旋转的先后顺序不同,旋转矩阵也会不同
在这里插入图片描述
Answer:
在这里插入图片描述

2-2 Fixed Angles 02

由旋转矩阵反推Angles(转角):
在这里插入图片描述
由上一张图片,直接计算转角:
在这里插入图片描述

2-3 Euler Angles 01

如 2-1 所述,Euler Angles每次旋转是对自身坐标轴旋转,并且与Fixed Angles不同的是,先转的矩阵放在前面(左边)再做连乘
在这里插入图片描述
可以发现先后分别绕Z-Y-X的Euler Angles得到的旋转矩阵与分别绕X-Y-Z的Fixed Angles的旋转矩阵是相同的,这在几何上也表明,旋转后的最后姿态是一样的。
旋转动画:
在这里插入图片描述
在这里插入图片描述
Ex1:与Fixed Angles一致的是,Euler Angles旋转的先后顺序不同,旋转矩阵也会不同
在这里插入图片描述
Ex2:绕Z-Y-X的Euler Angles得到的旋转矩阵与分别绕X-Y-Z的Fixed Angles的旋转矩阵是相同的(Fixed Angles的正转与Euler Angles的反转旋转矩阵是一样的)
在这里插入图片描述

2-3 Euler Angles 02

直接小结:Fix Angles与Euler Angles的绕X,Y,Z旋转的排列组合方式有12种(第一次转3 轴可选 × 第二次转2轴可选 × 第三次转2轴可选)
在这里插入图片描述
在这里插入图片描述
四元数与旋转矩阵的介绍可以参考以下的博客:1、四元数与欧拉角(Yaw、Pitch、Roll)的转换
2、欧拉角、四元数和旋转矩阵之间的关系

2-4 Mapping

齐次变换矩阵(Homogeneous Transformation Matrix)是机器人学和计算机视觉中统一描述位置与姿态的核心工具。它将三维旋转矩阵 B A R   {}^{A}_{B}\mathbf{R} \, {} BAR与平移向量( A P B   o r g {}^{A}P_{B\ org} APB org)整合为一个 4×4 矩阵,既能表示坐标系间的关系,也能直接对点或向量进行变换。
在这里插入图片描述
Mapping所讲述的是已知一个向量(或点)在坐标系{B}下的表达,考虑该向量在另一坐标系{A}的表达,以下幻灯片分别考虑了当{A}和{B}坐标系之间仅有移动或转动、同时有转动和移动,已知向量P在{B}坐标系下的表达,如何用齐次变换矩阵变换到{A}坐标系下的表达。
仅有转动或移动:
在这里插入图片描述
同时有转动和移动:
在这里插入图片描述
Ex:用齐次变换矩阵将在坐标系{B}中的点[3,7,0]‘变换到{A}中,需要求出{B}相对于{A}的旋转矩阵 B A R   {}^{A}_{B}\mathbf{R} \, {} BAR与{B}坐标系的原点相对于{A}的向量 A P B   o r g {}^{A}P_{B\ org} APB org,套上一张幻灯片即可求出 A P {}^{A}{P} AP
在这里插入图片描述

2-5 Operators 01

齐次变换矩阵除了Mapping之外,还可以当算子,对向量或点进行移动或转动,即当需要移动一个向量(或点)时只需要乘以对应的其次变换矩阵,如下所示,为仅有移动或转动的情况:
在这里插入图片描述
移动和转动的复合:
先转动再移动不等于先移动再转动
在这里插入图片描述
Ex:选C,A选项是先转动再移动的齐次变换矩阵,排除A;D选项除了先转动再移动又右乘了一个仅转动的齐次变换矩阵,排除D;看B和C,先后顺序的区别,矩阵乘法是“右边先执行”,所以先移动(右边)再转动(左边),选C。
在这里插入图片描述

2-5 Operators 02

小结:齐次变换矩阵的三种用法
第一,描述一个坐标系相对于另一个坐标系的空间状态
第二,将点由某一个坐标系的表达转换到另一个坐标系来表达(Mapping)
第三,将点(向量)在同一个坐标系中进行移动和转动(Operators)
在这里插入图片描述

2-6 Transformation Matrix的运算

1、连续运算:
这里需要注意的是矩阵之间相加的操作必须要在同一坐标系的表达下才能进行,例如{C}坐标原点相对于{B}坐标的向量 B P C   o r g {}^{B}P_{C\ org} BPC org是在坐标系{B}下的表达,需要转换到{A}坐标系下才能与向量 A P B   o r g {}^{A}P_{B\ org} APB org相加。为此,需要乘以{B}相对于{A}的旋转矩阵 B A R   {}^{A}_{B}\mathbf{R} \, {} BAR,得到 B A R   {}^{A}_{B}\mathbf{R} \, {} BAR B P C   o r g {}^{B}P_{C\ org} BPC org + A P B   o r g {}^{A}P_{B\ org} APB org
在这里插入图片描述
2、齐次变换矩阵的逆矩阵:
{B}对{A}的齐次变换矩阵乘以{A}对{B}的其次变换矩阵 = 单位阵(还是{A}自己)
B A T    A B T = B A T    ( B A T ) − 1 = I 4 × 4 {}^{A}_{B}T \; {}^{B}_{A}T = {}^{A}_{B}T \; \left({}^{A}_{B}T\right)^{-1} = I_{4 \times 4} BATABT=BAT(BAT)1=I4×4

展开旋转变换矩阵,进行相乘
[ B A R A P B   o r g 0 1 ] [ A B R B P A   o r g 0 1 ] \begin{bmatrix} {}^{A}_{B}R & {}^{A}P_{B\,org} \\ 0 & 1 \end{bmatrix} \begin{bmatrix} {}^{B}_{A}R & {}^{B}P_{A\,org} \\ 0 & 1 \end{bmatrix} [BAR0APBorg1][ABR0BPAorg1]

= [ B A R    A B R A P B   o r g + B A R    B P A   o r g 0 1 ] = [ I 3 × 3 0 0 1 ] = \begin{bmatrix} {}^{A}_{B}R \; {}^{B}_{A}R & {}^{A}P_{B\,org} + {}^{A}_{B}R \; {}^{B}P_{A\,org} \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} I_{3 \times 3} & 0 \\ 0 & 1 \end{bmatrix} =[BARABR0APBorg+BARBPAorg1]=[I3×3001]

等式两边矩阵元素相等
B A R    A B R = I 3 × 3 {}^{A}_{B}R \; {}^{B}_{A}R = I_{3 \times 3} BARABR=I3×3 因为 B A R {}^{A}_{B}R BAR的逆 = ( B A R ) T \left({}^{A}_{B}R\right)^T (BAR)T B A R {}^{A}_{B}R BAR的逆 = A B R {}^{B}_{A}R ABR ⇒ A B R = ( B A R ) T \Rightarrow {}^{B}_{A}R = \left({}^{A}_{B}R\right)^T ABR=(BAR)T

A P B   o r g + B A R    B P A   o r g = 0 {}^{A}P_{B\,org} + {}^{A}_{B}R \; {}^{B}P_{A\,org} = 0 APBorg+BARBPAorg=0
⇒ B P A   o r g = − ( B A R ) T    A P B   o r g \Rightarrow {}^{B}P_{A\,org} = - \left({}^{A}_{B}R\right)^T \; {}^{A}P_{B\,org} BPAorg=(BAR)TAPBorg

最终得到:

( B A T ) − 1 = [ A B R B P A   o r g 0 1 ] = [ ( B A R ) T − ( B A R ) T   A P B , o r g 0 1 ] \left({}^{A}_{B}T\right)^{-1} = \left[\begin{array}{cc} {}^{B}_{A}R & {}^{B}P_{A\,org} \\ 0 & 1 \end{array}\right] = \left[\begin{array}{cc} ({}^{A}_{B}R)^T & -({}^{A}_{B}R)^T\, {}^{A}P_{B,org} \\ 0 & 1 \end{array}\right] (BAT)1=[ABR0BPAorg1]=[(BAR)T0(BAR)TAPB,org1]

在这里插入图片描述
3、求未知的齐次变换矩阵:

D U T = A U T D A T = B U T C B T D C T {^U_D}T = {^U_A}T {^A_D}T = {^U_B}T {^B_C}T {^C_D}T DUT=AUTDAT=BUTCBTDCT

运用线性代数矩阵的逆乘法可以求任意未知的齐次变换矩阵:

例如, D C T {^C_D}T DCT = ( B U T C B T ) − 1 A U T D A T ({^U_B}T {^B_C}T)^{-1} {^U_A}T {^A_D}T (BUTCBT)1AUTDAT = C B T − 1 B U T − 1 A U T D A T {^B_C}T^{-1} {^U_B}T^{-1} {^U_A}T {^A_D}T CBT1BUT1AUTDAT

C B T {^B_C}T CBT = B U T − 1 A U T D A T D C T − 1 {^U_B}T^{-1} {^U_A}T {^A_D}T {^C_D}T^{-1} BUT1AUTDATDCT1
在这里插入图片描述
总结:第一,初始条件,{A}和{B}重合,即 B A T {^A_B}T BAT是单位阵;
第二,{B}对{A}的转轴旋转(Fixed Angles),用“premultiply”,先转的矩阵放在后面(右边)再做连乘;
第三,{B}对{B}自身的转轴旋转(Euler Angles),用“postmultiply”,先转的矩阵放在前面(左边)再做连乘;
第四,而对于齐次变换矩阵的乘法是“右边先执行”;
在这里插入图片描述在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐