【一】旋转矩阵、变换矩阵、欧式变换

【一】旋转矩阵、变换矩阵、欧式变换

旋转矩阵

内积(点乘):
a b = a T b = ∑ i = 1 3 a i b i = ∣ a ∣ ∣ b ∣ cos ⁡ ⟨ a , b ⟩ {\bf{a}}{\bf{b}} = {{\bf{a}}^{\rm{T}}}{\bf{b}} = \sum\limits_{i = 1}^3 {{a_i}{b_i}} = |a||b|\cos \left\langle {a,b} \right\rangleab=aTb=i=13aibi=abcosa,b
其中⟨ a , b ⟩ \left\langle {a,b} \right\ranglea,b指向量a , b {a,b}a,b的夹角。

外积(叉乘):

a × b = ∥ e 1 e 2 e 3 a 1 a 2 a 3 b 1 b 2 b 3 ∥ = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] b = d e f a ∧ b \mathbf{a}\times \mathbf{b}=\left\| \begin{matrix} {{e}_{1}} & {{e}_{2}} & {{e}_{3}} \\ {{a}_{1}} & {{a}_{2}} & {{a}_{3}} \\ {{b}_{1}} & {{b}_{2}} & {{b}_{3}} \\ \end{matrix} \right\|=\left[ \begin{matrix} {{a}_{2}}{{b}_{3}}-{{a}_{3}}{{b}_{2}} \\ {{a}_{3}}{{b}_{1}}-{{a}_{1}}{{b}_{3}} \\ {{a}_{1}}{{b}_{2}}-{{a}_{2}}{{b}_{1}} \\ \end{matrix} \right]=\left[ \begin{matrix} 0 & -{{a}_{3}} & {{a}_{2}} \\ {{a}_{3}} & 0 & -{{a}_{1}} \\ -{{a}_{2}} & {{a}_{1}} & 0 \\ \end{matrix} \right]\mathbf{b}\overset{def}{\mathop{=}}\,{{\mathbf{a}}^{\wedge }}\mathbf{b}a×b=e1a1b1e2a2b2e3a3b3=a2b3a3b2a3b1a1b3a1b2a2b1=0a3a2a30a1a2a10b=defab

a ∧ {{\mathbf{a}}^{\wedge }}a是一个反对称矩阵

a ∧ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] , a = [ a 1 a 2 a 3 ] {{\mathbf{a}}^{\wedge }}=\left[ \begin{matrix} 0 & -{{a}_{3}} & {{a}_{2}} \\ {{a}_{3}} & 0 & -{{a}_{1}} \\ -{{a}_{2}} & {{a}_{1}} & 0 \\ \end{matrix} \right],\mathbf{a}=\left[ \begin{matrix} {{a}_{1}} & {{a}_{2}} & {{a}_{3}} \\ \end{matrix} \right]a=0a3a2a30a1a2a10,a=[a1a2a3]

坐标系间的欧式变换

