三维空间的刚体运动
叉积与反对称矩阵
a
×
b
=
[
i
j
k
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
]
=
a
∧
b
a\times b= \begin{bmatrix}i &j& k\\ a_1 & a_2 & a_3\\b_1&b_2&b_3\end{bmatrix}=\begin{bmatrix}a_2b_3-a_3b_2\\a_3b_1-a_1b_3\\a_1b_2-a_2b_1\end{bmatrix}={a}^{\wedge}b
a×b=⎣⎡ia1b1ja2b2ka3b3⎦⎤=⎣⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎤=a∧b
a
×
b
a\times b
a×b所得向量与a与b垂直,且模长为|a||b|sin<a,b>
齐次方程
什么是齐次方程?
(x,y)->(x,y,1)
(x,y,z)->(x,y,z,1)
简单地说其次方程就是在原有坐标系上加入一个维度
SLAM中使用齐次方程有什么好处?
在不使用齐次方程时表达旋转与平移如下:
a
′
=
R
a
+
t
a
′
′
=
R
′
(
a
′
)
+
t
=
R
′
(
R
a
+
t
)
+
t
a'=Ra+t\\a''=R'(a')+t=R'(Ra+t)+t
a′=Ra+ta′′=R′(a′)+t=R′(Ra+t)+t
使用齐次方程后:
[
a
′
1
]
=
[
R
1
0
T
1
]
[
a
1
]
≜
T
[
a
1
]
\begin{bmatrix}a'\\1\end{bmatrix}=\begin{bmatrix}R&1\\0^T&1\end{bmatrix}\begin{bmatrix}a\\1\end{bmatrix}\triangleq T\begin{bmatrix}a\\1\end{bmatrix}
[a′1]=[R0T11][a1]≜T[a1]
[
a
′
′
1
]
=
T
′
T
[
a
1
]
\begin{bmatrix}a''\\1\end{bmatrix}=T'T\begin{bmatrix}a\\1\end{bmatrix}
[a′′1]=T′T[a1]
T
−
1
=
[
R
T
−
R
T
t
0
T
1
]
T^{-1}=\begin{bmatrix}R^{T}&-R^{T}t\\0^{T}&1\end{bmatrix}
T−1=[RT0T−RTt1]
使用齐次方程还有其它的一些好处,比如可以方便的表达点是否在平面或者直线上,表达直线与直线的交点,平面与平面的交点,日后在总结。。。
表达旋转的方式
- 旋转矩阵(Rotation Matrix)
基变换与坐标变换,线性空间的同构 - 旋转向量(Rotation Vector)
- 欧拉角(Euler Angle)
分为绕定轴和动轴转动的欧拉角,存在万向锁问题 - 四元数(Quaternion)
2D情况下的旋转可以用一个单位复数表达,欧拉公式
2D情况下的旋转则可以用一个单位4元数来表达
要掌握几种表达旋转的方式之间的转换关系