惯性导航解算

惯性导航解算

一、惯性导航解算的目的

从IMU原始的角速度(陀螺仪采集)和加速度(加速度计采集)数据得到它的导航结果(位置、速度、姿态)。

1. 姿态描述

在导航定位领域,描述一个物体的姿态,常用的描述有欧拉角、旋转矩阵、四元数,这三个概念的理解难度逐渐递增。另外,还有一种表示方式,是旋转向量,它主要作为运算过程中的一个工具,而一般不用来对外作为姿态的描述输出

1.1 旋转矩阵

1) 内积

a . b = a T b = ∑ i = 1 3 = ∣ a ∣ ∣ b ∣ cos ⁡ < a , b > a.b = a^Tb = \sum^3_{i = 1}=|a||b|\cos<a,b> a.b=aTb=i=13=a∣∣bcos<a,b>

内积可以描述向量间的投影关系。

2) 外积

a × b = [ i j k a 1 a 2 a 3 b 1 b 2 b 3 ] = [ a 2 b 3 − a 3 b 2 a 2 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] b = a ∧ b a\times{b}=\left[\begin{array}{ccc} i & j & k \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{array}\right]=\left[\begin{array}{c} a_2b_3-a_3b_2 \\ a_2b_1-a_1b_3 \\ a_1b_2-a_2b_1 \end{array}\right]=\left[\begin{array}{ccc} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \end{array}\right]b=a^{\wedge}b a×b= ia1b1ja2b2ka3b3 = a2b3a3b2a2b1a1b3a1b2a2b1 = 0a3a2a30a1a2a10 b=ab

外积的方向垂直于这两个向量,大小为 ∣ a ∣ ∣ b ∣ s i n ⟨ a , b ⟩ |a| |b| sin ⟨a, b⟩ a∣∣bsina,b,是两个向量张成的四边形的有向面积。对于外积,我们引入了 ∧ ^\wedge 符号,把 a 写成一个矩阵。事实上是一个反对称矩阵,你可以将 ∧ ^{\wedge} 记成一个反对称符号。这样就把外积 a × b a × b a×b,写成了矩阵与向量的乘法 a ∧ b a^{\wedge}b ab,把它变成了线性运算。

3) 旋转矩阵定义

旋转矩阵是一个非常常见的姿态描述和计算手段了,因为它可以很方便地对坐标系中的矢量进行计算。

假设旋转前,载体系(b系)的单位正交基为 $\left(\mathbf{e}{1}, \mathbf{e}{2}, \mathbf{e}_{3}\right) $,旋转后对应的单位正交基为 ( e 1 ′ , e 2 ′ , e 3 ′ ) \left(\mathbf{e}_{1}^{\prime}, \mathbf{e}_{2}^{\prime}, \mathbf{e}_{3}^{\prime}\right) (e1,e2,e3),在世界坐标系(w系,不随载体的旋转而旋转)下有向量 a \mathbf{a} a ,它在旋转前后两个坐标系中的坐标分别为 [ a 1 , a 2 , a 3 ] T \left[a_{1}, a_{2}, a_{3}\right]^{\mathrm{T}} [a1,a2,a3]T [ a 1 ′ , a 2 ′ , a 3 ′ ] T \left[a_{1}^{\prime}, a_{2}^{\prime}, a_{3}^{\prime}\right]^{\mathrm{T}} [a1,a2,a3]T ,那么有
[ e 1 , e 2 , e 3 ] [ a 1 a 2 a 3 ] = [ e 1 ′ , e 2 ′ , e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] \left[\mathbf{e}_{1}, \mathbf{e}_{2}, \mathbf{e}_{3}\right]\left[\begin{array}{l} a_{1} \\ a_{2} \\ a_{3} \end{array}\right]=\left[\mathbf{e}_{1}^{\prime}, \mathbf{e}_{2}^{\prime}, \mathbf{e}_{3}^{\prime}\right]\left[\begin{array}{c} a_{1}^{\prime} \\ a_{2}^{\prime} \\ a_{3}^{\prime} \end{array}\right]\\ [e1,e2,e3] a1a2a3 =[e1,e2,e3] a1a2a3
由此可以得到
a = [ a 1 a 2 a 3 ] = [ e 1 T e 1 ′ e 1 T e 2 ′ e 1 T e 3 ′ e 2 T e 1 ′ e 2 T e 2 ′ e 2 T e 3 ′ e 3 T e 1 ′ e 3 T e 2 ′ e 3 T e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] =  def  R a ′ \boldsymbol{a}=\left[\begin{array}{l} a_{1} \\ a_{2} \\ a_{3} \end{array}\right]=\left[\begin{array}{lll} \mathbf{e}_{1}^{T} \mathbf{e}_{1}^{\prime} & \mathbf{e}_{1}^{T} \mathbf{e}_{2}^{\prime} & \mathbf{e}_{1}^{T} \mathbf{e}_{3}^{\prime} \\ \mathbf{e}_{2}^{T} \mathbf{e}_{1}^{\prime} & \mathbf{e}_{2}^{T} \mathbf{e}_{2}^{\prime} & \mathbf{e}_{2}^{T} \mathbf{e}_{3}^{\prime} \\ \mathbf{e}_{3}^{T} \mathbf{e}_{1}^{\prime} & \mathbf{e}_{3}^{T} \mathbf{e}_{2}^{\prime} & \mathbf{e}_{3}^{T} \mathbf{e}_{3}^{\prime} \end{array}\right]\left[\begin{array}{l} a_{1}^{\prime} \\ a_{2}^{\prime} \\ a_{3}^{\prime} \end{array}\right] \stackrel{\text { def }}{=} \boldsymbol{R a}^{\prime}\\ a= a1a2a3 = e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 a1a2a3 = def Ra
其中 R \mathbf{R} R 就是旋转矩阵,带上坐标系下标,可以写为 R w b \mathbf{R}_{wb} Rwb,表示是b系到w系的旋转矩阵。

4) 旋转矩阵性质

旋转矩阵的主要特性是单位正交矩阵,即
R − 1 = R T \mathbf{R}^{-1} = \mathbf{R}^T\\ R1=RT

5) 旋转矩阵的微分方程

