此处链接讲述了四元数的概念和旋转相关的知识。
即证明: p’ = qp q − 1 \textbf{p'}=\textbf{q}\textbf{p}\textbf{q}^{-1} p’=qpq−1的实部为0,其中 p \textbf{p} p为用纯四元数表达描述的三维空间点, p = [ 0 , x , y , z ] \textbf{p}=[0,x,y,z] p=[0,x,y,z], q \textbf{q} q为表示对应旋转的四元数。(由于使用的四元数一般为单位四元数,所以四元数的逆就是其共轭: q − 1 = q ∗ / ∣ ∣ q ∣ ∣ 2 q^{-1}=q^{*}/||q||^{2} q−1=q∗/∣∣q∣∣2) 2.1.此处链接是证明过程。 2.2. 在第1节链接的微信公众号中最后一个部分也证明了这个结果,方法更简单。 2.3. 《Indirect Kalman Filter for 3D Attitude Estimation》文中1.4节也有证明过程。 2.3. 两个四元数乘积的模即为模的乘积,这保证了单位四元数相乘以后仍是单位四元数: ∥ q a q b ∥ = ∥ q a ∥ ∥ q b ∥ \parallel{q_aq_b}\parallel=\parallel{q_a}\parallel\parallel{q_b}\parallel ∥qaqb∥=∥qa∥∥qb∥
四元数记为: q = q 0 + q 1 i + q 2 j + q 3 k q=q_0+q_1i+q_2j+q_3k q=q0+q1i+q2j+q3k 根据四元数的表示形式,有两种表示方法:Hamilton(右手系)和JPL(左手系); 3.1. 由于哈密顿发明了四元数,Hamilton表示的四元数更常用,所以这里先介绍Hamilton形式下的变换:Hamilton满足: i j = k , i j k = − 1 ij=k, ijk=-1 ij=k,ijk=−1 变换为旋转矩阵R,有: R H a m = [ 1 − 2 q 2 2 − 2 q 3 2 2 q 1 q 2 − 2 q 0 q 3 2 q 1 q 3 + 2 q 0 q 2 2 q 1 q 2 + 2 q 0 q 3 1 − 2 q 1 2 − 2 q 3 2 2 q 2 q 3 − 2 q 0 q 1 2 q 1 q 3 − 2 q 0 q 2 2 q 2 q 3 + 2 q 0 q 1 1 − 2 q 1 2 − 2 q 2 2 ] \bf{R}_{Ham}= \it{}\begin{bmatrix} 1−2q^2_2−2q_3^2 & 2q_1q_2−2q_0q_3 & 2q_1q_3+2q_0q_2 \\ 2q_1q_2+2q_0q_3 & 1−2q^2_1−2q^2_3 & 2q_2q_3−2q_0q_1 \\ 2q_1q_3−2q_0q_2 & 2q_2q_3+2q_0q_1 & 1−2q^2_1−2q^2_2 \end{bmatrix} RHam=⎣⎡1−2q22−2q322q1q2+2q0q32q1q3−2q0q22q1q2−2q0q31−2q12−2q322q2q3+2q0q12q1q3+2q0q22q2q3−2q0q11−2q12−2q22⎦⎤
3.2. 接着介绍JPL形式下的变换:JPL满足: i j = − k , i j k = 1 ij=-k, ijk=1 ij=−k,ijk=1 变换为旋转矩阵R,有: R J P L = [ 1 − 2 q 2 2 − 2 q 3 2 2 q 1 q 2 + 2 q 0 q 3 2 q 1 q 3 − 2 q 0 q 2 2 q 1 q 2 − 2 q 0 q 3 1 − 2 q 1 2 − 2 q 3 2 2 q 2 q 3 + 2 q 0 q 1 2 q 1 q 3 + 2 q 0 q 2 2 q 2 q 3 − 2 q 0 q 1 1 − 2 q 1 2 − 2 q 2 2 ] \bf{R}_{JPL}= \it{}\begin{bmatrix} 1−2q^2_2−2q_3^2 & 2q_1q_2+2q_0q_3 & 2q_1q_3−2q_0q_2 \\ 2q_1q_2−2q_0q_3 & 1−2q^2_1−2q^2_3 & 2q_2q_3+2q_0q_1 \\ 2q_1q_3+2q_0q_2 & 2q_2q_3−2q_0q_1 & 1−2q^2_1−2q^2_2 \end{bmatrix} RJPL=⎣⎡1−2q22−2q322q1q2−2q0q32q1q3+2q0q22q1q2+2q0q31−2q12−2q322q2q3−2q0q12q1q3−2q0q22q2q3+2q0q11−2q12−2q22⎦⎤
可以发现: JPL形式四元数得到的旋转矩阵 和 Hamilton形式四元数得到的旋转矩阵是转置关系: R J P L = ( R H a m ) T \bf{R}_{JPL}=(\bf{R}_{Ham})^T RJPL=(RHam)T
4.1. Hamilton形式 Joan Sol`a大神写的ESKF文档《Quaternion kinematics for the error-state Kalman filter》使用的是Hamilton形式; Eigen, Ceres, MATLAB, ROS, 具体说明查看参考资料[6] VINS-Mono使用的是Hamilton形式 (VINS-Mono论文里说明使用的是Hamilton形式, 参考资料2说vins使用的是JPL, 应该是错误的) 4.2. JPL形式 MSCKF开源代码中(它的推导是按照MARS实验室的文档来); MARS实验室介绍四元数的PDF文档《Indirect Kalman Filter for 3D Attitude Estimation》; 4.3. 两种形式的区别
5.1. 深入理解旋转矩阵和平移向量的本质.
[1] 四元数的表示形式Hamilton & JPL定义 [2] 四元数的表示形式Hamilton & JPL定义及影响 [3] Quaternion kinematics for the error-state Kalman filter [4] 《视觉SLAM十四讲 第二版》笔记及课后习题(第三讲) [5] 深入理解旋转矩阵和平移向量的本质. [6] 四元数的两种 notation:Hamilton 和 JPL
7.1. 四元数小量的更新方式, Δ ϕ L \Delta \phi_{\mathcal{L}} ΔϕL指的是小量, 也就是很短时间内转过的角度: q ← q ⊗ [ 1 , 1 2 Δ ϕ L ] T \mathbf{q} \leftarrow \mathbf{q} \otimes\left[1, \frac{1}{2} \Delta\boldsymbol{\phi}_{\mathcal{L}} \right]^{\mathrm{T}} q←q⊗[1,21ΔϕL]T 7.2. 四元数的导数, ω \boldsymbol{\omega} ω指的是角速度: