Quaternion kinematics for the error-state Kalman filter 文章理解

1. 四元数的定义和性质

1.1 四元数的定义

Cayley-Dickson construction 给出了一种非常吸引人的四元数定义:如果有两个复数 A = a + b i A=a+bi A=a+bi C = c + d i C=c+di C=c+di,构造一个新的数 Q = A + C j Q=A+Cj Q=A+Cj 并且定义 k ≜ i j k\triangleq ij kij,就产生了一个在四元数空间 H \Bbb{H} H 内的数字:
Q = a + b i + c j + d k ∈ H (1) Q=a+bi+cj+dk \in \Bbb{H} \tag{1} Q=a+bi+cj+dkH(1)
其中 { a , b , c , d } ∈ R \{a,b,c,d\}\in R {a,b,c,d}R { i , j , k } \{ i,j,k \} {i,j,k} 是三个单位虚数,有如下定义:
i 2 = j 2 = k 2 = i j k = − 1 (2a) i^2 = j^2 = k^2 = ijk = -1 \tag{2a} i2=j2=k2=ijk=1(2a)
从中可以推导出:
i j = − j i = k , j k = − k j = i , k i = − i k = j (2b) ij = -ji = k, jk = -kj = i, ki = -ik = j \tag{2b} ij=ji=k,jk=kj=i,ki=ik=j(2b)
从公式(1)可以看出,实数、虚数、复数的概念都嵌入在四元数的定义当中,这意味着,实数、虚数、复数都是一种四元数,如下表示
Q = a ∈ R ⊂ H , Q = i ∈ I ⊂ H , Q = a + b i ∈ Z ⊂ H (3) Q=a \in \Bbb{R} \subset \Bbb{H}, Q=i \in \Bbb{I} \subset \Bbb{H}, Q=a+bi \in \Bbb{Z} \subset \Bbb{H} \tag{3} Q=aRH,Q=iIH,Q=a+biZH(3)
类似的,在四元数空间中也可以定义 H \Bbb{H} H的三维纯虚子空间,将其中的数字称作纯四元数,表示为 H p = I m ( H ) \Bbb{H}_p=\rm Im (\Bbb{H}) Hp=Im(H)
Q = b i + c j + d k ∈ H p ⊂ H (4) Q=bi+cj+dk \in \Bbb{H}_p \subset \Bbb{H} \tag{4} Q=bi+cj+dkHpH(4)
值得注意的是,单位长度的正规复数 z = e i θ \bf z = \it e^{ i \theta} z=eiθ ,通过一个复数乘积 x ′ = z ⋅ x \bf x' = z \sdot x x=zx可以表达二维空间内的旋转,而单位长度四元数,或者说是扩展复数 q = e ( u x i + u y j + u z k ) θ / 2 \bf q = \it e^{(u_xi+u_yj+u_zk)\theta /2} q=e(uxi+uyj+uzk)θ/2,同样可以通过四元数成法 x ′ = q ⊗ x ⊗ q ∗ \bf x' = q \otimes x \otimes q^* x=qxq来表示三维空间内的旋转,在后面章节展示

注意:并不是所有的四元数的表达都是一样的,有一些作者将乘积 b i bi bi 写作 i b ib ib,这会导致他们获得的性质是 k = j i = − i j k=ji=-ij k=ji=ij,以及 i j k = 1 ijk=1 ijk=1,这是一类左手四元数(left-handed quaternion)。有的作者习惯将实部放在虚部的后面,写作 Q = a i + b j + c k + d Q=ai+bj+ck+d Q=ai+bj+ck+d,这个写法对理解上没有实质影响,但是会导致许多问题的答案写法完全不同,后面会在第三章讨论

注意:还有一些额外的规则会使得四元数相关的运算看起来不同,比如我们对于旋转运算的“解释”。我们可以解释成“旋转一个向量”或者“旋转一个矩阵”,这会导致两种不同的写法。同样会在第三章进行讨论

注意:本文使用Hamilton形式,也就是公式(2)中定义的样子

1.1.1 四元数的其他表达形式

四元数实部+虚部的表达形式 { 1 , i , j , k } \{1,i,j,k\} {1,i,j,k}有时候用起来并不是很方便。在满足(2)式运算的条件下,也可以用标量+向量的形式表示:
Q = q w + q x i + q y j + q z k ⇔ Q = q w + q v Q=q_w+q_xi+q_yj+q_zk \xLeftrightarrow{} Q=q_w + \bold{q}_v Q=qw+qxi+qyj+qzk Q=qw+qv
其中 q w q_w qw是实数部分或者叫标量部分, q v = q x i + q y j + q z k = ( q x , q y , q z ) \bold{q}_v=q_xi+q_yj+q_zk=(q_x,q_y,q_z) qv=qxi+qyj+qzk=(qx,qy,qz)是虚数部分或者叫向量部分,也可以用下面这种标量/向量对儿的形式表示:
Q = ⟨ q w , q v ⟩ (6) Q=\lang q_w, \bold{q}_v \rang \tag{6} Q=qw,qv(6)
最常用的一种表示是将四元数写成一个4维向量:
q ≜ [ q w q v ] = [ q w q x q y q z ] (7) \bf q \triangleq \begin{bmatrix} q_w \\ \bold{q}_v \end{bmatrix} = \begin{bmatrix} q_w \\ q_x \\ q_y \\ q_z \end{bmatrix} \tag{7} q[qwqv]=qwqxqyqz(7)
利用上面这种表示方法可以在某些情况对四元数进行矩阵运算。在某些情况下,我们希望“=”有不同的含义,比如在表达实四元数和纯四元数的时候
general : q = q w + q v = [ q w q v ] ∈ H , real : q w = [ q w 0 v ] ∈ R , pure : q v = [ 0 q v ] ∈ H p (8) \text{general}: \bold{q} =q_w+ \bold{q}_v= \begin{bmatrix} q_w \\ \bold{q}_v \end{bmatrix} \in \Bbb{H}, \text{real}: q_w= \begin{bmatrix} q_w \\ \bold{0}_v \end{bmatrix} \in \Bbb{R}, \text{pure}: \bold{q}_v= \begin{bmatrix} 0 \\ \bold{q}_v \end{bmatrix} \in \Bbb{H}_p \tag{8} general:q=qw+qv=[qwqv]H,real:qw=[qw0v]R,pure:qv=[0qv]Hp(8)

