在 3.2 中,旋转矩阵 R ∈ S O ( 3 ) R\in SO(3) R∈SO(3) 用来描述刚体参考系的姿态,也就是“朝向”。进入 3.3 后,我们要描述完整的刚体位形:既包括姿态,也包括位置。
如果 { b } \{b\} {b} 是物体参考系, { s } \{s\} {s} 是固定参考系,那么一个刚体位形可以由两部分组成:
R s b ∈ S O ( 3 ) , p s b ∈ R 3 R_{sb}\in SO(3),\qquad p_{sb}\in\mathbb{R}^3 Rsb∈SO(3),psb∈R3
其中 R s b R_{sb} Rsb 表示 { b } \{b\} {b} 相对 { s } \{s\} {s} 的姿态, p s b p_{sb} psb 表示 { b } \{b\} {b} 原点在 { s } \{s\} {s} 中的位置。3.3.1 的核心,就是把这两个量合并成一个矩阵:
T s b = [ R s b p s b 0 1 ] T_{sb}= \begin{bmatrix} R_{sb}&p_{sb}\\ 0&1 \end{bmatrix} Tsb=[Rsb0psb1]
这个矩阵就是齐次变换矩阵。
一、从 R , p R,p R,p 到 T ∈ S E ( 3 ) T\in SE(3) T∈SE(3)
三维特殊欧氏群 S E ( 3 ) SE(3) SE(3) 定义:
S E ( 3 ) = { T = [ R p 0 1 ] | R ∈ S O ( 3 ) , p ∈ R 3 } SE(3)= \left\{ T= \begin{bmatrix} R&p\\ 0&1 \end{bmatrix} \ \middle|\ R\in SO(3),\ p\in\mathbb{R}^3 \right\} SE(3)={T=[R0p1] R∈SO(3), p∈R3}
写成完整矩阵是:
T = [ r 11 r 12 r 13 p 1 r 21 r 22 r 23 p 2 r 31 r 32 r 33 p 3 0 0 0 1 ] T= \begin{bmatrix} r_{11}&r_{12}&r_{13}&p_1\\ r_{21}&r_{22}&r_{23}&p_2\\ r_{31}&r_{32}&r_{33}&p_3\\ 0&0&0&1 \end{bmatrix} T= r11r21r310r12r22r320r13r23r330p1p2p31
可以把 S E ( 3 ) SE(3) SE(3) 先理解为所有合法三维刚体位形的集合。合法的意思是:左上角必须是旋转矩阵 R ∈ S O ( 3 ) R\in SO(3) R∈SO(3),右上角是位置向量 p p p,最后一行固定为 [ 0 0 0 1 ] [0\ 0\ 0\ 1] [0 0 0 1]。
书中也给出二维版本 S E ( 2 ) SE(2) SE(2):
T = [ cos θ − sin θ p 1 sin θ cos θ p 2 0 0 1 ] T= \begin{bmatrix} \cos\theta&-\sin\theta&p_1\\ \sin\theta&\cos\theta&p_2\\ 0&0&1 \end{bmatrix} T= cosθsinθ0−sinθcosθ0p1p21
二维和三维的思想相同:用一个矩阵统一表示旋转和平移。
二、为什么引入齐次坐标
对三维点 x x x 做刚体变换时,结果是:
R x + p Rx+p Rx+p
这里同时出现了矩阵乘法和向量加法。齐次坐标把点 x x x 写成四维形式:
[ x 1 ] \begin{bmatrix} x\\ 1 \end{bmatrix} [x1]
于是旋转和平移可以合并为一次矩阵乘法:
T [ x 1 ] = [ R p 0 1 ] [ x 1 ] = [ R x + p 1 ] T \begin{bmatrix} x\\ 1 \end{bmatrix} =\begin{bmatrix} R&p\\ 0&1 \end{bmatrix} \begin{bmatrix} x\\ 1 \end{bmatrix} =\begin{bmatrix} Rx+p\\ 1 \end{bmatrix} T[x1]=[R0p1][x1]=[Rx+p1]
这个式子也解释了为什么 T T T 要写成左上角 R R R、右上角 p p p、最后一行 [ 0 0 0 1 ] [0\ 0\ 0\ 1] [0 0 0 1] 的形式:最后一行保证点的齐次坐标乘完以后仍然是点,结果最后一维仍然是 1,可以继续参与下一次变换。
更重要的是,它让连续刚体变换可以直接写成矩阵连乘。若
T 1 = [ R 1 p 1 0 1 ] , T 2 = [ R 2 p 2 0 1 ] T_1= \begin{bmatrix} R_1&p_1\\ 0&1 \end{bmatrix}, \qquad T_2= \begin{bmatrix} R_2&p_2\\ 0&1 \end{bmatrix} T1=[R10p11],T2=[R20p21]
则:
T 1 T 2 = [ R 1 R 2 R 1 p 2 + p 1 0 1 ] T_1T_2= \begin{bmatrix} R_1R_2&R_1p_2+p_1\\ 0&1 \end{bmatrix} T1T2=[R1R20R1p2+p11]
乘积仍然是同样结构的齐次变换矩阵。也就是说,多个旋转和平移可以按顺序连续复合,而不需要每一步都拆成 R x + p Rx+p Rx+p 再手动整理。
三、齐次变换矩阵的基本性质
单位矩阵。 I I I 是一个齐次变换矩阵,对应“没有旋转、没有平移”。
逆矩阵。 齐次变换矩阵的逆仍然是齐次变换矩阵。若
T = [ R p 0 1 ] T= \begin{bmatrix} R&p\\ 0&1 \end{bmatrix} T=[R0p1]
则:
y = R x + p x = R T y − R T p \begin{aligned} y &= Rx+p \\ x &= R^Ty - R^Tp \end{aligned} yx=Rx+p=RTy−RTp
T − 1 [ y 1 ] = [ R T y − R T p 1 ] T^{-1} \begin{bmatrix} y\\ 1 \end{bmatrix} =\begin{bmatrix} R^Ty - R^Tp\\ 1 \end{bmatrix} T−1[y1]=[RTy−RTp1]
T − 1 = [ R T − R T p 0 1 ] T^{-1} =\begin{bmatrix} R^T&-R^Tp\\ 0&1 \end{bmatrix} T−1=[RT0−RTp1]
封闭性。 两个齐次变换矩阵相乘,结果仍然在 S E ( 3 ) SE(3) SE(3) 中:
T 1 , T 2 ∈ S E ( 3 ) ⇒ T 1 T 2 ∈ S E ( 3 ) T_1,T_2\in SE(3)\quad\Rightarrow\quad T_1T_2\in SE(3) T1,T2∈SE(3)⇒T1T2∈SE(3)
结合律与非交换性。 矩阵乘法满足结合律,但通常不满足交换律:
( T 1 T 2 ) T 3 = T 1 ( T 2 T 3 ) (T_1T_2)T_3=T_1(T_2T_3) (T1T2)T3=T1(T2T3)
T 1 T 2 ≠ T 2 T 1 T_1T_2\neq T_2T_1 T1T2=T2T1
这意味着多个刚体变换可以连续复合,但顺序不能随意交换。
保持距离和角度。 若 T = ( R , p ) T=(R,p) T=(R,p),则对点 x , y , z ∈ R 3 x,y,z\in\mathbb{R}^3 x,y,z∈R3:
∥ T x − T y ∥ = ∥ x − y ∥ \|Tx-Ty\|=\|x-y\| ∥Tx−Ty∥=∥x−y∥
⟨ T x − T z , T y − T z ⟩ = ⟨ x − z , y − z ⟩ \langle Tx-Tz,\ Ty-Tz\rangle =\langle x-z,\ y-z\rangle ⟨Tx−Tz, Ty−Tz⟩=⟨x−z, y−z⟩
因此 T T T 描述的是刚体运动,不会拉伸、压缩或剪切物体。
四、 T T T 的三种用法
和旋转矩阵一样,齐次变换矩阵也有三种主要用法:
- 表示一个刚体或参考系的位形;
- 改变点或参考系的坐标表达;
- 主动移动点或参考系。