假设世界坐标系(w系)中有一个固定不动的矢量 r w \boldsymbol{r}^{w} rw ,它在载体坐标系(b系)下的表示为 r b \boldsymbol{r}^{b} rb ,则有
r w = R w b r b \boldsymbol{r}^{w}=\boldsymbol{R}_{w b} \boldsymbol{r}^{b}\\ rw=Rwbrb
两边同时微分,得到
r ˙ w = R w b r ˙ b + R ˙ w b r b \dot{\boldsymbol{r}}^{w}=\boldsymbol{R}_{w b} \dot{\boldsymbol{r}}^{b}+\dot{\boldsymbol{R}}_{w b} \boldsymbol{r}^{b}\\ r˙w=Rwbr˙b+R˙wbrb
由于 r ˙ w = 0 \dot{\boldsymbol{r}}^{w}=\mathbf{0} r˙w=0(固定矢量求导为零, r ˙ b = − ω w b b × r b \dot{\boldsymbol{r}}^{b}=-\boldsymbol{\omega}_{w b}^{b} \times \boldsymbol{r}^{b} r˙b=ωwbb×rb (其中 ω w b b \boldsymbol{\omega}_{w b}^{b} ωwbb 代表载体旋转角速度在b系下的表示,实际使用时,指的就是陀螺仪的角速度输出,且暂不考虑误差),因此有
0 = R w b ( − ω w b b × r b ) + R ˙ w b r b \mathbf{0}=\boldsymbol{R}_{w b}\left(-\boldsymbol{\omega}_{w b}^{b} \times \boldsymbol{r}^{b}\right)+\dot{\boldsymbol{R}}_{w b} \boldsymbol{r}^{b}\\ 0=Rwb(ωwbb×rb)+R˙wbrb
移项可得
R w b ( ω w b b × r b ) = R ˙ w b r b \boldsymbol{R}_{w b}\left(\boldsymbol{\omega}_{w b}^{b} \times \boldsymbol{r}^{b}\right)=\dot{\boldsymbol{R}}_{w b} \boldsymbol{r}^{b}\\ Rwb(ωwbb×rb)=R˙wbrb

R w b ( ω w b b × r b ) = R ˙ w b r b \boldsymbol{R}_{w b}\left(\boldsymbol{\omega}_{w b}^{b} \times \boldsymbol{r}^{b}\right)=\dot{\boldsymbol{R}}_{w b} \boldsymbol{r}^{b}\\ Rwb(ωwbb×rb)=R˙wbrb
因此有
R ˙ w b = R w b [ ω w b b ] × \dot{\boldsymbol{R}}_{w b}=\boldsymbol{R}_{w b}\left[\boldsymbol{\omega}_{w b}^{b}\right]_{\times}\\ R˙wb=Rwb[ωwbb]×

[ ω w b b ] × = [ 0 − w 3 w 2 w 3 0 − w 1 − w 2 w 1 0 ] \left[\boldsymbol{\omega}_{w b}^{b}\right]_{\times} = \left[\begin{array}{ccc} 0 & -w_3 & w_2 \\ w_3 & 0 & -w_1 \\ -w_2 & w_1 & 0 \end{array}\right] [ωwbb]×= 0w3w2w30w1w2w10

1.2 四元数

四元数是超复数,即“复数的复数”
若有复数
A = a + b i B = c + d i \mathbf{A} = a + b\mathbf{i} \\ \mathbf{B} = c + d\mathbf{i} A=a+biB=c+di
则复数的复数为:
Q = A + B j = ( a + b i ) + ( c + d i ) j = a + b i + c j + d i j \begin{aligned} \mathbf{Q} &= \mathbf{A+Bj} \\ &= (a+b\mathbf{i}) + (c+d\mathbf{i})\mathbf{j}\\ &=a+b\mathbf{i} + c\mathbf{j}+d\mathbf{i}\mathbf{j} \end{aligned}\\ Q=A+Bj=(a+bi)+(c+di)j=a+bi+cj+dij
在这里,另 k = i j \mathbf{k=ij} k=ij,则有
Q = a + b i + c j + d k \begin{aligned} \mathbf{Q} = a+b\mathbf{i} + c\mathbf{j}+d\mathbf{k} \end{aligned}\\ Q=a+bi+cj+dk
因此,从 Q = A + B j \mathbf{Q=A+Bj} Q=A+Bj可以看出,四元数可以理解为“复数的复数”。

一个四元数 q 拥有一个实部和三个虚部。这里把实部写在前面(也有地方把实部写在
后面)
q = q w + q v = q w + q x i + q y j + q z k \boldsymbol{q}=q_{w}+\boldsymbol{q}_{v}=q_{w}+q_{x} \boldsymbol{i}+q_{y} \boldsymbol{j}+q_{z} \boldsymbol{k}\\ q=qw+qv=qw+qxi+qyj+qzk
其中 q w q_{w} qw是实部, q v \mathbf{q}_v qv是虚部。

其中 i, j, k 为四元数的三个虚部。这三个虚部满足关系式:
i 2 = j 2 = k 2 = − 1 i j = k , j i = − k j k = i , k j = − i k i = j , i k = − j i^2=j^2=k^2=-1\\ ij = k, ji=-k\\ jk=i,kj=-i\\ ki=j,ik=-j i2=j2=k2=1ij=k,ji=kjk=i,kj=iki=j,ik=j

1) 单位四元数

在姿态表示中,我们所用的四元数都是单位四元数,即
∣ ∣ q ∣ ∣ = q w 2 + q x 2 + q y 2 + q z 2 = 1 ||\boldsymbol{q}||=\sqrt{q_w^2 + q_x^2 + q_y^2 + q_z^2} = 1 \\ ∣∣q∣∣=qw2+qx2+qy2+qz2 =1

2) 四元数加减法

四元数 p , q p,q p,q的加减运算为:
p + q = [ p w ± q w , p v ± q v ] p+q = [p_w{\pm}q_w,p_v{\pm}q_v] p+q=[pw±qw,pv±qv]

3) 共轭四元数与四元数的逆

共轭四元数指的是实部相同,虚部相反的四元数
q ∗ = q w − q v = q w − q x i − q y j − q z k q ∗ q = 1 \boldsymbol{q}^{*}=q_{w}-\boldsymbol{q}_{v}=q_{w}-q_{x} \boldsymbol{i}-q_{y} \boldsymbol{j}-q_{z} \boldsymbol{k}\\ \boldsymbol{q}^{*}\boldsymbol{q} = 1 q=qwqv=qwqxiqyjqzkqq=1
一个四元数的逆为:
q − 1 = q ∗ / ∥ q ∥ \boldsymbol{q}^{-1}=\boldsymbol{q}^{*}/\Vert\boldsymbol{q}\Vert\\ q1=q/∥q
按此定义,四元数和自己的逆的乘积为实四元数的 1:
q q − 1 = q q − 1 = 1 \boldsymbol{q}\boldsymbol{q}^{-1}=\boldsymbol{q}\boldsymbol{q}^{-1}=1\\ qq1=qq1=1
如果 q q q 为单位四元数,逆和共轭就是同一个量。同时,乘积的逆有和矩阵相似的性
质:
q − 1 = q ∗ ( q a q b ) − 1 = q b − 1 q a − 1 \boldsymbol{q}^{-1}=\boldsymbol{q}^{*}\\ (\boldsymbol{q}_a\boldsymbol{q}_b)^{-1} = \boldsymbol{q}^{-1}_b\boldsymbol{q}^{-1}_a q1=q(qaqb)1=qb1qa1

4) 四元数的旋转

假设一个空间三维点 p = [ x y z ] ∈ R 3 \boldsymbol{p} =\left[\begin{array}{c} x & y & z\end{array}\right] \in \mathbb{R}^3 p=[xyz]R3 ,以及一个由轴角 n , θ n, \theta n,θ 指定的旋转。三维点 p p p 经过旋转之后变成为 p ′ p' p 。如果使用矩阵描述,那么有 p ′ = R p p'= Rp p=Rp。如果用四元数描述旋转,则如下:

首先,把三维空间点用一个虚四元数来描述:
p = [ 0 x y z ] = [ 0 v ] \boldsymbol{p} =\left[\begin{array}{c}0 & x & y & z\end{array}\right] = \left[\begin{array}{c}0 &v\end{array}\right] p=[0xyz]=[0v]

这相当于我们把四元数的三个虚部与空间中的三个轴相对应。然后 ,用四元数 q q q表示这个旋转:
q = [ cos ⁡ θ 2 n sin ⁡ θ 2 ] \boldsymbol{q} =\left[\begin{array}{c}\cos{\frac{\theta}{2}} & n\sin{\frac{\theta}{2}}\end{array}\right] q=[cos2θnsin2θ]

那么,旋转后的点 p ′ p^{\prime} p即可表示为这样的乘积:
p ′ = q ⊗ p ⊗ q ∗ \boldsymbol{p}^{\prime}=\boldsymbol{q} \otimes \boldsymbol{p} \otimes \boldsymbol{q}^{*}\\ p=qpq

4) 四元数乘法

乘法是把 p p p的每一项与 q q q 每项相乘,最后相加,虚部要虚部满足关系式进行整理,
可得:
p = p w + p x i + p y j + p z k q = q w + q x i + q y j + q z k p ⊗ q = p w q w − p x q x − p y q y − p z q z + ( p w q x + p x q w + p y q z − p z q y ) i + ( p q q y + p y q w + p z q x − p x q z ) j + ( p w q z + p z q w + p x q y − p y q x ) k p = p_w + p_xi+p_yj+p_zk\\q=q_w+q_xi+q_yj+q_zk\\ p{\otimes}q = p_wq_w - p_xq_x - p_yq_y - p_zq_z\\ +( p_wq_x +p_xq_w + p_y q_z - p_z q_y)i\\ +( p_qq_y + p_yq_w + p_zq_x - p_xq_z)j\\ +( p_wq_z + p_zq_w + p_xq_y - p_yq_x)k p=pw+pxi+pyj+pzkq=qw+qxi+qyj+qzkpq=pwqwpxqxpyqypzqz+(pwqx+pxqw+pyqzpzqy)i+(pqqy+pyqw+pzqxpxqz)j+(pwqz+pzqw+pxqypyqx)k
虽然稍为复杂,但形式上是整齐有序的。如果写成向量形式并利用内外积运算,该表
达会更加简洁:
p ⊗ q = [ p w q w − p v T q v p w q v + q w p v + p v × q v ] \boldsymbol{p} \otimes \boldsymbol{q}=\left[\begin{array}{c} p_{w} q_{w}-\boldsymbol{p}_{v}^{\mathrm{T}} \boldsymbol{q}_{v} \\ p_{w} \boldsymbol{q}_{v}+q_{w} \boldsymbol{p}_{v}+\boldsymbol{p}_{v} \times \boldsymbol{q}_{v} \end{array}\right]\\ pq=[pwqwpvTqvpwqv+qwpv+pv×qv]
如果你把上面的式子展开,会发现四元数乘法可以表示成矩阵与向量相乘的形式
p ⊗ q = [ p ] L q \boldsymbol{p} \otimes \boldsymbol{q}=[\boldsymbol{p}]_{L} \boldsymbol{q}\\ pq=[p]Lq
其中
[ p ] L = [ p w − p x − p y − p z p x p w − p z p y p y p z p w − p x p z − p y p x p w ] = p w I + [ 0 − p v T p v [ p v ] × ] \begin{aligned} [\boldsymbol{p}]_{L} &=\left[\begin{array}{cccc} p_{w} & -p_{x} & -p_{y} & -p_{z} \\ p_{x} & p_{w} & -p_{z} & p_{y} \\ p_{y} & p_{z} & p_{w} & -p_{x} \\ p_{z} & -p_{y} & p_{x} & p_{w} \end{array}\right] \\ &=p_{w} \boldsymbol{I}+\left[\begin{array}{cc} 0 & -\boldsymbol{p}_{v}^{\mathrm{T}} \\ \boldsymbol{p}_{v} & {\left[\boldsymbol{p}_{v}\right]_{\times}} \end{array}\right] \end{aligned}\\ [p]L= pwpxpypzpxpwpzpypypzpwpxpzpypxpw =pwI+[0pvpvT[pv]×]
其中 [ ⋅ ] × [\cdot]_{\times} []×表示向量的反对称矩阵。