1.2 四元数性质

1.2.1 Sum

四元数的和差计算如下:
p ± q = [ p w p v ] ± [ q w q v ] [ p w ± q w p v ± q v ] (9) \bold{p} \pm \bold{q} = \begin{bmatrix} p_w \\ \bold{p}_v \end{bmatrix} \pm \begin{bmatrix} q_w \\ \bold{q}_v \end{bmatrix} \begin{bmatrix} p_w \pm q_w \\ \bold{p}_v \pm \bold{q}_v \tag{9} \end{bmatrix} p±q=[pwpv]±[qwqv][pw±qwpv±qv](9)
四元数的和差计算有交换律和结合律
p + q = q + p (10) \bold{p} + \bold{q} = \bold{q} + \bold{p} \tag{10} p+q=q+p(10)
p + ( q + r ) = ( p + q ) + r (11) \bold{p} + (\bold{q} + \bold{r}) = (\bold{p}+\bold{q})+\bold{r}\tag{11} p+(q+r)=(p+q)+r(11)

1.2.2 乘积

四元数乘积运算用 ⊗ \otimes 表示,利用公式(1)(2),将乘积结果写作向量形式有:
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 p w q y − p x q z + p y q w + p z q x p w q z + p x q y − p y q x + p z q w ] (12) \bold{p} \otimes \bold{q} = \begin{bmatrix} p_wq_w-p_xq_x-p_yq_y-p_zq_z \\ p_wq_x + p_xq_w + p_yq_z-p_zq_y \\ p_wq_y - p_xq_z + p_yq_w + p_zq_x \\ p_wq_z + p_xq_y - p_yq_x + p_zq_w \end{bmatrix} \tag{12} pq=pwqwpxqxpyqypzqzpwqx+pxqw+pyqzpzqypwqypxqz+pyqw+pzqxpwqz+pxqypyqx+pzqw(12)
也可以将乘积结果写作标量向量形式:
p ⊗ q = [ p w q w − p v ⊺ q v p w q v + q w p v + p v × q v ] (13) \bold{p} \otimes \bold{q} = \begin{bmatrix} p_wq_w - \bold{p}^{\intercal}_v \bold{q}_v \\ p_w \bold{q}_v+q_w \bold{p}_v + \bold{p}_v \times \bold{q}_v \end{bmatrix} \tag{13} pq=[pwqwpvqvpwqv+qwpv+pv×qv](13)
上式中的叉积项的存在说明四元数乘法不满足一般意义下的交换律:
p × q ≠ q × p (14) \bold{p} \times \bold{q} \neq \bold{q} \times \bold{p} \tag{14} p×q=q×p(14)
只有当 p v × q v = 0 \bold{p}_v \times \bold{q}_v = 0 pv×qv=0时,才满足交换律,具体来说就是两种情况,一是四元数本身是个实数;二是四元数的向量部分是平行的。
四元数的乘积是具有结合律的
( p ⊗ q ) ⊗ r = p ⊗ ( q ⊗ r ) (15) (\bold{p} \otimes \bold{q}) \otimes \bold{r} = \bold{p} \otimes (\bold{q} \otimes \bold{r}) \tag{15} (pq)r=p(qr)(15)
四元数乘积可以对求和运算保持分配律:
p ⊗ ( q + r ) = p ⊗ q + p ⊗ r ( p + q ) ⊗ r = p ⊗ r + q ⊗ r (16) \bold{p} \otimes (\bold{q} + \bold{r})=\bold{p} \otimes \bold{q} + \bold{p} \otimes \bold{r} \\ (\bold{p}+\bold{q}) \otimes \bold{r} = \bold{p} \otimes \bold{r} + \bold{q} \otimes \bold{r} \tag{16} p(q+r)=pq+pr(p+q)r=pr+qr(16)
两个四元数的乘积是“bi-linear”的,可以表达成矩阵乘积的形式:
q 1 ⊗ q 2 = [ q 1 ] L q 2 q 1 ⊗ q 2 = [ q 2 ] R q 1 (17) \bold{q}_1 \otimes \bold{q}_2 = [\bold{q}_1]_L \bold{q}_2 \\ \bold{q}_1 \otimes \bold{q}_2 = [\bold{q}_2]_R \bold{q}_1 \tag{17} q1q2=[q1]Lq2q1q2=[q2]Rq1(17)
其中 [ q ] L [\bold{q}]_L [q]L [ q ] R [\bold{q}]_R [q]R分别是四元数乘积矩阵的左乘和右乘形式,可以通过公式(12)(17)进行推导
[ q ] L = [ 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 ] 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 ] (18) [\bold{q}]_L= \begin{bmatrix} 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 & -qy & q_x & q_w \end{bmatrix} , [\bold{q}]_R= \begin{bmatrix} 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{bmatrix} \tag{18} [q]L=qwqxqyqzqxqwqzqyqyqzqwqxqzqyqxqw,[q]R=qwqxqyqzqxqwqzqyqyqzqwqxqzqyqxqw(18)
或者根据公式(13)(17)写成更紧凑的形式:
[ q ] L = q w I + [ 0 − q v ⊺ q v [ q v ] × ] , [ q ] R = q w I + [ 0 − q v ⊺ q v − [ q v ] × ] (19) [\bold{q}]_L= q_w \bold{I} + \begin{bmatrix} 0 & - \bold{q}^{\intercal}_v \\ \bold{q}_v & [\bold{q}_v]_{\times} \end{bmatrix}, [\bold{q}]_R=q_w \bold{I} + \begin{bmatrix} 0 & - \bold{q}^{\intercal}_v \\ \bold{q}_v & -[\bold{q}_v]_{\times} \end{bmatrix} \tag{19} [q]L=qwI+[0qvqv[qv]×],[q]R=qwI+[0qvqv[qv]×](19)
这里的skew operator [ ∙ ] × [\bullet]_{\times} []×,表示叉乘矩阵:
[ a ] × ≜ [ 0 − a z a y a z 0 − a x − a y a x 0 ] (20) [\bold{a}]_{\times} \triangleq \begin{bmatrix} 0 & -a_z & a_y \\ a_z & 0 & -a_x \\ -a_y & a_x & 0 \end{bmatrix} \tag{20} [a]×0azayaz0axayax0(20)
这个skew operator是反对称的,即 [ a ] × ⊺ = − [ a ] × [\bold{a}]^{\intercal}_{\times} = -[\bold{a}]_{\times} [a]×=[a]×,和叉乘运算的关系是:
[ a ] × b = a × b , ∀ a , b ∈ R 3 (21) [\bold{a}]_{\times} \bold{b} = \bold{a} \times \bold{b}, \forall \bold{a}, \bold{b} \in \Bbb{R}^3 \tag{21} [a]×b=a×b,a,bR3(21)
最后,由于
( q ⊗ x ) ⊗ p = [ p ] R [ q ] L x   and   q ⊗ ( x ⊗ p ) = [ q ] L [ p ] R x (22) (\bold{q} \otimes \bold{x}) \otimes \bold{p} = [\bold{p}]_R [\bold{q}]_L \bold{x} \ \text{ and } \ \bold{q} \otimes (\bold{x} \otimes \bold{p})=[\bold{q}]_L [\bold{p}]_R \bold{x} \tag{22} (qx)p=[p]R[q]Lx  and  q(xp)=[q]L[p]Rx(22)
可以得到等式:
[ p ] R [ q ] L = [ q ] L [ p ] R (23) [\bold{p}]_R [\bold{q}]_L = [\bold{q}]_L [\bold{p}]_R \tag{23} [p]R[q]L=[q]L[p]R(23)
这说明四元数乘积矩阵可以左右交换,这个矩阵的其他性质将在2.8节讲解。
四元数的乘积操作 ⊗ \otimes 来自于一个非交换群。这个群的单位元素, q 1 = 1 \bold{q}_1 = 1 q1=1和逆元素 q − 1 \bold{q}^{-1} q1,如下所示。

