【一】旋转矩阵、变换矩阵、欧式变换
旋转矩阵
内积(点乘):
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\rangle
ab=aTb=i=1∑3aibi=∣a∣∣b∣cos⟨a,b⟩
其中
⟨
a
,
b
⟩
\left\langle {a,b} \right\rangle
⟨a,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∥∥∥∥∥∥=⎣⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎤=⎣⎡0a3−a2−a30a1a2−a10⎦⎤b=defa∧b
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∧=⎣⎡0a3−a2−a30a1a2−a10⎦⎤,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}})
(e′1,e′2,e′3)。对于同一个向量
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}}}
[a′1,a′2,a′3]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⎦⎤=(e′1,e′2,e′3)⎣⎡a′1a′2a′3⎦⎤
上述等式的左右两边同时左乘
[
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⎦⎤=⎣⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te3′e2Te3′e3Te3′⎦⎤⎣⎡a1′a2′a3′⎦⎤= 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=⎣⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te3′e2Te3′e3Te3′⎦⎤
矩阵 R 描述了旋转本身,因此,称为 旋转矩阵。同时,该矩阵各分量是两个坐标系基的内积,由于基向量的长度为1,所以实际上是各基向量夹角的余弦值。所以这个矩阵也叫 方向余弦矩阵。
为了方便理解,我们举一个简单的旋转,二维的顺时针旋转和逆时针旋转,我们采用高中还是初中学的力的分解来求解旋转矩阵,将y轴和z轴视为一种力,然后将其正交分解在新的坐标轴y’和z’ ,然后再进行力的合成可以得到如下的结果:
逆时针旋转 (旋转前:z,y,旋转后:z’,y’)

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

旋转矩阵是一个行列式为1的正交矩阵(
A
−
1
=
A
T
{{A}^{-1}}={{A}^{\text{T}}}
A−1=AT,
A
A
T
=
I
A{{A}^{\text{T}}}=I
AAT=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)={R∈Rn×n∣RRT=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}} a
a′=R−1a=RTa
这里
R
T
R^{\mathrm{T}}
RT刻画了一个相反的旋转。
用一个旋转矩阵
R
T
R^{\mathrm{T}}
RT和一个平移向量
t
t
t完整地描述了一个欧式空间的坐标变换关系。
定义坐标系1、坐标系2,那么向量
a
a
a在两个坐标系下的坐标为
a
1
,
a
2
a_1,a_2
a1,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]
[a′1]=[R0Tt1][a1]= def T[a1]
在一个三维向量的末尾添加1,将其变成四维向量,称为 齐次坐标 。用
T
T
T表示为变换矩阵。
关于变换矩阵
T
T
T,它具有比较特别的结构:左上角为旋转矩阵,右侧为平移向量,左下角为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×4∣R∈SO(3),t∈R3}
与
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]
T−1=[RT0T−RTt1]
同样,用
T
12
T_{12}
T12表示从2到1的变换。
参考
更多推荐



所有评论(0)