视觉SLAM之旅 二

三维空间的刚体运动

叉积与反对称矩阵

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}ba×b=ia1b1ja2b2ka3b3=a2b3a3b2a3b1a1b3a1b2a2b1=ab
a × b a\times ba×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)+ta=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}[a1]=[R0T11][a1]T[a1]

[ a ′ ′ 1 ] = T ′ T [ a 1 ] \begin{bmatrix}a''\\1\end{bmatrix}=T'T\begin{bmatrix}a\\1\end{bmatrix}[a1]=TT[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}T1=[RT0TRTt1]
使用齐次方程还有其它的一些好处,比如可以方便的表达点是否在平面或者直线上,表达直线与直线的交点,平面与平面的交点,日后在总结。。。

表达旋转的方式

  1. 旋转矩阵(Rotation Matrix)
    基变换与坐标变换,线性空间的同构
  2. 旋转向量(Rotation Vector)
  3. 欧拉角(Euler Angle)
    分为绕定轴和动轴转动的欧拉角,存在万向锁问题
  4. 四元数(Quaternion)
    2D情况下的旋转可以用一个单位复数表达,欧拉公式
    2D情况下的旋转则可以用一个单位4元数来表达
    要掌握几种表达旋转的方式之间的转换关系

Eigen几何模块


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