两个坐标系之间的运动由一个旋转加上一个平移组成,这种运动称为刚体运动。移动坐标系到世界坐标系之间,相差了一个欧式变换。
设某个单位正交基( e 1 , e 2 , e 3 ) ({{e}_{1}},{{e}_{2}},{{e}_{3}})(e1,e2,e3)经过一次旋转变成了( e ′ 1 , e ′ 2 , e ′ 3 ) ({{{{e}'}}_{1}},{{{{e}'}}_{2}},{{{{e}'}}_{3}})(e1,e2,e3)。对于同一个向量a \mathbf{a}a(该向量并没有随着坐标系的旋转而发证运动),它在两个坐标系下的坐标为[ a 1 , a 2 , a 3 ] T {{\left[ {{a}_{1}},{{a}_{2}},{{a}_{3}} \right]}^{\text{T}}}[a1,a2,a3]T[ a ′ 1 , a ′ 2 , a ′ 3 ] T {{\left[ {{{{a}'}}_{1}},{{{{a}'}}_{2}},{{{{a}'}}_{3}} \right]}^{\text{T}}}[a1,a2,a3]T。因为向量本身没变,所以根据坐标的定义,有
[ e 1 , e 2 , e 3 ] [ a 1 a 2 a 3 ] = ( e ′ 1 , e ′ 2 , e ′ 3 ) [ a ′ 1 a ′ 2 a ′ 3 ] \left[ {{e}_{1}},{{e}_{2}},{{e}_{3}} \right]\left[ \begin{matrix} {{a}_{1}} \\ {{a}_{2}} \\ {{a}_{3}} \\ \end{matrix} \right]=({{{{e}'}}_{1}},{{{{e}'}}_{2}},{{{{e}'}}_{3}})\left[ \begin{matrix} {{{{a}'}}_{1}} \\ {{{{a}'}}_{2}} \\ {{{{a}'}}_{3}} \\ \end{matrix} \right][e1,e2,e3]a1a2a3=(e1,e2,e3)a1a2a3
上述等式的左右两边同时左乘[ e 1 T e 2 T e 3 T ] \left[\begin{array}{r}e_{1}^{T} \\ e_{2}^{T} \\ e_{3}^{T}\end{array}\right]e1Te2Te3T,那么左边的系数就变成了单位矩阵,所以:
[ a 1 a 2 a 3 ] = [ e 1 T e 1 ′ e 1 T e 2 ′ e 1 T e 3 ′ e 2 T e 1 ′ e 2 T e 2 ′ e 2 T e 3 ′ e 3 T e 1 ′ e 3 T e 2 ′ e 3 T e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] =  def  R a ′ \left[\begin{array}{l} a_{1} \\ a_{2} \\ a_{3} \end{array}\right]=\left[\begin{array}{lll} e_{1}^{\mathrm{T}} e_{1}^{\prime} & e_{1}^{\mathrm{T}} e_{2}^{\prime} & e_{1}^{\mathrm{T}} e_{3}^{\prime} \\ e_{2}^{\mathrm{T}} e_{1}^{\prime} & e_{2}^{\mathrm{T}} e_{2}^{\prime} & e_{2}^{\mathrm{T}} e_{3}^{\prime} \\ e_{3}^{\mathrm{T}} e_{1}^{\prime} & e_{3}^{\mathrm{T}} e_{2}^{\prime} & e_{3}^{\mathrm{T}} e_{3}^{\prime} \end{array}\right]\left[\begin{array}{c} a_{1}^{\prime} \\ a_{2}^{\prime} \\ a_{3}^{\prime} \end{array}\right] \stackrel{\text { def }}{=} R a^{\prime}a1a2a3=e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3a1a2a3= def Ra

定义R = [ e 1 T e 1 ′ e 1 T e 2 ′ e 1 T e 3 ′ e 2 T e 1 ′ e 2 T e 2 ′ e 2 T e 3 ′ e 3 T e 1 ′ e 3 T e 2 ′ e 3 T e 3 ′ ] \mathbf{R}=\left[\begin{array}{ccc} e_{1}^{\mathrm{T}} e_{1}^{\prime} & e_{1}^{\mathrm{T}} e_{2}^{\prime} & e_{1}^{\mathrm{T}} e_{3}^{\prime} \\ e_{2}^{\mathrm{T}} e_{1}^{\prime} & e_{2}^{\mathrm{T}} e_{2}^{\prime} & e_{2}^{\mathrm{T}} e_{3}^{\prime} \\ e_{3}^{\mathrm{T}} e_{1}^{\prime} & e_{3}^{\mathrm{T}} e_{2}^{\prime} & e_{3}^{\mathrm{T}} e_{3}^{\prime} \end{array}\right]R=e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3
矩阵 R 描述了旋转本身,因此,称为 旋转矩阵。同时,该矩阵各分量是两个坐标系基的内积,由于基向量的长度为1,所以实际上是各基向量夹角的余弦值。所以这个矩阵也叫 方向余弦矩阵

为了方便理解,我们举一个简单的旋转,二维的顺时针旋转和逆时针旋转,我们采用高中还是初中学的力的分解来求解旋转矩阵,将y轴和z轴视为一种力,然后将其正交分解在新的坐标轴y’和z’ ,然后再进行力的合成可以得到如下的结果:

逆时针旋转 (旋转前:z,y,旋转后:z’,y’)
在这里插入图片描述