1.2.3 单位元

和乘积运算相关的单位元,满足性质 q 1 ⊗ q = q ⊗ q 1 = q \bold{q_1} \otimes \bold{q} = \bold{q} \otimes \bold{q_1} = \bold{q} q1q=qq1=q。四元数单位元就是将‘1’表达成四元数的形式
q 1 = 1 = [ 1 0 v ] \bold{q_1} = 1 = \begin{bmatrix} 1 \\ \bold{0}_v \end{bmatrix} q1=1=[10v]

1.2.4 共轭

四元数的共轭定义如下:
q ∗ ≜ q w − q v = [ q w − q v ] (24) \bold{q}^* \triangleq q_w - \bold{q}_v = \begin{bmatrix} q_w \\ -\bold{q}_v \end{bmatrix} \tag{24} qqwqv=[qwqv](24)
共轭满足如下性质:
q ⊗ q ∗ = q ∗ ⊗ q = q w 2 + q x 2 + q y 2 + q z 2 = [ q w 2 + q x 2 + q y 2 + q z 2 0 v ] (25) \bold{q} \otimes \bold{q}^*=\bold{q}^* \otimes \bold{q} = q^2_w+q^2_x+q_y^2+q_z^2= \begin{bmatrix} q^2_w+q^2_x+q_y^2+q_z^2 \\ \bold{0}_v \end{bmatrix} \tag{25} qq=qq=qw2+qx2+qy2+qz2=[qw2+qx2+qy2+qz20v](25)
并且有:
( p ⊗ q ) ∗ = q ∗ ⊗ p ∗ (26) (\bold{p} \otimes \bold{q})^* = \bold{q}^* \otimes \bold{p}^* \tag{26} (pq)=qp(26)

1.2.5 模(Norm)

四元数的模定义:
∣ ∣ q ∣ ∣ ≜ q ⊗ q ∗ = q ∗ ⊗ q = q w 2 + q x 2 + q y 2 + q z 2 ∈ R (27) ||\bold{q}|| \triangleq \sqrt{\bold{q} \otimes \bold{q}^*} = \sqrt{\bold{q}^* \otimes \bold{q}}=\sqrt{q^2_w+q^2_x+q_y^2+q_z^2} \in \Bbb{R} \tag{27} qqq =qq =qw2+qx2+qy2+qz2 R(27)
模的性质:
∣ ∣ p ⊗ q ∣ ∣ = ∣ ∣ q ⊗ p ∣ ∣ = ∣ ∣ p ∣ ∣ ∣ ∣ q ∣ ∣ (28) ||\bold{p} \otimes \bold{q}||=||\bold{q} \otimes \bold{p}||=||\bold{p}||||\bold{q}|| \tag{28} pq=qp=pq(28)

1.2.6 逆(inverse)

一个四元数的逆 q − 1 \bold{q}^{-1} q1和四元数本身相乘得到identity
q ⊗ q − 1 = q − 1 ⊗ q = q 1 (29) \bold{q} \otimes \bold{q}^{-1} = \bold{q}^{-1} \otimes \bold{q} = \bold{q_1} \tag{29} qq1=q1q=q1(29)
四元数的逆可以通过共轭来计算
q − 1 = q ∗ / ∣ ∣ q ∣ ∣ 2 (30) \bold{q}^{-1} = \bold{q}^* / ||\bold{q}||^2 \tag{30} q1=q/q2(30)

1.2.7 单位或者标准四元数(unit or normalized quaternion)

对于标准四元数, ∣ ∣ q ∣ ∣ = 1 ||\bold{q}||=1 q=1,因此有:
q − 1 = q ∗ (31) \bold{q}^{-1} = \bold{q}^* \tag{31} q1=q(31)
当用标准四元数表示旋转相关含义,或者作为旋转运算符时,上述性质表明,反向旋转可以简单的用一个共轭四元数表示。一个标准四元数总可以写成如下形式:
q = [ cos ⁡ θ u sin ⁡ θ ] (32) \bold{q} = \begin{bmatrix} \cos \theta \\ \bold{u} \sin \theta \end{bmatrix} \tag{32} q=[cosθusinθ](32)
其中, u = u x i + u y j + u z k \bold{u} = u_x i + u_y j + u_z k u=uxi+uyj+uzk ,是一个单位向量 θ \theta θ是一个标量。
从式(28),标准四元数的 ⊗ \otimes 运算构成一个非交换群,在这个群中,四元数的逆和共轭是同一个四元数

1.3 其他属性

1.3.1 四元数换向器(commutator)

