四元数旋转表达(Hamilton notation & JPL notation)

1. 四元数介绍

此处链接讲述了四元数的概念和旋转相关的知识。

2. 验证四元数旋转某个点后,结果是一个虚四元数(实部为零)。

即证明 p’ = qp q − 1 \textbf{p'}=\textbf{q}\textbf{p}\textbf{q}^{-1} p’=qpq1的实部为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} q1=q/q2
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=qaqb

3. 四元数q变换为旋转矩阵R

四元数记为: 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=12q222q322q1q2+2q0q32q1q32q0q22q1q22q0q312q122q322q2q3+2q0q12q1q3+2q0q22q2q32q0q112q122q22

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=12q222q322q1q22q0q32q1q3+2q0q22q1q2+2q0q312q122q322q2q32q0q12q1q32q0q22q2q3+2q0q112q122q22

可以发现: JPL形式四元数得到的旋转矩阵 和 Hamilton形式四元数得到的旋转矩阵是转置关系:
R J P L = ( R H a m ) T \bf{R}_{JPL}=(\bf{R}_{Ham})^T RJPL=(RHam)T

4. 使用情况

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. 各种旋转表示之间的关系[图来自参考资料4]

在这里插入图片描述5.1. 深入理解旋转矩阵和平移向量的本质.
在这里插入图片描述

6. 参考资料

[1] 四元数的表示形式Hamilton & JPL定义
[2] 四元数的表示形式Hamilton & JPL定义及影响
[3] Quaternion kinematics for the error-state Kalman filter
[4] 《视觉SLAM十四讲 第二版》笔记及课后习题(第三讲)
[5] 深入理解旋转矩阵和平移向量的本质.
[6] 四元数的两种 notation:Hamilton 和 JPL

7. 四元数(Hamilton)

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}} qq[1,21ΔϕL]T
7.2. 四元数的导数, ω \boldsymbol{\omega} ω指的是角速度:
在这里插入图片描述

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值