四元数乘法也可以展开为
p ⊗ q = [ q ] R p \boldsymbol{p} \otimes \boldsymbol{q}=[\boldsymbol{q}]_{R} \boldsymbol{p}\\ pq=[q]Rp
其中
[ q ] R = [ q w − q x − q y − q z q x q w q z − q y q y − q z q w q x q z q y − q x q w ] = q w I + [ 0 − q v T q v − [ q v ] × ] \begin{aligned} [\boldsymbol{q}]_{R} &=\left[\begin{array}{cccc} q_{w} & -q_{x} & -q_{y} & -q_{z} \\ q_{x} & q_{w} & q_{z} & -q_{y} \\ q_{y} & -q_{z} & q_{w} & q_{x} \\ q_{z} & q_{y} & -q_{x} & q_{w} \end{array}\right] \\ &=q_{w} \boldsymbol{I}+\left[\begin{array}{cc} 0 & -\boldsymbol{q}_{v}^{\mathrm{T}} \\ \boldsymbol{q}_{v} & -\left[\boldsymbol{q}_{v}\right]_{\times} \end{array}\right] \end{aligned}\\ [q]R= qwqxqyqzqxqwqzqyqyqzqwqxqzqyqxqw =qwI+[0qvqvT[qv]×]
因此可以得到
( q ⊗ x ) ⊗ p = [ p ] R [ q ] L x q ⊗ ( x ⊗ p ) = [ q ] L [ p ] R x \begin{array}{l} (\mathbf{q} \otimes \mathbf{x}) \otimes \mathbf{p}=[\mathbf{p}]_{R}[\mathbf{q}]_{L} \mathbf{x} \\ \mathbf{q} \otimes(\mathbf{x} \otimes \mathbf{p})=[\mathbf{q}]_{L}[\mathbf{p}]_{R} \mathbf{x} \end{array}\\ (qx)p=[p]R[q]Lxq(xp)=[q]L[p]Rx
这是两个很重要的性质,后面的推导中会多次用到。

5) 四元数的微分方程

r w \boldsymbol{r}^{w} rw r b \boldsymbol{r}^{b} rb两个矢量之间可以用四元数转换如下(这是转换的定义)
r w = q w b ⊗ r b ⊗ q w b ∗ \boldsymbol{r}^{w}=\boldsymbol{q}_{w b} \otimes \boldsymbol{r}^{b} \otimes \boldsymbol{q}_{w b}^{*}\\ rw=qwbrbqwb
re等式两边同时右乘 q w b \boldsymbol{q}_{w b} qwb ,可得
r w ⊗ q w b = q w b ⊗ r b \boldsymbol{r}^{w} \otimes \boldsymbol{q}_{w b}=\boldsymbol{q}_{w b} \otimes \boldsymbol{r}^{b}\\ rwqwb=qwbrb
上式两边同时求微分,可得
r ˙ w ⊗ q w b + r w ⊗ q ˙ w b = q ˙ w b ⊗ r b + q w b ⊗ r ˙ b \begin{aligned} \dot{\boldsymbol{r}}^{w} \otimes \boldsymbol{q}_{w b}+\boldsymbol{r}^{w} & \otimes \dot{\boldsymbol{q}}_{w b} =\dot{\boldsymbol{q}}_{w b} \otimes \boldsymbol{r}^{b}+\boldsymbol{q}_{w b} \otimes \dot{\boldsymbol{r}}^{b} \end{aligned}\\ r˙wqwb+rwq˙wb=q˙wbrb+qwbr˙b
由于(其中 × \times ×代表向量叉乘 , ⊗ \otimes 代表两个四元数相乘)
r ˙ b = − ω w b b × r b = − ω w b b ⊗ r b r ˙ w = 0 \begin{array}{l} \dot{\boldsymbol{r}}^{b}=-\boldsymbol{\omega}_{w b}^{b} \times \boldsymbol{r}^{b}=-\boldsymbol{\omega}_{w b}^{b} \otimes \boldsymbol{r}^{b} \\ \dot{\boldsymbol{r}}^{w}=\mathbf{0} \end{array}\\ r˙b=ωwbb×rb=ωwbbrbr˙w=0
则有
r w ⊗ q ˙ w b = ( q w b ⊗ r b ⊗ q w b ∗ ) ⊗ q ˙ w b = q ˙ w b ⊗ r b − q w b ⊗ ω w b b ⊗ r b \begin{aligned} & \boldsymbol{r}^{w} \otimes \dot{\boldsymbol{q}}_{w b} \\ =&\left(\boldsymbol{q}_{w b} \otimes \boldsymbol{r}^{b} \otimes \boldsymbol{q}_{w b}^{*}\right) \otimes \dot{\boldsymbol{q}}_{w b} \\ =& \dot{\boldsymbol{q}}_{w b} \otimes \boldsymbol{r}^{b}-\boldsymbol{q}_{w b} \otimes \boldsymbol{\omega}_{w b}^{b} \otimes \boldsymbol{r}^{b} \end{aligned}\\ ==rwq˙wb(qwbrbqwb)q˙wbq˙wbrbqwbωwbbrb
等式两边同时左乘 q w b ∗ \boldsymbol{q}_{w b}^{*} qwb ,可得
r b ⊗ q w b ∗ ⊗ q ˙ w b = q w b ∗ ⊗ q ˙ w b ⊗ r b − ω w b b ⊗ r b \begin{aligned} \boldsymbol{r}^{b} \otimes \boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b} =\boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b} \otimes \boldsymbol{r}^{b}-\boldsymbol{\omega}_{w b}^{b} \otimes \boldsymbol{r}^{b} \end{aligned}\\ rbqwbq˙wb=qwbq˙wbrbωwbbrb
移项可得
ω w b b ⊗ r b = ( q w b ∗ ⊗ q ˙ w b ) ⊗ r b − r b ⊗ ( q w b ∗ ⊗ q ˙ w b ) \boldsymbol{\omega}_{w b}^{b} \otimes \boldsymbol{r}^{b}=\left(\boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b}\right) \otimes \boldsymbol{r}^{b}-\boldsymbol{r}^{b} \otimes\left(\boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b}\right)\\ ωwbbrb=(qwbq˙wb)rbrb(qwbq˙wb)
利用前面四元数相乘展开成矩阵与向量相乘的公式,将上式展开,可得
[ 0 0 1 × 3 0 3 × 1 [ ω w b b ] × ] [ 0 r b ] = [ 0 0 1 × 3 0 3 × 1 2 [ ( q w b ∗ ⊗ q ˙ w b ) v ] × ] [ 0 r b ] \left[\begin{array}{cc} 0 & \mathbf{0}_{1 \times 3} \\ \mathbf{0}_{3 \times 1} & {\left[\boldsymbol{\omega}_{w b}^{b}\right]_{\times}} \end{array}\right]\left[\begin{array}{l} 0 \\ \boldsymbol{r}^{b} \end{array}\right]=\left[\begin{array}{cc} 0 & \mathbf{0}_{1 \times 3} \\ \mathbf{0}_{3 \times 1} & 2\left[\left(\boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b}\right)_{v}\right]_{\times} \end{array}\right]\left[\begin{array}{c} 0 \\ \boldsymbol{r}^{b} \end{array}\right]\\ [003×101×3[ωwbb]×][0rb]=[003×101×32[(qwbq˙wb)v]×][0rb]
因此有
( q w b ∗ ⊗ q ˙ w b ) v = 1 2 ω w b b \left(\boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b}\right)_{v}=\frac{1}{2} \boldsymbol{\omega}_{w b}^{b}\\ (qwbq˙wb)v=21ωwbb
以上只是把虚部求解出来了,实部还得搞一搞,如下