四元数换向器定义为 [ p , q ] ≜ p ⊗ q − q ⊗ p [\bold{p}, \bold{q}] \triangleq \bold{p} \otimes \bold{q} - \bold{q} \otimes \bold{p} [p,q]pqqp, 从式(13)可得:
p ⊗ q − q ⊗ p = 2 p v × q v (33) \bold{p} \otimes \bold{q} - \bold{q} \otimes \bold{p}=2\bold{p}_v \times \bold{q}_v \tag{33} pqqp=2pv×qv(33)
可以得到一个结论:
p v ⊗ q v − q v ⊗ p v = 2 p v × q v (34) \bold{p}_v \otimes \bold{q}_v - \bold{q}_v \otimes \bold{p}_v=2 \bold{p}_v \times \bold{q}_v \tag{34} pvqvqvpv=2pv×qv(34)
后面会用到这个结论。

1.3.2 纯四元数的乘积

纯四元数是指没有实部的四元数, Q = q v  or  q = [ 0 , q v ] Q = \bold{q}_v \text{ or } \bold{q}=[0,\bold{q}_v] Q=qv or q=[0,qv]。利用式(13),可得:
p v ⊗ q v = p v ⊺ q v + p v × q v = [ − p v ⊺ q v p v × q v ] (35) \bold{p}_v \otimes \bold{q}_v = \bold{p}_v^{\intercal} \bold{q}_v + \bold{p}_v \times \bold{q}_v = \begin{bmatrix} -\bold{p}_v^{\intercal} \bold{q}_v \\ \bold{p}_v \times \bold{q}_v \end{bmatrix} \tag{35} pvqv=pvqv+pv×qv=[pvqvpv×qv](35)
这意味着:
q v × q v = − q v ⊺ q v = − ∣ ∣ q v ∣ ∣ 2 (36) \bold{q}_v \times \bold{q}_v = -\bold{q}_v^{\intercal} \bold{q}_v = -||\bold{q}_v||^2 \tag{36} qv×qv=qvqv=qv2(36)
对于标准纯四元数 u ∈ H p \bold{u} \in \Bbb{H}_p uHp ∣ ∣ u ∣ ∣ = 1 ||\bold{u}||=1 u=1
u ⊗ u = − 1 (37) \bold{u} \otimes \bold{u} = -1 \tag{37} uu=1(37)
这个和标准的虚部相乘有点像, i i = − 1 i i =-1 ii=1

1.3.3 纯四元数的自然幂natural powers of pure quaternion

定义 q n , n ∈ N \bold{q}^n, n \in \Bbb{N} qn,nN,是 q \bold{q} q 利用 ⊗ \otimes 的n次乘积,如果给定一个纯四元数 v = u θ \bold{v} = \bold{u} \theta v=uθ,其中 θ = ∣ ∣ v ∣ ∣ ∈ R \theta = ||\bold{v}|| \in \Bbb{R} θ=vR u \bold{u} u是一个单位向量,利用公式(36),可以得到如下的循环模式:
v 2 = − θ 2 , v 3 = − u θ 3 , v 4 = θ 4 , v 5 = u θ 5 , v 6 = − θ 6 , … (38) \bold{v}^2=-\theta^2,\bold{v}^3=-\bold{u}\theta^3, \bold{v}^4=\theta^4,\bold{v}^5=\bold{u}\theta^5,\bold{v}^6=-\theta^6, \dotsc \tag{38} v2=θ2,v3=uθ3,v4=θ4,v5=uθ5,v6=θ6,(38)

1.3.4 纯四元数的指数形式

和普通的指数函数差不多,四元数的指数形式,由绝对收敛的序列构成:
e q ≜ ∑ k = 0 ∞ 1 k ! q k ∈ H (39) e^{\bold{q}} \triangleq \displaystyle\sum_{k=0}^{\infty} \frac{1}{k!} \bold{q}^k \in \Bbb{H} \tag{39} eqk=0k!1qkH(39)
可以看出四元数的指数形式定义和常规的指数函数是一致的。
特别的,纯四元数 v = v x i + v y j + v z k \bold{v}=v_x i+v_y j+v_z k v=vxi+vyj+vzk的指数形式:
e v ≜ ∑ k = 0 ∞ 1 k ! v k ∈ H (40) e^{\bold{v}} \triangleq \displaystyle\sum_{k=0}^{\infty} \frac{1}{k!} \bold{v}^k \in \Bbb{H} \tag{40} evk=0k!1vkH(40)
v = u θ \bold{v}=\bold{u}\theta v=uθ, 其中 θ = ∣ ∣ v ∣ ∣ ∈ R \theta = ||\bold{v}|| \in \Bbb{R} θ=vR u \bold{u} u是单位向量,利用公式(38),展开:
e u θ = ( 1 − θ 2 2 ! + θ 4 4 ! + . . . ) + ( u θ − u θ 3 3 ! + u θ 5 5 ! + . . . ) (41) e^{\bold{u} \theta}=\big( 1-\frac{\theta^2}{2!}+ \frac{\theta^4}{4!} + ... \big)+ \big(\bold{u} \theta - \frac{\bold{u} \theta^3}{3!}+\frac{\bold{u} \theta^5}{5!}+... \big) \tag{41} euθ=(12!θ2+4!θ4+...)+(uθ3!uθ3+5!uθ5+...)(41)
可以看出,右侧的两项分别是 cos ⁡ θ  and  sin ⁡ θ \cos \theta \text{ and } \sin \theta cosθ and sinθ。表达成:
e v = e u θ + cos ⁡ θ + u sin ⁡ θ = [ cos ⁡ θ u sin ⁡ θ ] (42) e^{\bold{v}} = e ^{\bold{u} \theta} + \cos \theta + \bold{u} \sin \theta = \begin{bmatrix} \cos \theta \\ \bold{u} \sin \theta \end{bmatrix} \tag{42} ev=euθ+cosθ+usinθ=[cosθusinθ](42)
上式是对欧拉公式 e i θ = cos ⁡ θ + i sin ⁡ θ e^{i \theta} = \cos \theta + i \sin \theta eiθ=cosθ+isinθ的拓展。注意到由于 ∣ ∣ e v ∣ ∣ 2 = cos ⁡ 2 θ + sin ⁡ 2 θ = 1 ||e^{v}||^2=\cos^2 \theta + \sin^2 \theta = 1 ev2=cos2θ+sin2θ=1,因此,纯四元数的指数形式是一个标准四元数,并且有性质
e − v = ( e v ) ∗ (43) e^{-\bold{v}} = (e^{\bold{v}})^* \tag{43} ev=(ev)(43)
对于小角度四元数,为了避免除零问题 u = v / ∣ ∣ v ∣ ∣ \bold{u} = \bold{v} / ||\bold{v}|| u=v/v,可以通过泰勒展开进行截断求解,得到不同精确度的近似
e v ≈ [ 1 − θ 2 / 2 v ( 1 − θ 2 / 6 ) ] ≈ [ 1 v ] → θ → 0 [ 1 0 ] (44) e^{\bold{v}}\approx \begin{bmatrix} 1-\theta^2/2 \\ \bold{v}(1-\theta^2/6) \end{bmatrix} \approx \begin{bmatrix} 1 \\ \bold{v} \end{bmatrix} \xrightarrow[ \theta \rarr 0]{} \begin{bmatrix} 1 \\ \bold{0} \end{bmatrix} \tag{44} ev[1θ2/2v(1θ2/6)][1v] θ0[10](44)