图 1:原书 Figure 3.14。三个参考系 { a } , { b } , { c } \{a\},\{b\},\{c\} {a},{b},{c} 和一个点 v v v。
1. 表示位形
若
T s b = [ R s b p s b 0 1 ] T_{sb}= \begin{bmatrix} R_{sb}&p_{sb}\\ 0&1 \end{bmatrix} Tsb=[Rsb0psb1]
则 T s b T_{sb} Tsb 表示 { b } \{b\} {b} 相对 { s } \{s\} {s} 的位形。其中:
- R s b R_{sb} Rsb 的三列,是 { b } \{b\} {b} 的三根坐标轴在 { s } \{s\} {s} 中的表达;
- p s b p_{sb} psb 是 { b } \{b\} {b} 原点在 { s } \{s\} {s} 中的位置。
下标可以这样读:
T 表达参考系 , 被描述参考系 T_{\text{表达参考系},\ \text{被描述参考系}} T表达参考系, 被描述参考系
例如 T b c T_{bc} Tbc 表示 { c } \{c\} {c} 相对 { b } \{b\} {b} 的位形。图 1 中:
R b c = [ 0 1 0 0 0 − 1 − 1 0 0 ] , p b c = [ 0 − 3 − 1 ] R_{bc}= \begin{bmatrix} 0&1&0\\ 0&0&-1\\ -1&0&0 \end{bmatrix}, \qquad p_{bc}= \begin{bmatrix} 0\\ -3\\ -1 \end{bmatrix} Rbc= 00−11000−10 ,pbc= 0−3−1
也就是 { c } \{c\} {c} 的姿态和原点位置都用 { b } \{b\} {b} 来表达。
2. 改变坐标表达
齐次变换矩阵遵循下标消去规则:
T a b T b c = T a c T_{ab}T_{bc}=T_{ac} TabTbc=Tac
含义是:先把 { c } \{c\} {c} 放在 { b } \{b\} {b} 中描述,再把 { b } \{b\} {b} 放在 { a } \{a\} {a} 中描述,最终得到 { c } \{c\} {c} 在 { a } \{a\} {a} 中的描述。
对点也类似。若点 v v v 在 { b } \{b\} {b} 中的坐标为 v b v_b vb,则:
T a b [ v b 1 ] = [ v a 1 ] T_{ab} \begin{bmatrix} v_b\\ 1 \end{bmatrix} =\begin{bmatrix} v_a\\ 1 \end{bmatrix} Tab[vb1]=[va1]
这个关系说明, T a b T_{ab} Tab 可以把同一个几何点的坐标从 { b } \{b\} {b} 表达改写成 { a } \{a\} {a} 表达。
3. 主动移动参考系
同一个 T T T 也可以表示一个实际施加的刚体运动。此时要特别区分左乘和右乘。
设当前位形为 T s b T_{sb} Tsb,另有一个变换
T = ( R , p ) = [ R p 0 1 ] T=(R,p)= \begin{bmatrix} R&p\\ 0&1 \end{bmatrix} T=(R,p)=[R0p1]
左乘表示固定系变换:
T s b ′ = T T s b = [ R R s b R p s b + p 0 1 ] T_{sb'}=TT_{sb} =\begin{bmatrix} RR_{sb}&Rp_{sb}+p\\ 0&1 \end{bmatrix} Tsb′=TTsb=[RRsb0Rpsb+p1]
这里 R R R 的旋转轴和 p p p 的平移方向,都用固定参考系 { s } \{s\} {s} 解释。
右乘表示体系变换:
T s b ′ ′ = T s b T = [ R s b R R s b p + p s b 0 1 ] T_{sb''}=T_{sb}T =\begin{bmatrix} R_{sb}R&R_{sb}p+p_{sb}\\ 0&1 \end{bmatrix} Tsb′′=TsbT=[RsbR0Rsbp+psb1]
这里 R R R 的旋转轴和 p p p 的平移方向,都用当前物体参考系 { b } \{b\} {b} 解释。

图 2:原书 Figure 3.15。同一个变换 T T T,左乘和右乘对应不同的物理解释。
图 2 中取:
ω ^ = ( 0 , 0 , 1 ) , θ = 90 ∘ , p = ( 0 , 2 , 0 ) \hat{\omega}=(0,0,1),\qquad \theta=90^\circ,\qquad p=(0,2,0) ω^=(0,0,1),θ=90∘,p=(0,2,0)
对应的齐次变换为:
T = [ 0 − 1 0 0 1 0 0 2 0 0 1 0 0 0 0 1 ] T= \begin{bmatrix} 0&-1&0&0\\ 1&0&0&2\\ 0&0&1&0\\ 0&0&0&1 \end{bmatrix} T= 0100−100000100201
左乘 T T s b TT_{sb} TTsb 表示先绕固定系的 z ^ s \hat z_s z^s 轴旋转,再沿固定系的 y ^ s \hat y_s y^s 平移。右乘 T s b T T_{sb}T TsbT 表示沿物体系自己的 y ^ b \hat y_b y^b 平移,再绕新的物体系 z ^ \hat z z^ 轴旋转。因为解释参考系不同,最终结果一般不同。
五、Example 3.19:用下标组织变换链

图 3:原书 Figure 3.16。移动平台、机械臂末端、相机、固定系和物体参考系之间的关系。
参考系含义如下:
- { a } \{a\} {a}:房间固定参考系;
- { b } \{b\} {b}:移动平台参考系;
- { c } \{c\} {c}:机械臂末端参考系;
- { d } \{d\} {d}:相机参考系;
- { e } \{e\} {e}:待抓取物体参考系。
已知量包括:
- 相机测得 T d b T_{db} Tdb 和 T d e T_{de} Tde;
- 机械臂关节角给出 T b c T_{bc} Tbc;
- 相机相对房间的标定 T a d T_{ad} Tad 已知。
要求的是物体相对手爪的位形:
T c e T_{ce} Tce
关键是先写对参考系链条。经过机器人一侧,从 { a } \{a\} {a} 到 { e } \{e\} {e} 有:
T a b T b c T c e T_{ab}T_{bc}T_{ce} TabTbcTce
经过相机一侧,从 { a } \{a\} {a} 到 { e } \{e\} {e} 有:
T a d T d e T_{ad}T_{de} TadTde
二者描述同一个 T a e T_{ae} Tae,因此:
T a b T b c T c e = T a d T d e T_{ab}T_{bc}T_{ce}=T_{ad}T_{de} TabTbcTce=TadTde
又因为:
T a b = T a d T d b T_{ab}=T_{ad}T_{db} Tab=TadTdb
所以:
T c e = ( T a d T d b T b c ) − 1 T a d T d e T_{ce}=(T_{ad}T_{db}T_{bc})^{-1}T_{ad}T_{de} Tce=(TadTdbTbc)−1TadTde
原书代入数值后得到:
T c e = [ 0 0 1 − 75 − 1 / 2 1 / 2 0 − 260 / 2 − 1 / 2 − 1 / 2 0 160 / 2 0 0 0 1 ] T_{ce} =\begin{bmatrix} 0&0&1&-75\\ -1/\sqrt{2}&1/\sqrt{2}&0&-260/\sqrt{2}\\ -1/\sqrt{2}&-1/\sqrt{2}&0&160/\sqrt{2}\\ 0&0&0&1 \end{bmatrix} Tce= 0−1/2−1/2001/2−1/201000−75−260/2160/21
复杂机器人系统中的位形关系,应该先用下标关系建模,再进行矩阵运算。
小结
3.3.1 建立了描述三维刚体位形的基本对象:
T = [ R p 0 1 ] ∈ S E ( 3 ) T= \begin{bmatrix} R&p\\ 0&1 \end{bmatrix} \in SE(3) T=[R0p1]∈SE(3)
它把姿态 R R R 和位置 p p p 放进同一个矩阵中,使得刚体变换可以写成:
T [ x 1 ] = [ R x + p 1 ] T \begin{bmatrix} x\\ 1 \end{bmatrix} =\begin{bmatrix} Rx+p\\ 1 \end{bmatrix} T[x1]=[Rx+p1]
这一节需要掌握四件事:
- T T T 的结构和 S E ( 3 ) SE(3) SE(3) 的含义;
- 逆矩阵公式 T − 1 = [ R T − R T p 0 1 ] T^{-1}=\begin{bmatrix}R^T&-R^Tp\\0&1\end{bmatrix} T−1=[RT0−RTp1];
- 下标消去规则 T a b T b c = T a c T_{ab}T_{bc}=T_{ac} TabTbc=Tac;
- 左乘是固定系变换,右乘是体系变换。
后续的 twist、刚体运动指数坐标、机械臂正运动学,都会以 T ∈ S E ( 3 ) T\in SE(3) T∈SE(3) 为基础。
参考资料
- Kevin M. Lynch and Frank C. Park, Modern Robotics: Mechanics, Planning, and Control, Section 3.3.1 Homogeneous Transformation Matrices.
- Lynch and Park, Modern Robotics 2019 preprint PDF. 文中图片为该 PDF 中 3.3.1 节相关原书图的局部截图。

9172

被折叠的 条评论
为什么被折叠?