根据四元数与旋转矢量的关系,有
q w b ∗ = [ cos ⁡ ϕ 2 − u sin ⁡ ϕ 2 ] \boldsymbol{q}_{w b}^{*}=\left[\begin{array}{c} \cos \frac{\phi}{2} \\ -\boldsymbol{u} \sin \frac{\phi}{2} \end{array}\right]\\ qwb=[cos2ϕusin2ϕ]

q ˙ w b = [ − ϕ ˙ 2 sin ⁡ ϕ 2 u ˙ sin ⁡ ϕ 2 + u ϕ 2 cos ⁡ ϕ 2 ] \dot{\boldsymbol{q}}_{w b}=\left[\begin{array}{c} -\frac{\dot{\phi}}{2} \sin \frac{\phi}{2} \\ \dot{\boldsymbol{u}} \sin \frac{\phi}{2}+\boldsymbol{u} \frac{\phi}{2} \cos \frac{\phi}{2} \end{array}\right]\\ q˙wb=[2ϕ˙sin2ϕu˙sin2ϕ+u2ϕcos2ϕ]

因此有
q w b ∗ ⊗ q ˙ w b = [ cos ⁡ ϕ 2 − u sin ⁡ ϕ 2 ] ⊗ [ − ϕ ˙ 2 sin ⁡ ϕ 2 u ˙ sin ⁡ ϕ 2 + u ϕ 2 cos ⁡ ϕ 2 ] = [ − ϕ ˙ 2 sin ⁡ ϕ 2 cos ⁡ ϕ 2 + ( u sin ⁡ ϕ 2 ) T ( u ˙ sin ⁡ ϕ 2 + u Φ ˙ 2 cos ⁡ ϕ 2 ) cos ⁡ ϕ ˙ 2 ( u ˙ sin ⁡ ϕ 2 + u ϕ ˙ 2 cos ⁡ ϕ 2 ) + u sin ⁡ ϕ 2 ⋅ ϕ ˙ 2 sin ⁡ ϕ 2 − ( u sin ⁡ ϕ 2 ) × ( u ˙ sin ⁡ ϕ 2 + u ϕ ˙ 2 cos ⁡ ϕ 2 ) ] = [ 0 u cos ⁡ ϕ 2 sin ⁡ ϕ 2 + u ϕ ˙ 2 − u sin ⁡ ϕ 2 × u ˙ sin ⁡ ϕ 2 ] \begin{aligned} \boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b} &=\left[\begin{array}{c} \cos \frac{\phi}{2} \\ -\boldsymbol{u} \sin \frac{\phi}{2} \end{array}\right] \otimes\left[\begin{array}{c} -\frac{\dot{\phi}}{2} \sin \frac{\phi}{2} \\ \dot{\boldsymbol{u}} \sin \frac{\phi}{2}+\boldsymbol{u} \frac{\phi}{2} \cos \frac{\phi}{2} \end{array}\right] \\ &=\left[\begin{array}{c} -\frac{\dot{\phi}}{2} \sin \frac{\phi}{2} \cos \frac{\phi}{2}+\left(\boldsymbol{u} \sin \frac{\phi}{2}\right)^{\mathrm{T}}\left(\dot{\boldsymbol{u}} \sin \frac{\phi}{2}+\boldsymbol{u} \frac{\dot{\Phi}}{2} \cos \frac{\phi}{2}\right) \\ \cos \frac{\dot{\phi}}{2}\left(\dot{\boldsymbol{u}} \sin \frac{\phi}{2}+\boldsymbol{u} \frac{\dot{\phi}}{2} \cos \frac{\phi}{2}\right)+\boldsymbol{u} \sin \frac{\phi}{2} \cdot \frac{\dot{\phi}}{2} \sin \frac{\phi}{2}-\left(\boldsymbol{u} \sin \frac{\phi}{2}\right) \times\left(\dot{\boldsymbol{u}} \sin \frac{\phi}{2}+\boldsymbol{u} \frac{\dot{\phi}}{2} \cos \frac{\phi}{2}\right) \end{array}\right] \\ &=\left[\begin{array}{c} 0 \\ \boldsymbol{u} \cos \frac{\phi}{2} \sin \frac{\phi}{2}+\boldsymbol{u} \frac{\dot{\phi}}{2}-\boldsymbol{u} \sin \frac{\phi}{2} \times \dot{\boldsymbol{u}} \sin \frac{\phi}{2} \end{array}\right] \end{aligned}\\ qwbq˙wb=[cos2ϕusin2ϕ][2ϕ˙sin2ϕu˙sin2ϕ+u2ϕcos2ϕ]= 2ϕ˙sin2ϕcos2ϕ+(usin2ϕ)T(u˙sin2ϕ+u2Φ˙cos2ϕ)cos2ϕ˙(u˙sin2ϕ+u2ϕ˙cos2ϕ)+usin2ϕ2ϕ˙sin2ϕ(usin2ϕ)×(u˙sin2ϕ+u2ϕ˙cos2ϕ) =[0ucos2ϕsin2ϕ+u2ϕ˙usin2ϕ×u˙sin2ϕ]
可以看出实部为0。

那么最终就可以得到
q w b ∗ ⊗ q ˙ w b = 1 2 [ 0 ω w b b ] \boldsymbol{q}_{w b}^{*} \otimes \dot{\boldsymbol{q}}_{w b}=\frac{1}{2}\left[\begin{array}{c} 0 \\ \boldsymbol{\omega}_{w b}^{b} \end{array}\right]\\ qwbq˙wb=21[0ωwbb]

q ˙ w b = q w b ⊗ 1 2 [ 0 ω w b b ] \dot{\boldsymbol{q}}_{w b}=\boldsymbol{q}_{w b} \otimes \frac{1}{2}\left[\begin{array}{c} 0 \\ \boldsymbol{\omega}_{w b}^{b} \end{array}\right]\\ q˙wb=qwb21[0ωwbb]

1.3 旋转向量