1.3.5 一般化的四元数指数形式

由于四元数乘积的非交换特性,我们无法直接写出 e p + q = e p e q e^{\bold{p}+\bold{q}}=e^{\bold{p}}e^{\bold{q}} ep+q=epeq,但是如果其中一项是标量就可以写出:
e q = e q e + q v = e q w e q v (45) e^{\bold{q}}=e^{q_e+\bold{q}_v}=e^{q_w}e^{\bold{q}_v} \tag{45} eq=eqe+qv=eqweqv(45)
利用公式(42) u θ = q v \bold{u} \theta = \bold{q}_v uθ=qv
e q = e q w [ cos ⁡ ∣ ∣ q v ∣ ∣ q v ∣ ∣ q v ∣ ∣ sin ⁡ ∣ ∣ q v ∣ ∣ ] (46) e^{\bold{q}} = e^{q_w} \begin{bmatrix} \cos ||\bold{q}_v|| \\ \frac{\bold{q}_v}{||\bold{q}_v||} \sin ||\bold{q}_v|| \end{bmatrix} \tag{46} eq=eqw[cosqvqvqvsinqv](46)

1.3.6 单位四元数的Log运算

如果 ∣ ∣ q ∣ ∣ = 1 ||\bold{q}||=1 q=1
log ⁡ q = log ⁡ ( cos ⁡ θ + u sin ⁡ θ ) = log ⁡ ( e u θ ) = u θ = [ 0 u θ ] (47) \log \bold{q}=\log (\cos \theta+\bold{u} \sin \theta)=\log (e^{\bold{u} \theta})=\bold{u} \theta = \begin{bmatrix} 0 \\ \bold{u} \theta \end{bmatrix} \tag{47} logq=log(cosθ+usinθ)=log(euθ)=uθ=[0uθ](47)
标准四元数的log运算结果是纯四元数,轴角数值可以通过如下运算获得:
u = q v / ∣ ∣ q v ∣ ∣ (48) \bold{u} = \bold{q}_v / ||\bold{q}_v|| \tag{48} u=qv/qv(48)
θ = arctan ⁡ ( ∣ ∣ q v ∣ ∣ , q w ) (49) \theta = \arctan (||\bold{q}_v||,q_w) \tag{49} θ=arctan(qv,qw)(49)
对于小角度四元数,为了避免出现除零的情况,同样利用泰勒展开,并截断,得到一定精度的近似值:
log ⁡ ( q ) = u θ = q v arctan ⁡ ( ∣ ∣ q v ∣ ∣ , q w ) ∣ ∣ q v ∣ ∣ ≈ q v q w ( 1 − ∣ ∣ q v ∣ ∣ 2 3 q w 2 ) ≈ q v → θ → 0 0 (50) \log (\bold{q})=\bold{u} \theta=\bold{q}_v \frac{\arctan (||\bold{q}_v||,q_w)}{||\bold{q}_v||} \approx \frac{\bold{q}_v}{q_w}(1-\frac{||\bold{q}_v||^2}{3q^2_w}) \approx \bold{q}_v \xrightarrow[ \theta \rarr 0]{} \bold{0} \tag{50} log(q)=uθ=qvqvarctan(qv,qw)qwqv(13qw2qv2)qv θ00(50)

1.3.7 一般四元数的log运算

如果 q \bold{q} q 是一个一般形式的四元数,则有:
log ⁡ q = log ⁡ ( ∣ ∣ q ∣ ∣ q ∣ ∣ q ∣ ∣ ) = log ⁡ ∣ ∣ q ∣ ∣ + log ⁡ q ∣ ∣ q ∣ ∣ = log ⁡ ∣ ∣ q ∣ ∣ + u θ = [ log ⁡ ∣ ∣ q ∣ ∣ u θ ] (51) \log \bold{q}= \log (||\bold{q}|| \frac{\bold{q}}{||\bold{q}||})=\log||\bold{q}||+\log \frac{\bold{q}}{||\bold{q}||}=\log ||\bold{q}|| + \bold{u} \theta = \begin{bmatrix} \log ||\bold{q}|| \\ \bold{u} \theta \end{bmatrix} \tag{51} logq=log(qqq)=logq+logqq=logq+uθ=[logquθ](51)

1.3.8 q t \bold{q}^t qt的指数形式

如果有 q ∈ H  and  t ∈ R \bold{q} \in \Bbb{H} \text{ and } t \in \Bbb{R} qH and tR,则
q t = exp ⁡ ( log ⁡ ( q t ) ) = exp ⁡ ( t log ⁡ ( q ) ) (52) \bold{q}^t=\exp(\log(\bold{q}^t)) = \exp(t \log(\bold{q})) \tag{52} qt=exp(log(qt))=exp(tlog(q))(52)
如果 ∣ ∣ q ∣ ∣ = 1 ||\bold{q}|| = 1 q=1,可以写作 q = [ cos ⁡ θ , u sin ⁡ θ ] \bold{q}=[\cos \theta, \bold{u} \sin \theta] q=[cosθ,usinθ], 因此有 log ⁡ ( q ) = u θ \log(\bold{q})=\bold{u} \theta log(q)=uθ,进而有
q t = exp ⁡ ( t u θ ) = [ cos ⁡ t θ u sin ⁡ t θ ] (53) \bold{q}^t = \exp (t \bold{u} \theta)= \begin{bmatrix} \cos t \theta \\ \bold{u} \sin t \theta \end{bmatrix}\tag{53} qt=exp(tuθ)=[costθusintθ](53)
指数t最终变成了一个线性的乘子,我们在后面会继续讨论。

