结合 高翔老师的著作《视觉SLAM十四讲:从理论到实践》,加上小白的工程经验共同完成。建议作为笔记功能反复使用。
一、用四元数表示旋转
把三维空间点用一个虚四元数来描述:
这相当于我们把四元数的三个虚部与空间中的三个轴相对应。,用四元数 q 表示这个旋转:
那么,旋转后的点
其三个虚部的分量表示旋转后 3D 点的坐标。
二、四元数到旋转矩阵的转换
把四元数转换到矩阵的最直观方法,是先把四元数 q 转换为轴角 和 n ,然后再根据罗德里格斯公式转换为矩阵。不过那样要计算一个 arccos 函数,代价较大。
下面直接给出四元数到旋转矩阵的转换公式。设四元数,对应的旋转矩阵 R 为:
反之,由旋转矩阵到四元数的转换如下。假设矩阵为 ,其对应的四元数q由下式给出:
由于 q 和 -q 表示同一个旋转,事实上一个 R 对应的四元数表示并不是唯一的。实际编程中,当 接近 0 时,其余三个分量会非常大,导致解不稳定,此时我们再考虑使用其他的方式进行转换。
最后,无论是四元数、旋转矩阵还是轴角,他们都应该用来描述同一个旋转。我们应该在实际中选择对我们最为方便的形式,而不必拘泥于某种特定的样子。
《视觉SLAM十四讲:从理论到实践》 PDF资源
下载链接:Robot_Starscream的资源 仅供各位研究员试读,请购买纸质书籍。