Modern Robotics 3.3.1 齐次变换矩阵详解:SE(3)、齐次坐标与坐标系变换

在 3.2 中,旋转矩阵 R ∈ S O ( 3 ) R\in SO(3) RSO(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 RsbSO(3),psbR3

其中 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) TSE(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]   RSO(3), pR3}

写成完整矩阵是:

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) RSO(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θ0sinθ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=RTyRTp

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} T1[y1]=[RTyRTp1]

T − 1 = [ R T − R T p 0 1 ] T^{-1} =\begin{bmatrix} R^T&-R^Tp\\ 0&1 \end{bmatrix} T1=[RT0RTp1]

封闭性。 两个齐次变换矩阵相乘,结果仍然在 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,T2SE(3)T1T2SE(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,zR3

∥ T x − T y ∥ = ∥ x − y ∥ \|Tx-Ty\|=\|x-y\| TxTy=xy

⟨ T x − T z ,   T y − T z ⟩ = ⟨ x − z ,   y − z ⟩ \langle Tx-Tz,\ Ty-Tz\rangle =\langle x-z,\ y-z\rangle TxTz, TyTz=xz, yz

因此 T T T 描述的是刚体运动,不会拉伸、压缩或剪切物体。

四、 T T T 的三种用法

和旋转矩阵一样,齐次变换矩阵也有三种主要用法:

  1. 表示一个刚体或参考系的位形;
  2. 改变点或参考系的坐标表达;
  3. 主动移动点或参考系。

在这里插入图片描述

图 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= 001100010 ,pbc= 031

也就是 { 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= 0100100000100201

左乘 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= 01/2 1/2 001/2 1/2 0100075260/2 160/2 1

复杂机器人系统中的位形关系,应该先用下标关系建模,再进行矩阵运算。

小结

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]

这一节需要掌握四件事:

  1. T T T 的结构和 S E ( 3 ) SE(3) SE(3) 的含义;
  2. 逆矩阵公式 T − 1 = [ R T − R T p 0 1 ] T^{-1}=\begin{bmatrix}R^T&-R^Tp\\0&1\end{bmatrix} T1=[RT0RTp1]
  3. 下标消去规则 T a b T b c = T a c T_{ab}T_{bc}=T_{ac} TabTbc=Tac
  4. 左乘是固定系变换,右乘是体系变换。

后续的 twist、刚体运动指数坐标、机械臂正运动学,都会以 T ∈ S E ( 3 ) T\in SE(3) TSE(3) 为基础。

参考资料

  1. Kevin M. Lynch and Frank C. Park, Modern Robotics: Mechanics, Planning, and Control, Section 3.3.1 Homogeneous Transformation Matrices.
  2. Lynch and Park, Modern Robotics 2019 preprint PDF. 文中图片为该 PDF 中 3.3.1 节相关原书图的局部截图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写个 goodMan

感谢大家的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值