【视觉SLAM十四讲-个人笔记】三维空间刚体运动

前言

由于三维空间刚体运动比较重要,后面有可能还会专门做一次总结,结合IMU位姿估计一起吧。本章内容还是好理解的所以不做过多的讨论。

旋转矩阵

旋转矩阵是一个行列式为1的正交矩阵,反之亦然,所以对于所有旋转矩阵,我们把他们放在一个集合里:

[SO(n)= {Rinmathbb{R}^{n imes n}|RR^T=I,det(R)=1 } ]

我们称这是一个特殊正交群,表示所有旋转矩阵组成的群,n=3表示3维。这里提前了解了一下群论,再后期会仔细的进行讲解。

  • 性质:
    由于是正交阵,所以对于旋转矩阵R有:(R^{-1}=R^T),可以减少大量的计算量

变换矩阵

变换矩阵也可以组成一个群:

[ SE(3)={T=egin{pmatrix}R&t\0^T&1 end{pmatrix}inmathbb{R^{4 imes4}}| Rin SO(3),tin mathbb{R^3} } ]

变换矩阵有着与旋转矩阵相似的性质:

[T^{-1}=egin{bmatrix} R^T&-R^Tt\0^T&1 end{bmatrix} ]

旋转向量与Rodrigues 公式

任意旋转都可以由一个旋转轴与一个旋转角度来描述:( hetavec{n})
旋转向量方便描述,但是不方便计算,旋转矩阵就便于计算,任何一个向量左乘上旋转矩阵,都表示旋转后的向量。然后旋转向量和旋转矩阵可以通过Rodrigues 公式来转换:
旋转向量( o)旋转矩阵

[ R=cos heta I+(1-cos heta)vec{n}vec{n}^T+sin heta [vec{n}]_ imes ]

其中([vec{n}]_ imes)在视觉SLAM十四讲书中对应(vec{n}^land),不过([ ]_ imes)符号用的比较多。
旋转矩阵( o)旋转向量

[ heta=arccos(frac{tr(R)-1}{2})\ Rvec{n}=vec{n} ]

(tr(R))是矩阵的迹,对角线之和,在得到( heta)后再解方程(Rvec{n}=vec{n})就好了。

欧拉角

直接转步,这个还是要看图看视频好理解。
https://www.jianshu.com/p/21ab3e1d3422
注意欧拉角的死锁问题

四元数

这个就是为了解决死锁问题出来的,而且要比旋转向量方便计算。比旋转矩阵规模要小。
假设某个旋转矩阵是绕单位向量(vec{n}=(n_x,n_y,n_z)^T)进行了角度为( heta)的旋转,则四元数为:

[q=(cosfrac{ heta}{2},n_xsinfrac{ heta}{2},n_ysinfrac{ heta}{2},n_zsinfrac{ heta}{2}) ]

用四元数表示旋转,若(p=(0,x,y,z)),(p^prime)是经过旋转q得到的,那么

[p^prime=qpq^{-1} ]

原文地址:https://www.cnblogs.com/kidtic/p/14219661.html