旋转和交叉关系?cross-relations

2.1 3D向量的旋转公式

在这里插入图片描述
图1展示了一个右手规则的旋转,旋转一个向量 x \bold{x} x,旋转轴是一个单位向量 u \bold{u} u,旋转角度为 ϕ \phi ϕ,这个旋转过程通过将向量 x \bold{x} x分解为平行于转轴 u \bold{u} u x ∥ \bold{x}_{\|} x部分,和垂直于旋转轴 u \bold{u} u x ⊥ \bold{x}_{\perp} x部分:
x = x ∥ + x ⊥ \bold{x} = \bold{x}_{\|} + \bold{x}_{\perp} x=x+x
分解后的部分计算如下,
x ∥ = u ( ∣ ∣ x cos ⁡ α ) = u u ⊺ x x ⊥ = x − x ∥ = x − u u ⊺ x \bold{x}_{\|} = \bold{u}(|| \bold{x} \cos \alpha) = \bold{u} \bold{u}^{\intercal}\bold{x} \\ \bold{x}_{\perp}=\bold{x} - \bold{x}_\| = \bold{x}- \bold{u} \bold{u}^{\intercal}\bold{x} x=u(xcosα)=uuxx=xx=xuux
在旋转的过程中,和旋转轴平行的部分不会发生变化,因此:
x ∥ ′ = x ∥ \bold{x}_\|' = \bold{x}_\| x=x
和转轴垂直的部分,经历了一个平面旋转,我们构造一个平面内的正交基 { e 1 , e 2 } \{ \bold{e}_1, \bold{e}_2\} {e1,e2}
e 1 = x ⊥ e 2 = u × x ⊥ = u × x \bold{e}_1 = \bold{x}_\perp \\ \bold{e}_2 = \bold{u} \times \bold{x}_\perp = \bold{u} \times \bold{x} e1=xe2=u×x=u×x
满足 ∣ ∣ e 1 ∣ ∣ = ∣ ∣ e 2 ∣ ∣ ||\bold{e}_1|| = ||\bold{e}_2|| e1=e2,有 x ⊥ = e 1 ⋅ 1 + e 2 ⋅ 0 \bold{x}_\perp=\bold{e}_1 \cdot 1 + \bold{e}_2 \cdot 0 x=e11+e20。在平面内旋转 ϕ \phi ϕ弧度后,可以得到
x ⊥ ′ = e 1 cos ⁡ ϕ + e 2 sin ⁡ ϕ \bold{x}_\perp '= \bold{e}_1 \cos \phi + \bold{e}_2 \sin \phi x=e1cosϕ+e2sinϕ
进而可得:
x ⊥ ′ = x ⊥ cos ⁡ ϕ + ( u × x ) sin ⁡ ϕ \bold{x}_\perp' = \bold{x}_\perp \cos \phi + (\bold{u} \times \bold{x}) \sin \phi x=xcosϕ+(u×x)sinϕ
再添加上平行旋转轴的部分,就得到了向量旋转公式
x ′ = x ∥ + x ⊥ cos ⁡ ϕ + ( u × x ) sin ⁡ ϕ (54) \bold{x}'=\bold{x}_\|+\bold{x}_\perp\cos \phi + (\bold{u} \times \bold{x}) \sin \phi \tag{54} x=x+xcosϕ+(u×x)sinϕ(54)

2.2 旋转群 S O ( 3 ) SO(3) SO(3)

R 3 \Bbb{R}^3 R3中能通过组合运算,围绕原点旋转组成的群就是旋转群 S O ( 3 ) SO(3) SO(3),旋转过程能保持向量的长度以及向量之间相对的角度。在机器人学方向旋转群非常重要,它被用来描述刚体在三维空间的运动。一个“刚体运动过程”要求在刚体内部,“距离,角度,以及相对方向”不发生变化。如果刚体内部的长度,角度,和相对方向发生了变化,那这就不再是一个“刚体”。

通过一个满足特定性质的函数 r r r来定义旋转, r : R 3 → R 3 ; v ↦ r ( v ) r: \Bbb{R}^3 \rarr \Bbb{R}^3 ; \bold{v} \mapsto r(\bold{v}) r:R3R3;vr(v),作用于一个向量 v ∈ R 3 v \in \Bbb{R}^3 vR3 , 通过存在点积和叉积的欧式空间测度来定义。
(1) 旋转运动保持向量长度不变
∣ ∣ r ( v ) ∣ ∣ = ⟨ r ( v ) , r ( v ) ⟩ = ⟨ v , v ⟩ ≜ ∣ ∣ v ∣ ∣ , ∀ v ∈ R 3 (55a) ||r(\bold{v})||=\sqrt{\lang r(\bold{v}),r(\bold{v}) \rang} = \sqrt{\lang \bold{v} , \bold{v} \rang} \triangleq ||\bold{v}||, \forall \bold{v} \in \Bbb{R}^3 \tag{55a} r(v)=r(v),r(v) =v,v v,vR3(55a)
(2) 旋转保持向量之间的角度不变
⟨ r ( v ) , r ( w ) ⟩ = ⟨ v , w ⟩ = ∣ ∣ v ∣ ∣ ∣ ∣ w ∣ ∣ cos ⁡ α , ∀ v , w ∈ R 3 (55b) \lang r(\bold{v}), r(\bold{w}) \rang = \lang \bold{v}, \bold{w} \rang = ||\bold{v}|| ||\bold{w}|| \cos \alpha, \forall \bold{v}, \bold{w} \in \Bbb{R}^3 \tag{55b} r(v),r(w)=v,w=vwcosα,v,wR3(55b)
(3) 旋转保持向量之间的相对方向
u × v = w ⇔ r ( u ) × r ( v ) = r ( w ) \bold{u} \times \bold{v} = \bold{w} \Leftrightarrow r(\bold{u}) \times r(\bold{v}) = r(\bold{w}) u×v=wr(u)×r(v)=r(w)
可以很容易证明前两个条件等价。可以定义旋转群 S O ( 3 ) SO(3) SO(3) 如下:
S O ( 3 ) : { r : R 3 → R 3 / ∀ v , w ∈ R 3 , ∣ ∣ r ( v ) ∣ ∣ = ∣ ∣ v ∣ ∣ , r ( v ) × r ( w ) = r ( v × w ) } (57) SO(3):\{ r:\Bbb{R}^3 \rarr \Bbb{R}^3 / \forall \bold{v}, \bold{w} \in \Bbb{R}^3 ,||r(\bold{v})|| = ||\bold{v}|| , r(\bold{v}) \times r(\bold{w}) = r(\bold{v} \times \bold{w}) \} \tag{57} SO(3):{r:R3R3/v,wR3,r(v)=v,r(v)×r(w)=r(v×w)}(57)
旋转群通常用旋转矩阵来表示。但是四元数也是一种很好的表示方法。这一章的一个目的是说明两种表示方法是等价的。他们在概念和几何上展现出了大量的相似性。最主要的区别在与四元数是 S O ( 3 ) SO(3) SO(3)的一个double cover,因此事实上并不是 S O ( 3 ) SO(3) SO(3)本身。但对于我们的应用来说这一点并不致命。