旋转向量,从物理意义上比较好理解,借用欧拉角的定义,它表示物体绕坐标轴分别按三个欧拉角旋转三次,就可以得到它现在所处的姿态。而旋转向量的定义是,物体绕空间某一个轴旋转一次,就可以达到现在的姿态。二者的区别在于,欧拉角的旋转是绕xyz这样的直角坐标轴的,而旋转向量所绕的轴可能朝向空间任意一个方向,这个轴取决于载体的姿态。

等效旋转矢量可以用向量 ϕ \boldsymbol{\phi} ϕ ,并用 单位向量 u \boldsymbol{u} u表示它的朝向, ϕ \phi ϕ 表示它的大小,因此有
ϕ = ϕ u \boldsymbol{\phi} = \phi \boldsymbol{u}\\ ϕ=ϕu
等效旋转矢量的指数形式,是推导中重要的推导过程,因此先在这里给出
exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ϕ u ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ u ∧ ) n \exp \left(\boldsymbol{\phi}^{\wedge}\right)=\exp \left(\phi \boldsymbol{u}^{\wedge}\right)=\sum_{n=0}^{\infty} \frac{1}{n !}\left(\phi \boldsymbol{u}^{\wedge}\right)^{n}\\ exp(ϕ)=exp(ϕu)=n=0n!1(ϕu)n
由于带着无穷项,因此需要化简才能用。由于反对称矩阵具有如下性质
( ϕ ∧ ) i = { ( − 1 ) ( i − 1 ) / 2 ϕ i − 1 ( ϕ ∧ ) i = 1 , 3 , 5 , ⋯ ( − 1 ) ( i − 2 ) / 2 ϕ i − 2 ( ϕ ∧ ) 2 i = 2 , 4 , 6 , ⋯ \left(\boldsymbol{\phi}^{\wedge}\right)^{i}=\left\{\begin{array}{ll} (-1)^{(i-1) / 2} \phi^{i-1}\left(\boldsymbol{\phi}^{\wedge}\right) & i=1,3,5, \cdots \\ (-1)^{(i-2) / 2} \phi^{i-2}\left(\boldsymbol{\phi}^{\wedge}\right)^{2} & i=2,4,6, \cdots \end{array}\right.\\ (ϕ)i={(1)(i1)/2ϕi1(ϕ)(1)(i2)/2ϕi2(ϕ)2i=1,3,5,i=2,4,6,
因此,指数形式可以化简为
exp ⁡ ( ϕ ∧ ) = I + ϕ ( u ∧ ) + 1 2 ! ϕ 2 ( u ∧ ) 2 + 1 3 ! ϕ 3 ( u ∧ ) 3 + 1 4 ! ϕ 4 ( u ∧ ) 4 + ⋯ = I + ϕ ( u ∧ ) + 1 2 ! ϕ 2 ( u ∧ ) 2 − 1 3 ! ϕ 3 ( u ∧ ) − 1 4 ! ϕ 4 ( u ∧ ) 2 + ⋯ = I + ( u ∧ ) 2 + ( ϕ − 1 3 ! ϕ 3 + 1 5 ! ϕ 5 − ⋯   ) ⏟ sin ⁡ ϕ ( u ∧ ) − ( 1 − 1 2 ! ϕ 2 + 1 4 ! ϕ 4 − ⋯   ) ⏟ cos ⁡ ϕ ( u ∧ ) 2 = I + sin ⁡ ϕ ( u ∧ ) + ( 1 − cos ⁡ ϕ ) ( u ∧ ) 2 = I + sin ⁡ ϕ ϕ ( ϕ ∧ ) + ( 1 − cos ⁡ ϕ ) ϕ 2 ( ϕ ∧ ) 2 \begin{aligned} \exp \left(\boldsymbol{\phi}^{\wedge}\right) &=I+\phi\left(\boldsymbol{u}^{\wedge}\right)+\frac{1}{2 !} \phi^{2}\left(\boldsymbol{u}^{\wedge}\right)^{2}+\frac{1}{3 !} \phi^{3}\left(\boldsymbol{u}^{\wedge}\right)^{3}+\frac{1}{4 !} \phi^{4}\left(\boldsymbol{u}^{\wedge}\right)^{4}+\cdots \\ &=I+\phi\left(\boldsymbol{u}^{\wedge}\right)+\frac{1}{2 !} \phi^{2}\left(\boldsymbol{u}^{\wedge}\right)^{2}-\frac{1}{3 !} \phi^{3}\left(\boldsymbol{u}^{\wedge}\right)-\frac{1}{4 !} \phi^{4}\left(\boldsymbol{u}^{\wedge}\right)^{2}+\cdots \\ &=I+\left(\boldsymbol{u}^{\wedge}\right)^{2}+\underbrace{\left(\phi-\frac{1}{3 !} \phi^{3}+\frac{1}{5 !} \phi^{5}-\cdots\right)}_{\sin \phi}\left(\boldsymbol{u}^{\wedge}\right)-\underbrace{\left(1-\frac{1}{2 !} \phi^{2}+\frac{1}{4 !} \phi^{4}-\cdots\right)}_{\cos \phi}\left(\boldsymbol{u}^{\wedge}\right)^{2} \\ &=I+\sin \phi\left(\boldsymbol{u}^{\wedge}\right)+(1-\cos \phi)\left(\boldsymbol{u}^{\wedge}\right)^{2} \\ &=I+\frac{\sin \phi}{\phi}\left(\boldsymbol{\phi}^{\wedge}\right)+\frac{(1-\cos \phi)}{\phi^{2}}\left(\boldsymbol{\phi}^{\wedge}\right)^{2} \end{aligned}\\ exp(ϕ)=I+ϕ(u)+2!1ϕ2(u)2+3!1ϕ3(u)3+4!1ϕ4(u)4+=I+ϕ(u)+2!1ϕ2(u)23!1ϕ3(u)4!1ϕ4(u)2+=I+(u)2+sinϕ (ϕ3!1ϕ3+5!1ϕ5)(u)cosϕ (12!1ϕ2+4!1ϕ4)(u)2=I+sinϕ(u)+(1cosϕ)(u)2=I+ϕsinϕ(ϕ)+ϕ2(1cosϕ)(ϕ)2
最后一项是罗德里格斯公式。

1)旋转向量微分方程

旋转向量微分方程的推导就显得更加复杂,这里就借用严恭敏老师《惯性导航与组合导航算法》中的一个中间结论吧,直接给出旋转矢量微分方程的完整形式
ϕ ˙ = ω w b b + 1 2 ϕ × ω w b b + 1 ϕ 2 ( 1 − ϕ 2 cot ⁡ ϕ 2 ) ( ϕ × ) 2 ω w b b \dot{\boldsymbol{\phi}}=\boldsymbol{\omega}_{w b}^{b}+\frac{1}{2} \boldsymbol{\phi} \times \boldsymbol{\omega}_{w b}^{b}+\frac{1}{\phi^{2}}\left(1-\frac{\phi}{2} \cot \frac{\phi}{2}\right)(\boldsymbol{\phi} \times)^{2} \boldsymbol{\omega}_{w b}^{b}\\ ϕ˙=ωwbb+21ϕ×ωwbb+ϕ21(12ϕcot2ϕ)(ϕ×)2ωwbb
如果你愿意把它泰勒展开,那么去除高阶项会得到如下简化形式
ϕ ˙ = ω w b b + 1 2 ϕ × ω w b b \dot{\boldsymbol{\phi}}=\boldsymbol{\omega}_{w b}^{b}+\frac{1}{2} \boldsymbol{\phi} \times \boldsymbol{\omega}_{w b}^{b}\\ ϕ˙=ωwbb+21ϕ×ωwbb
这就是前面看到的结果啦。

1.4 各种表示方式之间的转换

既然各种方式之间是等价的,且实际使用中,各种形式都有可能出现,那么理清它们之间的转换关系就是必要的这里就只能给出结论。

1)欧拉角与旋转矩阵

按照机器人前(x)-左(y)-上(z)的坐标系定义,并令横滚角为 α \mathbf{\alpha} α 、俯仰角为 β \mathbf{\beta} β 、航向角为 γ \mathbf{\gamma} γ ,假设旋转矩阵是按照z-y-x的顺序旋转得来,那么旋转矩阵可以表示为
R w b = ( R x ( α ) R y ( − β ) R z ( γ ) ) T \boldsymbol{R}_{w b}=\left(\boldsymbol{R}_{x}(\alpha) \boldsymbol{R}_{y}(-\beta) \boldsymbol{R}_{z}(\gamma)\right)^{T}\\ Rwb=(Rx(α)Ry(β)Rz(γ))T
其中
R x ( α ) = [ 1 0 0 0 cos ⁡ ( α ) sin ⁡ ( α ) 0 − sin ⁡ ( α ) cos ⁡ ( α ) ] \boldsymbol{R}_{x}(\alpha)=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos (\alpha) & \sin (\alpha) \\ 0 & -\sin (\alpha) & \cos (\alpha) \end{array}\right] \\ Rx(α)= 1000cos(α)sin(α)0sin(α)cos(α)
R y ( − β ) = [ cos ⁡ ( β ) 0 sin ⁡ ( β ) 0 1 0 − sin ⁡ ( β ) 0 cos ⁡ ( β ) ] \boldsymbol{R}_{y}(-\beta)=\left[\begin{array}{ccc} \cos (\beta) & 0 & \sin (\beta) \\ 0 & 1 & 0 \\ -\sin (\beta) & 0 & \cos (\beta) \end{array}\right] \\ Ry(β)= cos(β)0sin(β)010sin(β)0cos(β)
R z ( γ ) = [ cos ⁡ ( γ ) sin ⁡ ( γ ) 0 − sin ⁡ ( γ ) cos ⁡ ( γ ) 0 0 0 1 ] \quad \boldsymbol{R}_{z}(\gamma)=\left[\begin{array}{ccc} \cos (\gamma) & \sin (\gamma) & 0 \\ -\sin (\gamma) & \cos (\gamma) & 0 \\ 0 & 0 & 1 \end{array}\right]\\ Rz(γ)= cos(γ)sin(γ)0sin(γ)cos(γ)0001
也可以直接写出结果形式
R w b = [ c β c γ − s α s β c γ − c α s γ s α s γ − c α s β c γ c β s γ c α c γ − s α s β s γ − c α s β s γ − s α c γ s β s α c β coc ⁡ β ] \boldsymbol{R}_{w b}=\left[\begin{array}{ccc} c \beta c \gamma & -s \alpha s \beta c \gamma-c \alpha s \gamma & s \alpha s \gamma-c \alpha s \beta c \gamma \\ c \beta s \gamma & c \alpha c \gamma-s \alpha s \beta s \gamma & -c \alpha s \beta s \gamma-s \alpha c \gamma \\ s \beta & s \alpha c \beta & \operatorname{coc} \beta \end{array}\right]\\ Rwb= cβcγcβsγsβsαsβcγcαsγcαcγsαsβsγsαcβsαsγcαsβcγcαsβsγsαcγcocβ
其中 s ∙ = sin ⁡ ( ∙ ) c ∙ = cos ⁡ ( ∙ ) s \bullet=\sin (\bullet) \quad c \bullet=\cos (\bullet) s=sin()c=cos()

