1. 四元数介绍
此处链接讲述了四元数的概念和旋转相关的知识。
2. 验证四元数旋转某个点后,结果是一个虚四元数(实部为零)。
即证明:p’=qpq−1的实部为0,其中p为用纯四元数表达描述的三维空间点,p=[0,x,y,z],q为表示对应旋转的四元数。(由于使用的四元数一般为单位四元数,所以四元数的逆就是其共轭:q−1=q∗/∣∣q∣∣2)
2.1.此处链接是证明过程。
2.2. 在第1节链接的微信公众号中最后一个部分也证明了这个结果,方法更简单。
2.3. 两个四元数乘积的模即为模的乘积,这保证了单位四元数相乘以后仍是单位四元数:
∥qaqb∥=∥qa∥∥qb∥
3. 四元数q变换为旋转矩阵R
四元数记为:q=q0+q1i+q2j+q3k
根据四元数的表示形式,有两种表示方法:Hamilton和JPL;
3.1. 由于哈密顿发明了四元数,Hamilton表示的四元数更常用,所以这里先介绍Hamilton形式下的变换:Hamilton满足:ij=k,ijk=−1
变换为旋转矩阵R,有:
RHam=⎣⎡1−2q22−2q322q1q2+2q0q32q1q3−2q0q22q1q2−2q0q31−2q12−2q322q2q3+2q0q12q1q3+2q0q22q2q3−2q0q11−2q12−2q22⎦⎤
3.2. 接着介绍JPL形式下的变换:JPL满足:ij=−k,ijk=1
变换为旋转矩阵R,有:
RJPL=⎣⎡1−2q22−2q322q1q2−2q0q32q1q3+2q0q22q1q2+2q0q31−2q12−2q322q2q3−2q0q12q1q3−2q0q22q2q3+2q0q11−2q12−2q22⎦⎤
4. 使用情况
4.1. Hamilton形式
Joan Sol`a大佬写的ESKF文档《Quaternion kinematics for the error-state Kalman filter》使用的是Hamilton形式;
4.2. JPL形式
MSCKF开源代码中(它的推导是按照MARS实验室的文档来);
MARS实验室介绍四元数的PDF文档《Indirect Kalman Filter for 3D Attitude Estimation》;
VINS-Mono使用的是JPL形式;
4.3. 两种形式的区别

5. 参考资料
[1] 四元数的表示形式Hamilton & JPL定义
[2] 四元数的表示形式Hamilton & JPL定义及影响
[3] Quaternion kinematics for the error-state Kalman filter
[4] 《视觉SLAM十四讲 第二版》笔记及课后习题(第三讲)