当前位置: 代码迷 >> 综合 >> 「 SLAM lesson-3.5 」四元数的定义与运算
  详细解决方案

「 SLAM lesson-3.5 」四元数的定义与运算

热度:70   发布时间:2023-12-15 10:41:11.0

结合 高翔老师的著作《视觉SLAM十四讲:从理论到实践》,加上小白的工程经验共同完成。建议作为笔记功能反复使用。


一、四元数的定义

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

奇异性举例解释为:

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

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

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

                                             

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

                                             

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

                                     

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

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

        假设某个旋转是绕单位向量  进行了角度  的旋转,那么这个旋转的四元数形式为: 

                                                                 .

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

                                                                   

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

                                                                

二、四元数的运算

      常见的运算有:四则运算、共轭、模长、求逆、数乘、点乘等等。

  1. 加法减法:

    对应位置相加。
  2. 乘法:

    把  的每一项与  每项相乘,最后整理成标准形式,如果写成向量形式并利用内外积运算,该表达式会更加简洁。
    注意到,由于最后一项外积的存在,四元数乘法通常是不可交换的,除非   和  在 中贡献,那么外积项为零。
  3. 共轭

    四元数的共轭是把虚部取成相反数。
    四元数共轭与本身相乘,会得到一个实四元数,其实部为模长的平方。
  4. 模长

    四元数模长的定义,四个数字分别平方相加后开根号。
    两个四元数乘积的模即为模的乘积。
  5. 求逆

    四元数与自己的逆的乘积为实四元数的 1。
    如果 q 为单位四元数,逆和共轭就是同一个量。同时,乘积的逆有和矩阵相似的性质。
  6. 数乘与点乘

    和向量相似,四元数可以与数相乘。
    点乘是指两个四元数每个位置上的数字分别相乘。


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

下载链接:Robot_Starscream的资源  仅供各位研究员试读,请购买纸质书籍。

  相关解决方案