因此,观察该矩阵,可以得出由旋转矩阵得到欧拉角的方式
α = arctan ⁡ 2 ( R w b ( 3 , 2 ) , R w b ( 3 , 3 ) ) β = arcsin ⁡ ( R w b ( 3 , 1 ) ) γ = arctan ⁡ 2 ( R w b ( 2 , 1 ) , R w b ( 1 , 1 ) ) \begin{array}{l} \alpha=\arctan 2\left(\boldsymbol{R}_{w b}(3,2), \boldsymbol{R}_{w b}(3,3)\right) \\ \beta=\arcsin \left(\boldsymbol{R}_{w b}(3,1)\right) \\ \gamma=\arctan 2\left(\boldsymbol{R}_{w b}(2,1), \boldsymbol{R}_{w b}(1,1)\right) \end{array}\\ α=arctan2(Rwb(3,2),Rwb(3,3))β=arcsin(Rwb(3,1))γ=arctan2(Rwb(2,1),Rwb(1,1))

2) 四元数与旋转矩阵

由四元数转旋转矩阵的公式为
R u b = [ q u 2 + q x 2 − q y 2 − q z 2 2 ( q x q y − q w q z ) 2 ( q x q z + q w q y ) 2 ( q x q y + q w q z ) q w 2 − q x 2 + q y 2 − q z 2 2 ( q y q z − q w q x ) 2 ( q x q z − q w q y ) 2 ( q y q z + q w q x ) q w 2 − q x 2 − q y 2 + q z 2 ] \boldsymbol{R}_{u b}=\left[\begin{array}{ccc} q_{u}^{2}+q_{x}^{2}-q_{y}^{2}-q_{z}^{2} & 2\left(q_{x} q_{y}-q_{w} q_{z}\right) & 2\left(q_{x} q_{z}+q_{w} q_{y}\right) \\ 2\left(q_{x} q_{y}+q_{w} q_{z}\right) & q_{w}^{2}-q_{x}^{2}+q_{y}^{2}-q_{z}^{2} & 2\left(q_{y} q_{z}-q_{w} q_{x}\right) \\ 2\left(q_{x} q_{z}-q_{w} q_{y}\right) & 2\left(q_{y} q_{z}+q_{w} q_{x}\right) & q_{w}^{2}-q_{x}^{2}-q_{y}^{2}+q_{z}^{2} \end{array}\right]\\ Rub= qu2+qx2qy2qz22(qxqy+qwqz)2(qxqzqwqy)2(qxqyqwqz)qw2qx2+qy2qz22(qyqz+qwqx)2(qxqz+qwqy)2(qyqzqwqx)qw2qx2qy2+qz2
由旋转矩阵转四元数的公式为
q u = 1 + R w b ( 1 , 1 ) + R w b ( 2.2 ) + R w b ( 3.3 ) 2 q x = R w b ( 3 , 2 ) − R w b ( 2 , 3 ) 4 q w q y = R u b ( 1 , 3 ) − R w b ( 3 , 1 ) 4 q w q z = R w b ( 2 , 1 ) − R w b ( 1 , 2 ) 4 q w \begin{array}{l} q_{u}=\frac{\sqrt{1+R_{w b}(1,1)+R_{w b}(2.2)+R_{w b}(3.3)}}{2} \\ q_{x}=\frac{R_{w b}(3,2)-R_{w b}(2,3)}{4 q_{w}} \\ q_{y}=\frac{R_{u b}(1,3)-R_{w b}(3,1)}{4 q_{w}} \\ q_{z}=\frac{R_{w b}(2,1)-R_{w b}(1,2)}{4 q_{w}} \end{array}\\ qu=21+Rwb(1,1)+Rwb(2.2)+Rwb(3.3) qx=4qwRwb(3,2)Rwb(2,3)qy=4qwRub(1,3)Rwb(3,1)qz=4qwRwb(2,1)Rwb(1,2)
不过需要注意的是,此处需要满足
q w ≠ 0 , 1 + R w b ( 1 , 1 ) + R w b ( 2 , 2 ) + R w b ( 3 , 3 ) > 0 q_{w} \neq 0,1+R_{w b}(1,1)+R_{w b}(2,2)+R_{w b}(3,3)>0\\ qw=0,1+Rwb(1,1)+Rwb(2,2)+Rwb(3,3)>0