2.3 旋转群和旋转矩阵

函数 r ( ) r() r()是用标量和向量乘积进行定义的,因此是线性的。所以可利用一个矩阵 R ∈ R 3 × 3 \bold{R} \in \Bbb{R}^{3\times 3} RR3×3来表示。对向量 v \bold{v} v的旋转可以用一个矩阵乘积表示,如下:
r ( v ) = R v (58) r(\bold{v}) = \bold{Rv} \tag{58} r(v)=Rv(58)
代入到公式(55a),利用点乘表达 ⟨ a , b ⟩ = a ⊺ b \lang \bold{a}, \bold{b} \rang= \bold{a}^{\intercal}\bold{b} a,b=ab,可得对于所有的 v \bold{v} v
( R v ) ⊺ ( R v ) = v ⊺ R ⊺ R v = v ⊺ v (59) (\bold{Rv})^{\intercal}(\bold{Rv})=\bold{v^\intercal R^\intercal R v}= \bold{v^\intercal v} \tag{59} (Rv)(Rv)=vRRv=vv(59)
可以得到 R \bold{R} R需要满足的一个正交条件
R ⊺ R = I = R R ⊺ (60) \bold{R^\intercal R} = \bold{I} = \bold{RR^\intercal} \tag{60} RR=I=RR(60)
在这里插入图片描述
上述条件是描述正交特性的,如果令 R = [ r 1 , r 2 , r 3 ] \bold{R}=[\bold{r_1,r_2,r_3}] R=[r1,r2,r3],代入上式,可得, R \bold{R} R的列向量 r i \bold{r_i} ri是单位向量,并且互相垂直:
⟨ r i , r i ⟩ = r i ⊺ r i = 1 ⟨ r i , r j ⟩ = r i ⊺ r j = 0 , if  i ≠ j \lang \bold{r_i, r_i} \rang = \bold{r_i^\intercal r_i}=1 \\ \lang \bold{r_i, r_j} \rang = \bold{r_i^\intercal r_j}=0, \text{if } i \neq j ri,ri=riri=1ri,rj=rirj=0,if i=j
能保持向量长度和角度的匀速组成的群是正交群 O ( 3 ) O(3) O(3)。正交群包含了旋转和反射,旋转是刚性变换,反射不是刚性变换。群的含义是两个正交的矩阵的乘积依然是一个正交的矩阵。每一个正交矩阵都有一个逆,公式(60)表明,正交矩阵的逆就是它自身的转置
R − 1 = R ⊺ (61) \bold{R}^{-1} = \bold{R}^\intercal \tag{61} R1=R(61)
在加上相对方向条件,公式(56)确保变换是刚性的,可得到另一个约束
det ⁡ ( R ) = 1 \det (\bold{R}) = 1 det(R)=1
正交矩阵中,有单位行列式值的矩阵称为“特殊的”。他们是特殊正交矩阵,是正交群的子群,叫做特殊正交群 S O ( 3 ) SO(3) SO(3)。任意两个旋转矩阵的乘积仍然是一个旋转矩阵。

2.3.1 指数映射

指数映射是一个非常有用的数学工具,能让我们轻松并且严密的处理3维旋转。它是在旋转空间中进行微积分的起始点。它让我们可以定义微分、扰动和速度并处理它们。因此在处理旋转和方向的估计问题时,要先了解一下

旋转运动是刚性的。这意味着我们可以在 S O ( 3 ) SO(3) SO(3)中定义一个光滑的轨迹 r ( t ) r(t) r(t),这个轨迹可以将一个刚体平滑的从 r ( 0 ) r(0) r(0)变换至 r ( t ) r(t) r(t)。由于是连续光滑的,因此可以进行对时间的求导。利用公式(60)和(62)进行。