顺时针旋转(旋转前:z’,y’,旋转后:z,y)

在这里插入图片描述
旋转矩阵是一个行列式为1的正交矩阵(A − 1 = A T {{A}^{-1}}={{A}^{\text{T}}}A1=AT,A A T = I A{{A}^{\text{T}}}=IAAT=I)。因此行列式为1的正交矩阵也是一个旋转矩阵。

S O ( n ) = { R ∈ R n × n ∣ R R T = I , det ⁡ ( R ) = 1 } \mathrm{SO}(n)=\left\{\boldsymbol{R} \in \mathbb{R}^{n \times n} \mid \boldsymbol{R} \boldsymbol{R}^{\mathrm{T}}=\boldsymbol{I}, \operatorname{det}(\boldsymbol{R})=1\right\}SO(n)={RRn×nRRT=I,det(R)=1}
S O ( n ) \mathrm{SO}(n)SO(n)特殊正交群 的意思。这个集合由n维空间的旋转矩阵组成,特别地,S O ( 3 ) \mathrm{SO}(3)SO(3)就是指三维空间地旋转。
由于旋转矩阵为正交矩阵,它的逆(即转置)描述了一个相反的旋转。
a ′ = R − 1 a = R T a a^{\prime}=R^{-1} a=R^{\mathrm{T}} aa=R1a=RTa
这里R T R^{\mathrm{T}}RT刻画了一个相反的旋转。
用一个旋转矩阵R T R^{\mathrm{T}}RT和一个平移向量t tt完整地描述了一个欧式空间的坐标变换关系。
定义坐标系1、坐标系2,那么向量a aa在两个坐标系下的坐标为a 1 , a 2 a_1,a_2a1,a2
a 1 = R 12 a 2 + t 12 a_{1}=R_{12} a_{2}+t_{12}a1=R12a2+t12
这里的R 12 R_{12}R12是指“把坐标系我的向量变换到坐标系1”中。由于向量乘在这个矩阵的右边,它的下表是 从右读到左 的。
关于平移t 12 t_{12}t12,它实际对应的坐标系1原点指向坐标系2原点的向量, 在坐标系1下取的坐标
t 21 t_{21}t21,即从2指向1的向量在 __在坐标系2下的坐标,却并不等于− t 12 -t_{12}t12,而是和两个系的旋转还有关系。

变换矩阵

引入齐次坐标和变换矩阵,为了简单描述进行多次变换的书写形式。
[ a ′ 1 ] = [ R t 0 T 1 ] [ a 1 ] =  def  T [ a 1 ] \left[\begin{array}{l} a^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{ll} R & t \\ 0^{\mathrm{T}} & 1 \end{array}\right]\left[\begin{array}{l} a \\ 1 \end{array}\right] \stackrel{\text { def }}{=} \boldsymbol{T}\left[\begin{array}{l} a \\ 1 \end{array}\right][a1]=[R0Tt1][a1]= def T[a1]
在一个三维向量的末尾添加1,将其变成四维向量,称为 齐次坐标 。用T TT表示为变换矩阵。

关于变换矩阵 T TT,它具有比较特别的结构:左上角为旋转矩阵,右侧为平移向量,左下角为0向量,左下角为1.这种矩阵又称为特殊欧式群。
S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } \mathrm{SE}(3)=\left\{T=\left[\begin{array}{ll} R & t \\ 0^{T} & 1 \end{array}\right] \in \mathbb{R}^{4 \times 4} \mid R \in \mathrm{SO}(3), t \in \mathbb{R}^{3}\right\}SE(3)={T=[R0Tt1]R4×4RSO(3),tR3}
S O ( 3 ) SO(3)SO(3)一样,求解该矩阵的逆表示一个反向的变换:
T − 1 = [ R T − R T t 0 T 1 ] T^{-1}=\left[\begin{array}{cc} R^{\mathrm{T}} & -R^{\mathrm{T}} t \\ 0^{\mathrm{T}} & 1 \end{array}\right]T1=[RT0TRTt1]
同样,用T 12 T_{12}T12表示从2到1的变换。

参考

1.欧式空间、欧式变换
2.视觉SLAM十四讲


版权声明:本文为weixin_41756645原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。