[SLAM](3-4):四元数的定义与计算

结合 高翔老师的著作《视觉SLAM十四讲:从理论到实践》,加上小白的工程经验共同完成。


1.四元数的定义

        旋转矩阵用九个量描述三自由度的旋转,具有冗余性:欧拉角与旋转向量是紧凑的,但是具有奇异性。事实上,我们找不到不带奇异性的三维向量描述方式。

奇异性举例解释为:

当我们想用两个坐标表示地球表面时(如经度和维度),必定存在奇异性(维度为\pm 90°时经度无意义)。

        我们用复数集表示复平面上的向量,而复数的乘法则能表示复平面上的旋转:例如,乘上复数 i 相当于逆时针把一个复向量旋转90度。四元数是Hamilton找到的一种扩展的复数,它既是紧凑的,也没有奇异性。如果说缺点的话,四元数不够直观,其运算稍微复杂一些。

        一个四元数 q 拥有一个实部和三个虚部。如:

                                             q = q_{0} + q_{1}i + q_{2}j + q_{3}k

        其中 i , j , k 为四元数的三个虚部。这三个虚部满足关系式:

                                             \left\{\begin{matrix} i^{2}=j^{2}=k^{2}=-1\\ ij=k,ji=-k\\ jk=i,kj=-i\\ ki=j,ik=-j \end{matrix}\right.

        有时人们也用一个标量和一个向量来表达四元数:

                                     q=[ s,v ], s=q_{0}\epsilon \Re,v=\begin{bmatrix} q_{1}\\ q_{2}\\ q_{3} \end{bmatrix}\varepsilon \Re ^{3},

        这里s称为四元数的实部,而 v 称为它的虚部。如果一个四元数的实部为零,称之为实四元数。反之,若让门的实部为零,称之为虚四元数。

        我们能用单位四元数表示三维空间中任意一个旋转。乘以 i 对应着旋转180度,而 i^{2},意味着绕 i 轴旋转360度后,你得到了一个相反的东西。这个东西要旋转两周才会和它原先的样子相等。

        假设某个旋转是绕单位向量 n = \begin{bmatrix} n_{x}\\ n_{y}\\ n_{z} \end{bmatrix} 进行了角度 \theta 的旋转,那么这个旋转的四元数形式为: 

                                                                 q = \begin{bmatrix} cos\frac{n}{2}\\ n_{x}sin\frac{n}{2}\\ n_{y}sin\frac{n}{2}\\ n_{z}sin\frac{n}{2} \end{bmatrix}.

        反之,我们亦可从单位是四元数中计算出对应旋转轴夹角

                                                                   \left\{\begin{matrix} \theta = 2 arccos q_{0}\\ \begin{bmatrix} n_{x}\\ n_{y}\\ n_{x} \end{bmatrix}=\begin{bmatrix} q_{1}\\ q_{2}\\ q_{3} \end{bmatrix}/sin\frac{\theta }{2} \end{matrix}\right.

        在四元数中吗,任意的旋转都可以由两个互为相反数的四元数表示。同理,取 \theta为0,则得到一个没有旋转的四元数:

                                                                q_{0} = \begin{bmatrix} \pm 1\\ 0\\ 0\\ 0 \end{bmatrix}


《视觉SLAM十四讲:从理论到实践》 PDF资源

下载链接:https://download.csdn.net/user/robot_starscream/uploads

此资源仅供各位研究员试读,请购买纸质书籍。

猜你喜欢

转载自blog.csdn.net/Robot_Starscream/article/details/84753658
3-4
今日推荐