首先,要注意到只要能一直满足公式(60),我们就可以避免出现对公式(62)的违反。因为运动是连续的,只要是连续运动就不会出现旋转矩阵行列式值的跳变(从1到-1)。
将公式(60)对时间求导:
d d t ( R ⊺ R ) = R ˙ ⊺ R + R ⊺ R ˙ = 0 (63) \frac{d}{dt}(\bold{R^\intercal R})=\dot{\bold{R}}^\intercal \bold{R} + \bold{R}^\intercal \bold{\dot{R}} = 0 \tag{63} dtd(RR)=R˙R+RR˙=0(63)
移项:
R ˙ ⊺ R = − R ⊺ R ˙ = − ( R ˙ ⊺ R ) ⊺ (64) \dot{\bold{R}}^\intercal \bold{R} = -\bold{R}^\intercal \bold{\dot{R}} = -(\dot{\bold{R}}^\intercal \bold{R})^\intercal \tag{64} R˙R=RR˙=(R˙R)(64)
说明矩阵 R ˙ ⊺ R \dot{\bold{R}}^\intercal \bold{R} R˙R是反对称的,反对称的 3 × 3 3\times 3 3×3矩阵记为 s o ( 3 ) \frak{so}(3) so(3),这个是 S O ( 3 ) SO(3) SO(3)的李代数。反对称的 3 × 3 3\times 3 3×3矩阵有如下形式:
[ ω ] × ≜ [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] (65) [\omega]_\times \triangleq \begin{bmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{bmatrix} \tag{65} [ω]×0ωzωyωz0ωxωyωx0(65)
反对称矩阵有3个自由度,和叉乘运算相关,如公式(20),这个建立了从向量到李代数的一一映射 ω ∈ R 3 ↔ [ ω ] × ∈ s o ( 3 ) \omega \in \Bbb{R}^3 \leftrightarrow [\omega]_\times \in \frak{so}(3) ωR3[ω]×so(3)。取一个向量 ω = ( ω x , ω y , ω z ) ∈ R 3 \omega=(\omega_x,\omega_y,\omega_z)\in \bold{R}^3 ω=(ωx,ωy,ωz)R3,将上式写作:
R ⊺ R ˙ = [ ω ] × (66) \bold{R}^\intercal \dot{\bold{R}} = [\omega]_\times \tag{66} RR˙=[ω]×(66)
这是一个普通微分方程(ODE):
R ˙ = R [ ω ] × (67) \bold{\dot{R}} = \bold{R}[\omega]_\times \tag{67} R˙=R[ω]×(67)
在原点附近有 R = I \bold{R=I} R=I,上式可以化简为 R ˙ = [ ω ] × \bold{\dot{R}}=[\omega]_\times R˙=[ω]×,可见,可以将李代数 s o ( 3 ) \frak{so}(3) so(3)看做 r ( t ) r(t) r(t)在原点附近的微分空间,它组成了 S O ( 3 ) SO(3) SO(3)的正切空间或者叫速度空间,由此可以将 ω \omega ω看做是瞬时角速度向量

如果 ω \omega ω是常数,上述的微分方程求解可得:
R ( t ) = R ( 0 ) e [ ω ] × t = R ( 0 ) e [ ω t ] × (68) \bold{R}(t) = \bold{R}(0)e^{[\omega]_\times t} = \bold{R}(0)e^{[\omega t]_\times} \tag{68} R(t)=R(0)e[ω]×t=R(0)e[ωt]×(68)
其中指数项 e [ x ] × e^{[x]_\times} e[x]×是通过泰勒级数进行定义的,后面会讨论。由于 R ( 0 ) , R ( t ) \bold{R}(0), \bold{R}(t) R(0),R(t)是旋转矩阵,因此 e [ ω t ] × e^{[\omega t]_\times} e[ωt]×是旋转矩阵。定义向量 ϕ ≜ ω Δ t \phi \triangleq \omega \Delta t ϕωΔt 为在时间段 Δ t \Delta t Δt内,整体的旋转,可得:
R = e [ ϕ ] × (69) \bold{R} = e^{[\phi]_\times} \tag{69} R=e[ϕ]×(69)
这个就是指数映射,从 s o ( 3 ) \frak{so}(3) so(3) S O ( 3 ) SO(3) SO(3)
exp ⁡ : s o ( 3 ) → S O ( 3 ) ; [ ϕ ] × ↦ exp ⁡ ( [ ϕ ] × ) = e [ ϕ ] × (70) \exp : \frak{so}(3) \rarr SO(3); [\phi]_\times \mapsto \exp ([\phi]_\times)=e^{[\phi]_\times} \tag{70} exp:so(3)SO(3);[ϕ]×exp([ϕ]×)=e[ϕ]×(70)

请添加图片描述

2.3.2 大写指数映射

上面的指数映射表达形式经常被滥用,和 ϕ ∈ R 3 \phi \in \R^3 ϕR3以及 [ ϕ ] × ∈ s o ( 3 ) [\phi]_\times \in \frak{so}(3) [ϕ]×so(3)混淆,为了避免歧义,使用一个大写的Exp运算,来作为映射 R 3 → S O ( 3 ) \R^3 \rarr SO(3) R3SO(3):
Exp : R 3 → S O ( 3 ) ; ϕ ↦ Exp ( ϕ ) = e [ ϕ ] × (71) \text{Exp}:\R^3 \rarr SO(3); \phi \mapsto \text{Exp}(\phi) = e^{[\phi]_\times} \tag{71} Exp:R3SO(3);ϕExp(ϕ)=e[ϕ]×(71)
大小写指数映射之间的关系:
Exp ( ϕ ) ≜ exp ⁡ ( [ ϕ ] × ) (72) \text{Exp}(\phi) \triangleq \exp([\phi]_\times) \tag{72} Exp(ϕ)exp([ϕ]×)(72)
在后面的章节中,会看到,将向量 ϕ \phi ϕ称作旋转向量,或者轴角向量, ϕ = ω Δ t = ϕ u \phi=\omega \Delta t = \phi \bold{u} ϕ=ωΔt=ϕu,其中 ϕ \phi ϕ是角度, u \bold{u} u是旋转轴。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
四元数运动学是错误状态卡尔曼滤波器中的一种重要方法。在四元数运动学中,我们使用四元数表示刚体的旋转姿态。错误状态卡尔曼滤波器是一种滤波算法,用于估计系统的状态,特别是旋转姿态的状态,并根据输入信号对估计的状态进行修正。 在错误状态卡尔曼滤波器中,我们通过使用四元数来表示旋转姿态的状态,并定义一个误差状态来描述实际姿态与估计姿态之间的差异。然后,我们使用卡尔曼滤波器的观测方程和状态方程,更新估计的状态,以减小误差状态。 四元数运动学提供了一种方便的方法来表示旋转姿态,它具有良好的数学特性和计算效率。通过使用四元数运动学,我们可以使用简洁的数学公式来描述旋转操作,避免了矩阵和欧拉角等其他旋转表示方法的复杂性。 在错误状态卡尔曼滤波器中,我们使用四元数运动学来更新估计的旋转姿态状态。通过将观测值与估计值之间的差异与卡尔曼增益相乘,我们可以得到一个修正项,用于更新估计的姿态状态。这种方式可以有效地融合观测数据和先验信息,提高对旋转姿态的估计精度。 总之,四元数运动学是错误状态卡尔曼滤波器中用于估计旋转姿态的一种重要方法。通过使用四元数来表示姿态状态,并结合卡尔曼滤波算法进行状态估计,我们可以实现更精确的姿态估计,并应用于各种导航和控制系统中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值