Representations
eigen中quaternion的构造函数为Quaternion (const Scalar &w, const Scalar &x, const Scalar &y, const Scalar &z),注意w在前。然而在内部存储时eigen将四元数的w放在最后,例如通过Eigen::Vector4d q = q_AB.coeffs();访问时,q中的最后一个元素才是w。
在论文中,比较常见的四元数分为两种hamilton quaternion和JPL quaternion。主要的区别在于前者是右手系 ij=k ,后者是左手系 ij=−k ,eigen中的四元数为hamilton quaternion,然而有点不一样的是四元数内的顺序定义不一样,即w在最后。
Q=pw+pxi+pyj+pzk⟺Q=pw+pv
q=[pxpypzpw]T
Product
四元数的乘积具有以下形式,在eigen中直接调用*即可。
p⊗q=⎡⎣⎢⎢⎢⎢⎢pwqx+pxqw+pyqz−pzqypwqy−pxqz+pyqw+pzqxpwqz+pxqy−pyqx+pzqwpwqw−pxqx−pyqy−pzqz⎤⎦⎥⎥⎥⎥⎥
同时也可以将四元数的乘法写成矩阵的乘法,这里定义四元数的左乘矩阵 []L 和右乘矩阵 []R 。
p⊗q=[p]Lq=[q]Rp
[q]L

本文详细介绍了在Eigen库中如何表示和操作四元数,包括四元数的构造、乘法以及在流形空间上的优化。讨论了四元数乘法的矩阵表示,以及在优化过程中如何处理四元数模为1的约束。同时,阐述了四元数误差计算的方法及其雅可比矩阵的求解过程。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