3) 旋转矩阵与旋转向量

由旋转向量得到旋转矩阵的公式为
R w b = I + sin ⁡ ϕ ϕ ( ϕ ∧ ) + 1 − cos ⁡ ϕ ϕ 2 ( ϕ ∧ ) 2 \boldsymbol{R}_{w b}=I+\frac{\sin \phi}{\phi}\left(\boldsymbol{\phi}^{\wedge}\right)+\frac{1-\cos \phi}{\phi^{2}}\left(\boldsymbol{\phi}^{\wedge}\right)^{2}\\ Rwb=I+ϕsinϕ(ϕ)+ϕ21cosϕ(ϕ)2
可以发现,这跟旋转向量的指数形式是一样的,这就是传说中的罗德里格斯公式。

由旋转矩阵得到旋转向量的公式为
ϕ = arccos ⁡ tr ⁡ ( R w b ) − 1 2 u = ( R w b − ( R w b ) T ) ∨ 2 sin ⁡ ϕ \begin{array}{l} \phi=\arccos \frac{\operatorname{tr}\left(\boldsymbol{R}_{w b}\right)-1}{2} \\ \boldsymbol{u}=\frac{\left(\boldsymbol{R}_{w b}-\left(\boldsymbol{R}_{w b}\right)^{T}\right)^{\vee}}{2 \sin \phi} \end{array}\\ ϕ=arccos2tr(Rwb)1u=2sinϕ(Rwb(Rwb)T)

4) 四元数与旋转向量

由旋转向量计算四元数的公式为
q = cos ⁡ ϕ 2 + sin ⁡ ϕ 2 ϕ ϕ \boldsymbol{q}=\cos \frac{\phi}{2}+\frac{\sin \frac{\phi}{2}}{\phi} \boldsymbol{\phi}\\ q=cos2ϕ+ϕsin2ϕϕ
由旋转向量计算四元数的公式为
ϕ = 2 arctan ⁡ ( ∥ q v ∥ , q w ) u = q v / ∥ q v ∥ \begin{array}{c} \phi=2 \arctan \left(\left\|\boldsymbol{q}_{v}\right\|, q_{w}\right) \\ \boldsymbol{u}=\boldsymbol{q}_{v} /\left\|\boldsymbol{q}_{v}\right\| \end{array}\\ ϕ=2arctan(qv,qw)u=qv/qv
这两个公式里,有一个很有意思的问题,就是第一个公式里面有两处除以2,第二个公式里有一处乘以2,这个2怎么来的呢?

我们知道,在旋转矩阵表示法中,一个向量在两个坐标系之间转换的公式为
a ′ = R a \boldsymbol{a}^{\prime}=\boldsymbol{R} \boldsymbol{a}\\ a=Ra
而四元数则不这么简单,它为
a ′ = q ⊗ a ⊗ q ∗ \boldsymbol{a}^{\prime}=\boldsymbol{q} \otimes \boldsymbol{a} \otimes \boldsymbol{q}^{*}\\ a=qaq
这个也可以从一个比较奇特的角度来解释,大家看一下,一个四元数和一个矢量相乘(其实乘的是矢量对应的纯虚四元数,即实部为0,虚步三个值对应这个三维矢量),得到的是什么?已经忘记的可以往上翻去看一下四元数乘法。结论是乘出来的一个东西,实部不为0,这就尴尬了,一个三维矢量,乘出来变成了一个四维的东西(一个实部和三个虚部),为了解决这个问题,就写成了上面的形式,左乘一个,右乘一个,实际就是对应两次旋转,自然每次就只旋转一半,即每一个四元数对应的角度只是想要的旋转角度的一半,这样改变之后,惊奇地发现,实部永远为0,等于三维矢量先是被第一个四元数给旋转到四维空间,又被第二个四元数给拉回到三维空间了,完美!

原文链接:多传感器融合定位理论基础(五):惯性导航解算

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值