当前位置: 代码迷 >> 综合 >> 「 SLAM lesson-3.6 」用四元数表示旋转,四元数到旋转矩阵的转换
  详细解决方案

「 SLAM lesson-3.6 」用四元数表示旋转,四元数到旋转矩阵的转换

热度:28   发布时间:2023-12-15 10:39:38.0

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


一、用四元数表示旋转

        把三维空间点用一个虚四元数来描述:

                           

        这相当于我们把四元数的三个虚部与空间中的三个轴相对应。,用四元数 q 表示这个旋转:

                           

        那么,旋转后的点  

        其三个虚部的分量表示旋转后 3D 点的坐标。

二、四元数到旋转矩阵的转换

        把四元数转换到矩阵的最直观方法,是先把四元数 q 转换为轴角  和 n ,然后再根据罗德里格斯公式转换为矩阵。不过那样要计算一个 arccos 函数,代价较大。

        下面直接给出四元数到旋转矩阵的转换公式。设四元数,对应的旋转矩阵 R 为:

                   

        反之,由旋转矩阵到四元数的转换如下。假设矩阵为 ,其对应的四元数q由下式给出:

                  

        由于 q 和 -q 表示同一个旋转,事实上一个 R 对应的四元数表示并不是唯一的。实际编程中,当  接近 0 时,其余三个分量会非常大,导致解不稳定,此时我们再考虑使用其他的方式进行转换。

        最后,无论是四元数、旋转矩阵还是轴角,他们都应该用来描述同一个旋转。我们应该在实际中选择对我们最为方便的形式,而不必拘泥于某种特定的样子。


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

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

  相关解决方案