重读经典《Quaternion kinematics for the error-state Kalman filter》

在这里插入图片描述
本文将介绍一篇关于 四元数运动学的误差卡尔曼滤波 经典论文。本文结构如下:

  • 第1章四元数定义和性质介绍,包括:加法、减法、乘法(矩阵表示)、模、幂数、指数运算等。
  • 第2章旋转群定义和性质介绍,包括:旋转矩阵表示旋转运算、四元数表示旋转运算、旋转矩阵和四元数转换
  • 第3章李群定义和性质介绍,包括:李群加减法运算、李群四种导数定义、常用雅可比矩阵、四元数导数
  • 第4章IMU运动学方程介绍,包括:局部坐标系统微分方程、全局坐标系统微分方程、全局坐标系统离散时刻运动学方程
  • 第5章IMU/GPS融合定位介绍,包括:融合定位预测、融合定位更新

论文英文版链接:https://hal.archives-ouvertes.fr/hal-01122406/document (October 12, 2017)

论文中文版链接:https://blog.csdn.net/sunqin_csdn/article/details/108560582

文章目录

      • 1. 四元数定义和性质
        • 1.1 四元数定义
        • 1.2 四元数主要性质
        • 1.3 四元数其余性质
      • 2. 旋转群、旋转矩阵、四元数
      • 3. 李群扰动导数
        • 3.1 李群加减运算符
        • 3.2 李群四种导数定义
        • 3.3 常用旋转雅可比矩阵 (重点)
        • 3.4 四元数导数
      • 4. IMU运动学方程
        • 4.1 局部坐标系统连续时刻微分方程
          • 4.1.1 真值状态微分方程
          • 4.1.2 名义状态微分方程
          • 4.1.3 误差状态微分方程
        • 4.2 全局坐标系统连续时微分方程
        • 4.3 全局坐标系统离散时刻运动学
      • 5. IMU/GPS融合定位
        • 5.1 融合定位预测
        • 5.2 融合定位更新


1. 四元数定义和性质

1.1 四元数定义

四元数可以这样进行定义,假设有两个复数 A=a+biA=a+b iA=a+biC=c+diC=c+diC=c+di,则 QQQ 可以写成 Q=A+CjQ=A+CjQ=A+Cj,并且规定 k≜ijk \triangleq i jkij,那么则得到四元数 QQQ 为:
Q=a+bi+cj+dk∈HQ=a+bi+cj+dk \in{\mathbb{H}}Q=a+bi+cj+dkH

其中 {a,b,c,d}∈R\{a, b, c, d\} \in \mathbb{R}{a,b,c,d}R{i,j,k}\{i,j,k\}{i,j,k} 为三个虚数单位,三者并且满足以下性质:
i2=j2=k2=ijk=−1i^2=j^2=k^2=ijk=-1i2=j2=k2=ijk=1

进一步,从中可以得出:
ij=−ji=k,jk=−kj=i,ki=−ik=jij=-ji=k, \quad jk=-kj=i, \quad ki=-ik=jij=ji=k,jk=kj=i,ki=ik=j

四元数由实部虚部组成,如果实部为零,则得到纯四元数,记为 Hp\mathbb{H}_pHp
Q=bi+cj+dk∈HpQ=bi+cj+dk \in \mathbb{H}_pQ=bi+cj+dkHp

为了计算方便,常把四元数写成标量向量组合的形式,例如 Q=qw+qvQ=q_w+\mathbf{q}_vQ=qw+qv,其中 qwq_wqw 是实部,qv=qxi+qyj+qzk\mathbf{q}_v=q_xi+q_yj+q_zkqv=qxi+qyj+qzk 为虚部,四元数也可以写成4维向量形式,即:
q≜[qwqv]=[qwqxqyqz]\mathbf{q} \triangleq\left[\begin{array}{l} q_{w} \\ \mathbf{q}_{v} \end{array}\right]=\left[\begin{array}{l} q_{w} \\ q_{x} \\ q_{y} \\ q_{z} \end{array}\right] q[qwqv]=qwqxqyqz


1.2 四元数主要性质

(1)加法:
p±q=[pwpv]±[qwqv]=[pw±qwpv±qv]\mathbf{p} \pm \mathbf{q}=\left[\begin{array}{l} p_{w} \\ \mathbf{p}_{v} \end{array}\right] \pm\left[\begin{array}{l} q_{w} \\ \mathbf{q}_{v} \end{array}\right]=\left[\begin{array}{l} p_{w} \pm q_{w} \\ \mathbf{p}_{v} \pm \mathbf{q}_{v} \end{array}\right] p±q=[pwpv]±[qwqv]=[pw±qwpv±qv]

(2)乘积:
p⊗q=[pwqw−pxqx−pyqy−pzqzpwqx+pxqw+pyqz−pzqypwqy−pxqz+pyqw+pzqxpwqz+pxqy−pyqx+pzqw]\mathbf{p} \otimes \mathbf{q}=\left[\begin{array}{l} 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} \end{array}\right] pq=pwqwpxqxpyqypzqzpwqx+pxqw+pyqzpzqypwqypxqz+pyqw+pzqxpwqz+pxqypyqx+pzqw

上式也可以写成标量向量相乘的形式:

p⊗q=[pwqw−pv⊤qvpwqv+qwpv+pv×qv]\mathbf{p} \otimes \mathbf{q}=\left[\begin{array}{c} p_{w} q_{w}-\mathbf{p}_{v}^{\top} \mathbf{q}_{v} \\ p_{w} \mathbf{q}_{v}+q_{w} \mathbf{p}_{v}+\mathbf{p}_{v} \times \mathbf{q}_{v} \end{array}\right] pq=[pwqwpvqvpwqv+qwpv+pv×qv]
这里需要注意的是,四元数相乘没有交换律,p⊗q≠q⊗p\mathbf{p} \otimes \mathbf{q} \neq \mathbf{q} \otimes \mathbf{p}pq=qp四元数相乘也可以写成矩阵和向量相乘的形式,即:
q1⊗q2=[q1]Lq2=[q2]Rq1\mathbf{q}_1 \otimes \mathbf{q}_2 = [\mathbf{q}_1]_L\mathbf{q}_2 = [\mathbf{q}_2]_R\mathbf{q}_1q1q2=[q1]Lq2=[q2]Rq1

其中:
[q]L=[qw−qx−qy−qzqxqw−qzqyqyqzqw−qxqz−qyqxqw],[q]R=[qw−qx−qy−qzqxqwqz−qyqy−qzqwqxqzqy−qxqw][\mathbf{q}]_{L}=\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], \quad[\mathbf{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]L=qwqxqyqzqxqwqzqyqyqzqwqxqzqyqxqw,[q]R=qwqxqyqzqxqwqzqyqyqzqwqxqzqyqxqw

或者也可以写成下面的形式:
[q]L=qwI+[0−qv⊤qv[qv]×],[q]R=qwI+[0−qv⊤qv−[qv]×][\mathbf{q}]_{L}=q_{w} \mathbf{I}+\left[\begin{array}{cc} 0 & -\mathbf{q}_{v}^{\top} \\ \mathbf{q}_{v} & {\left[\mathbf{q}_{v}\right]_{\times}} \end{array}\right], \quad[\mathbf{q}]_{R}=q_{w} \mathbf{I}+\left[\begin{array}{cc} 0 & -\mathbf{q}_{v}^{\top} \\ \mathbf{q}_{v} & -\left[\mathbf{q}_{v}\right]_{\times} \end{array}\right] [q]L=qwI+[0qvqv[qv]×],[q]R=qwI+[0qvqv[qv]×]

反对称矩阵 [∙]×[\bullet]_{\times}[]× 定义如下,[a×]T=−[a]×[\mathbf{a}_{\times}]^T=-[\mathbf{a}]_{\times}[a×]T=[a]×,并且有 [a]×b=a×b[\mathbf{a}]_{\times}\mathbf{b}=\mathbf{a}\times \mathbf{b}[a]×b=a×b。不过有时反对称矩阵符号也会写成 a∧\mathbf{a}^{\wedge}a 的形式。
[a]×≜[0−azayaz0−ax−ayax0][\mathbf{a}]_{\times} \triangleq\left[\begin{array}{ccc} 0 & -a_{z} & a_{y} \\ a_{z} & 0 & -a_{x} \\ -a_{y} & a_{x} & 0 \end{array}\right] [a]×0azayaz0axayax0

因此,四元数相乘可以写成:
q⊗x⊗p=(q⊗x)⊗p=[p]R[q]Lx=q⊗(x⊗p)=[q]L[p]Rx\begin{aligned} \mathbf{q} \otimes \mathbf{x} \otimes \mathbf{p} &=(\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{aligned} qxp=(qx)p=[p]R[q]Lx=q(xp)=[q]L[p]Rx

可以得到;
[p]R[q]L=[q]L[p]R[\mathbf{p}]_{R}[\mathbf{q}]_{L}=[\mathbf{q}]_{L}[\mathbf{p}]_{R} [p]R[q]L=[q]L[p]R

(3)同一性:
q1=1=[10v]\mathbf{q}_{1}=1=\left[\begin{array}{c} 1 \\ 0_{v} \end{array}\right] q1=1=[10v]

(4)共轭四元数:
q∗≜qw−qv=[qw−qv]\mathbf{q}^{*} \triangleq q_{w}-\mathbf{q}_{v}=\left[\begin{array}{c} q_{w} \\ -\mathbf{q}_{v} \end{array}\right] qqwqv=[qwqv]

可以得到:
q⊗q∗=q∗⊗q=qw2+qx2+qy2+qz2=[qw2+qx2+qy2+qz20v]\mathbf{q} \otimes \mathbf{q}^{*}=\mathbf{q}^{*} \otimes \mathbf{q}=q_{w}^{2}+q_{x}^{2}+q_{y}^{2}+q_{z}^{2}=\left[\begin{array}{c} q_{w}^{2}+q_{x}^{2}+q_{y}^{2}+q_{z}^{2} \\ \mathbf{0}_{v} \end{array}\right] qq=qq=qw2+qx2+qy2+qz2=[qw2+qx2+qy2+qz20v]

同时有 (p⊗q)∗=q∗⊗p∗(\mathbf{p} \otimes \mathbf{q})^* = \mathbf{q}^* \otimes \mathbf{p}^*(pq)=qp

(5)模:

∥q∥≜q⊗q∗=q∗⊗q=qw2+qx2+qy2+qz2∈R\|\mathbf{q}\| \triangleq \sqrt{\mathbf{q} \otimes \mathbf{q}^{*}}=\sqrt{\mathbf{q}^{*} \otimes \mathbf{q}}=\sqrt{q_{w}^{2}+q_{x}^{2}+q_{y}^{2}+q_{z}^{2}} \in \mathbb{R} qqq=qq=qw2+qx2+qy2+qz2R

可以得到:∥p⊗q∥=∥q⊗p∥=∥p∥∥q∥\|\mathbf{p} \otimes \mathbf{q}\|=\|\mathbf{q} \otimes \mathbf{p}\|=\|\mathbf{p}\|\|\mathbf{q}\| pq=qp=pq

(6)逆:
q−1=q∗/∥q∥2\mathbf{q}^{-1}=\mathbf{q}^{*} /\|\mathbf{q}\|^{2} q1=q/q2


1.3 四元数其余性质

(1)从上面的公式可以得到
pv⊗qv−qv⊗pv=2pv×qv\mathbf{p}_{v} \otimes \mathbf{q}_{v}-\mathbf{q}_{v} \otimes \mathbf{p}_{v}=2 \mathbf{p}_{v} \times \mathbf{q}_{v} pvqvqvpv=2pv×qv

(2)纯四元数相乘:
pv⊗qv=−pv⊤qv+pv×qv=[−pv⊤qvpv×qv]\mathbf{p}_{v} \otimes \mathbf{q}_{v}=-\mathbf{p}_{v}^{\top} \mathbf{q}_{v}+\mathbf{p}_{v} \times \mathbf{q}_{v}=\left[\begin{array}{c} -\mathbf{p}_{v}^{\top} \mathbf{q}_{v} \\ \mathbf{p}_{v} \times \mathbf{q}_{v} \end{array}\right] pvqv=pvqv+pv×qv=[pvqvpv×qv]

可以得到:
qv⊗qv=−qv⊤qv=−∥qv∥2\mathbf{q}_{v} \otimes \mathbf{q}_{v}=-\mathbf{q}_{v}^{\top} \mathbf{q}_{v}=-\left\|\mathbf{q}_{v}\right\|^{2} qvqv=qvqv=qv2

如果 u\mathbf{u}u 是单位四元数,则有;
u⊗u=−1\mathbf{u} \otimes \mathbf{u}=-1 uu=1

(3)纯四元数幂次方:

如果 v=uθ\mathbf{v}=\mathbf{u}\thetav=uθ 是纯四元数,且 u\mathbf{u}u 是单位四元数,θ=∣∣v∣∣\theta=||\mathbf{v}||θ=v,则 v\mathbf{v}v 的幂次方形式为:
v2=−θ2,v3=−uθ3,v4=θ4,v5=uθ5,v6=−θ6\mathbf{v}^{2}=-\theta^{2} \quad, \quad \mathbf{v}^{3}=-\mathbf{u} \theta^{3} \quad, \quad \mathbf{v}^{4}=\theta^{4} \quad, \quad \mathbf{v}^{5}=\mathbf{u} \theta^{5} \quad, \quad \mathbf{v}^{6}=-\theta^{6} v2=θ2,v3=uθ3,v4=θ4,v5=uθ5,v6=θ6

对于纯单位四元数 u\mathbf{u}u,可以得到:
u2=−1,u3=−u,u4=1,u5=u,u6=−1\mathbf{u}^{2}=-1 \quad, \quad \mathbf{u}^{3}=-\mathbf{u} \quad, \quad \mathbf{u}^{4}=1 \quad, \quad \mathbf{u}^{5}=\mathbf{u} \quad, \quad \mathbf{u}^{6}=-1 u2=1,u3=u,u4=1,u5=u,u6=1

(4) 纯四元数指数:

四元数指数形式为:
eq≜∑k=0∞1k!qk∈He^{\mathbf{q}} \triangleq \sum_{k=0}^{\infty} \frac{1}{k !} \mathbf{q}^{k} \in \mathbb{H} eqk=0k!1qkH

对于纯四元数 v=uθ\mathbf{v}=\mathbf{u}\thetav=uθθ=∣∣v∣∣\theta=||\mathbf{v}||θ=v。根据幂次方形式可以得到其指数形式为:
euθ=(1−θ22!+θ44!+⋯)+(uθ−uθ33!+uθ55!+⋯)e^{\mathbf{u} \theta}=\left(1-\frac{\theta^{2}}{2 !}+\frac{\theta^{4}}{4 !}+\cdots\right)+\left(\mathbf{u} \theta-\frac{\mathbf{u} \theta^{3}}{3 !}+\frac{\mathbf{u} \theta^{5}}{5 !}+\cdots\right) euθ=(12!θ2+4!θ4+)+(uθ3!uθ3+5!uθ5+)

最终,可以得到其表达形式为:
ev=euθ=cos⁡θ+usin⁡θ=[cos⁡θusin⁡θ]e^{\mathbf{v}}=e^{\mathbf{u} \theta}=\cos \theta+\mathbf{u} \sin \theta=\left[\begin{array}{c} \cos \theta \\ \mathbf{u} \sin \theta \end{array}\right] ev=euθ=cosθ+usinθ=[cosθusinθ]

这就是四元数指数形式对应的欧拉方程。同时也可以得到:
e−v=(ev)∗e^{-\mathbf{v}}=\left(e^{\mathbf{v}}\right)^{*} ev=(ev)


2. 旋转群、旋转矩阵、四元数

2.1 旋转方程与旋转群 SO(3)SO(3)SO(3)

假设有向量 x\mathbf{x}x 绕着轴 u\mathbf{u}u 旋转,角度为 ϕ\phiϕ。则可以得到旋转后的向量x′\mathbf{x}^{\prime}x为:
x′=x∥+x⊥cos⁡ϕ+(u×x)sin⁡ϕ\mathbf{x}^{\prime}=\mathbf{x}_{\|}+\mathbf{x}_{\perp} \cos \phi+(\mathbf{u} \times \mathbf{x}) \sin \phi x=x+xcosϕ+(u×x)sinϕ
这就是旋转方程,后面我们会进行证明。
在这里插入图片描述

下面给出旋转群 SO(3)SO(3)SO(3) 的定义:
SO(3):{r:R3→R3/∀v,w∈R3,∥r(v)∥=∥v∥,r(v)×r(w)=r(v×w)}S O(3):\left\{r: \mathbb{R}^{3} \rightarrow \mathbb{R}^{3} / \forall \mathbf{v}, \mathbf{w} \in \mathbb{R}^{3},\|r(\mathbf{v})\|=\|\mathbf{v}\|, r(\mathbf{v}) \times r(\mathbf{w})=r(\mathbf{v} \times \mathbf{w})\right\} SO(3):{r:R3R3/v,wR3,r(v)=v,r(v)×r(w)=r(v×w)}

可以看到,一个向量 v\mathbf{v}v 旋转后,其模并不改变,向量间的角度也不会改变


2.2 旋转群和旋转矩阵

(1)旋转矩阵基本性质

已知一个旋转矩阵 R∈R3×3\mathbf{R}\in\mathbb{R}^{3\times3}RR3×3,定义旋转操作为 r(v)=Rvr(\mathbf{v})=\mathbf{R}\mathbf{v}r(v)=Rv。因为旋转不改变向量的模,可以得到:
(Rv)⊤(Rv)=v⊤R⊤Rv=v⊤v(\mathbf{R} \mathbf{v})^{\top}(\mathbf{R} \mathbf{v})=\mathbf{v}^{\top} \mathbf{R}^{\top} \mathbf{R} \mathbf{v}=\mathbf{v}^{\top} \mathbf{v} (Rv)(Rv)=vRRv=vv

得到旋转矩阵的正交性
R⊤R=I=RR⊤\mathbf{R}^{\top} \mathbf{R}=\mathbf{I}=\mathbf{R} \mathbf{R}^{\top} RR=I=RR

从上式可以得到,旋转矩阵的逆是其的转置 R−1=R⊤\mathbf{R}^{-1}=\mathbf{R}^{\top}R1=R旋转矩阵行列式det⁡(R)=1\operatorname{det}(\mathbf{R})=1det(R)=1

(2)旋转矩阵指数映射

上式两边求导:

ddt(R⊤R)=R˙⊤R+R⊤R˙=0\frac{d}{d t}\left(\mathbf{R}^{\top} \mathbf{R}\right)=\dot{\mathbf{R}}^{\top} \mathbf{R}+\mathbf{R}^{\top} \dot{\mathbf{R}}=0 dtd(RR)=R˙R+RR˙=0

可以得到;

R⊤R˙=−(R⊤R˙)⊤\mathbf{R}^{\top} \dot{\mathbf{R}}=-\left(\mathbf{R}^{\top} \dot{\mathbf{R}}\right)^{\top} RR˙=(RR˙)

可以看出 R⊤R˙\mathbf{R}^{\top}\dot{\mathbf{R}}RR˙ 是一个反对称矩阵。反对称的 3×33\times33×3 矩阵可以用符号 so(3)\mathfrak{so}(3)so(3)表示,也称为群 SO3SO{3}SO3李代数

定义向量 ω∈R3↔[ω]×∈so(3)\boldsymbol{\omega} \in \mathbb{R}^{3} \leftrightarrow[\boldsymbol{\omega}]_{\times} \in \mathfrak{s o}(3)ωR3[ω]×so(3),则上式可以写为:
R˙=R[ω]×\dot{\mathbf{R}}=\mathbf{R}[\boldsymbol{\omega}]_{\times} R˙=R[ω]×

在原点,旋转矩阵 R=I\mathbf{R}=\mathbf{I}R=I,上式简化为 R˙=[ω]×\dot{\mathbf{R}}=[\boldsymbol{\omega}]_{\times}R˙=[ω]×。表示李代数为旋转矩阵在原点的导数

如果 ω\boldsymbol{\omega}ω 是常数,上式微分方程的积分形式可以写为:
R(t)=R(0)e[ω]×t=R(0)e[ωt]×\mathbf{R}(t)=\mathbf{R}(0) e^{[\boldsymbol{\omega}]_{\times} t}=\mathbf{R}(0) e^{[\omega t]_{\times}} R(t)=R(0)e[ω]×t=R(0)e[ωt]×
定义向量 ϕ≜ωΔt\phi \triangleq \omega \Delta tϕωΔt,则旋转矩阵 R\mathbf{R}R 可以写成:
R=e[ϕ]×\mathbf{R}=e^{[\phi]_{\times}} R=e[ϕ]×

这就是旋转矩阵的指数映射,从李代数 so(3)\mathfrak{so}(3)so(3) 到群 SO(3)SO(3)SO(3)

exp⁡:so(3)→SO(3);[ϕ]×↦exp⁡([ϕ]×)=e[ϕ]×\exp : \mathfrak{s o}(3) \rightarrow S O(3) ;[\boldsymbol{\phi}]_{\times} \mapsto \exp \left([\boldsymbol{\phi}]_{\times}\right)=e^{[\boldsymbol{\phi}]_{\times}} exp:so(3)SO(3);[ϕ]×exp([ϕ]×)=e[ϕ]×

也可以写成从实数 R3\mathbb{R}^3R3 到群 SO(3)SO(3)SO(3)的映射。
Exp⁡:R3→SO(3);ϕ↦Exp⁡(ϕ)=e[ϕ]×\operatorname{Exp}: \mathbb{R}^{3} \rightarrow S O(3) ; \phi \mapsto \operatorname{Exp}(\phi)=e^{[\phi]_{\times}} Exp:R3SO(3);ϕExp(ϕ)=e[ϕ]×

实数、李代数数、旋转群三者之间关系如下图所示
在这里插入图片描述

(3) 旋转矩阵与旋转向量:罗德里格斯公式

已知旋转 R\mathbf{R}R 为:
在这里插入图片描述
且旋转轴 u\mathbf{u}u 满足 [u]×2=uu⊤−I,[u]×3=−u×[\mathbf{u}]_{\times}^2=\mathbf{u}\mathbf{u}^{\top}-\mathbf{I},[\mathbf{u}]_{\times}^3=-\mathbf{u}_{\times}[u]×2=uuI[u]×3=u×。最终上式可以写成如下形式,也被称为罗德里格斯公式
R=I+sin⁡ϕ[u]×+(1−cos⁡ϕ)[u]×2\mathbf{R} = \mathbf{I} + \sin\phi [\mathbf{u}]_{\times} + (1 − \cos\phi) [\mathbf{u}]_{\times}^2R=I+sinϕ[u]×+(1cosϕ)[u]×2

指数映射的逆运算为对数映射,定义为:
log⁡:SO(3)→so(3);R↦log⁡(R)=[uϕ]×\log : SO(3) \rightarrow \mathfrak{s o}(3) ; \mathbf{R} \mapsto \log(\mathbf{R}) =[\mathbf{u}\phi]_{\times} log:SO(3)so(3);Rlog(R)=[uϕ]×
其中
ϕ=arccos⁡(trace(R)−12)\phi=\arccos(\frac{trace(\mathbf{R})-1}{2})ϕ=arccos(2trace(R)1)

u=(R−R⊤)∨2sin⁡ϕ\mathbf{u}=\frac{(\mathbf{R}-\mathbf{R}^{\top})^∨}{2\sin\phi}u=2sinϕ(RR)

​其中 [∙]∨[\bullet]^∨[] 是反对称矩阵的逆操作。

(4) 旋转运算

回到最开始的问题, 向量 x\mathbf{x}x 绕轴 u\mathbf{u}u 转动角度 ϕ\phiϕ 之后的向量 x′\mathbf{x^{\prime}}x 为:
x′=Rx=(I+sin⁡ϕ[u]×+(1−cos⁡ϕ)[u]×2)x=x+sin⁡ϕ[u]×x+(1−cos⁡ϕ)[u]×2x=x+sin⁡ϕ(u×x)+(1−cos⁡ϕ)(uu⊤−I)x=x∥+x⊥+sin⁡ϕ(u×x)−(1−cos⁡ϕ)x⊥=x∥+(u×x)sin⁡ϕ+x⊥cos⁡ϕ\begin{aligned} \mathbf{x}^{\prime} &=\mathbf{R} \mathbf{x} \\ &=\left(\mathbf{I}+\sin \phi[\mathbf{u}]_{\times}+(1-\cos \phi)[\mathbf{u}]_{\times}^{2}\right) \mathbf{x} \\ &=\mathbf{x}+\sin \phi[\mathbf{u}]_{\times} \mathbf{x}+(1-\cos \phi)[\mathbf{u}]_{\times}^{2} \mathbf{x} \\ &=\mathbf{x}+\sin \phi(\mathbf{u} \times \mathbf{x})+(1-\cos \phi)\left(\mathbf{u} \mathbf{u}^{\top}-\mathbf{I}\right) \mathbf{x} \\ &=\mathbf{x}_{\|}+\mathbf{x}_{\perp}+\sin \phi(\mathbf{u} \times \mathbf{x})-(1-\cos \phi) \mathbf{x}_{\perp} \\ &=\mathbf{x}_{\|}+(\mathbf{u} \times \mathbf{x}) \sin \phi+\mathbf{x}_{\perp} \cos \phi \end{aligned} x=Rx=(I+sinϕ[u]×+(1cosϕ)[u]×2)x=x+sinϕ[u]×x+(1cosϕ)[u]×2x=x+sinϕ(u×x)+(1cosϕ)(uuI)x=x+x+sinϕ(u×x)(1cosϕ)x=x+(u×x)sinϕ+xcosϕ


2.3 旋转群与四元数

(1)四元数旋转基本性质

四元数旋转公式为:
r(v)=q⊗v⊗q∗r(\mathbf{v})=\mathbf{q}\otimes\mathbf{v}\otimes\mathbf{q}^*r(v)=qvq

旋转并不改变向量的长度,两边取模可得:
∣∣q⊗v⊗q∗∣∣=∣∣q∣∣2∣∣v∣∣=∣∣v∣∣||\mathbf{q}\otimes\mathbf{v}\otimes\mathbf{q}^*||=||\mathbf{q}||^2||\mathbf{v}||=||\mathbf{v}||qvq=q2v=v

最终可以得到:
q⊗q∗=1=q∗⊗q\mathbf{q}\otimes\mathbf{q}^*=1=\mathbf{q}^*\otimes\mathbf{q}qq=1=qq

与上一节关于旋转矩阵性质十分相似,即 R⊤R=I=RR⊤\mathbf{R}^{\top}\mathbf{R}=\mathbf{I}=\mathbf{R}\mathbf{R}^{\top}RR=I=RR。同样地,单位四元数也构成了一个群,用 S3S^3S3表示。

(2)四元数指数映射

假设有一个四元数 q∈S3\mathbf{q}\in S^3qS3,满足 q∗⊗q=1\mathbf{q}^*\otimes\mathbf{q}=1qq=1,两边求导可得:
d(q∗⊗q)dt=q˙∗⊗q+q∗⊗q˙=0\frac{d(\mathbf{q}^*\otimes\mathbf{q})}{d t}=\dot{\mathbf{q}}^{*} \otimes\mathbf{q}+\mathbf{q}^{*} \otimes\dot{\mathbf{q}}=0 dtd(qq)=q˙q+qq˙=0

可以得到:
q∗⊗q˙=−(q˙∗⊗q)=−(q∗⊗q˙)∗\mathbf{q}^{*} \otimes\dot{\mathbf{q}}=-(\dot{\mathbf{q}}^{*} \otimes\mathbf{q})=-(\mathbf{q}^{*} \otimes\dot{\mathbf{q}})^* qq˙=(q˙q)=(qq˙)

可以证明,q∗⊗q˙\mathbf{q}^{*} \otimes\dot{\mathbf{q}}qq˙ 是一个纯四元数,使用 Ω\mathbf{\Omega}Ω 表示纯四元数,则有:
q∗⊗q˙=Ω=[0Ω]\mathbf{q}^{*} \otimes\dot{\mathbf{q}}=\mathbf{\Omega}=\left[\begin{array}{c} 0 \\ \mathbf{\Omega} \end{array}\right] qq˙=Ω=[0Ω]

最终可以得到,四元数导数为:
q˙=q⊗Ω\dot\mathbf{q}=\mathbf{q}\otimes\mathbf{\Omega}q˙=qΩ

在原点,四元数 q=1\mathbf{q}=1q=1。此时得到李代数 q˙=Ω\dot\mathbf{q}=\mathbf{\Omega}q˙=Ω。积分可得:
q(t)=q(0)⊗eΩt\mathbf{q}(t)=\mathbf{q}(0)\otimes e^{\mathbf{\Omega} t} q(t)=q(0)eΩt

此时,可以得到四元数的指数映射方程为:
exp⁡:Hp→S3;V↦exp⁡(V)=eV\exp : \mathbb{H}_p \rightarrow S^3 ; \boldsymbol{V} \mapsto \exp \left(\boldsymbol{V}\right)=e^{\boldsymbol{V}} exp:HpS3;Vexp(V)=eV

同样地,也可以写成实数 R\mathbb{R}R 到 群 S3S^3S3 的映射。
Exp⁡:R3→S3;ϕ↦Exp⁡(ϕ)=eϕ/2\operatorname{Exp}: \mathbb{R}^3 \rightarrow S^3 ; \boldsymbol{\phi} \mapsto \operatorname{Exp} \left(\boldsymbol{\phi}\right)=e^{\boldsymbol{ \boldsymbol{\phi}/2}} Exp:R3S3;ϕExp(ϕ)=eϕ/2

实数、四元数、旋转群三者之间关系为;
在这里插入图片描述
有时,为了方便,会引入角速度向量 ω=2Ω∈R3\mathbf{\omega}=2\mathbf{\Omega}\in\mathbb{R}^3ω=2ΩR3,则四元数及其导数可以写为:
q˙=12q⊗ω\dot{\mathbf{q}}=\frac{1}{2}\mathbf{q}\otimes\mathbf{\omega}q˙=21qω

q=eωt/2\mathbf{q}=e^{\mathbf{\omega}t/2}q=eωt/2

(3) 四元数与旋转向量

ϕ=ϕu\boldsymbol{\phi}=\phi\mathbf{u}ϕ=ϕu,其中 u\mathbf{u}u为旋转向量, ϕ\phiϕ 为旋转角度。则四元数与旋转向量方程为:
q=Exp⁡(ϕu)=eϕu/2=[cos⁡(ϕ/2)usin⁡(ϕ/2)]\mathbf{q}=\operatorname{Exp}(\phi\mathbf{u}) =e^{\phi\mathbf{u}/2}=\left[\begin{array}{c} \cos(\phi/2)\\ \mathbf{u}\sin(\phi/2) \end{array}\right] q=Exp(ϕu)=eϕu/2=[cos(ϕ/2)usin(ϕ/2)]

四元数求旋转向量和角度公式为:

ϕ=2arctan⁡(∣∣qv∣∣,qw)\phi=2\arctan(||\mathbf{q}_v||,q_w)ϕ=2arctan(qv,qw)

u=qv/∣∣qv∣∣\mathbf{u}=\mathbf{q}_v/||\mathbf{q}_v||u=qv/qv

(4) 旋转运算

回到最开始的问题,向量 x\mathbf{x}x 经过四元数旋转后的向量 x′\mathbf{x}^{\prime}x为:
x′=q⊗x⊗q∗=(cos⁡ϕ2+usin⁡ϕ2)⊗(0+x)⊗(cos⁡ϕ2−usin⁡ϕ2)=xcos⁡2ϕ2+(u⊗x−x⊗u)sin⁡ϕ2cos⁡ϕ2−u⊗x⊗usin⁡2ϕ2=xcos⁡2ϕ2+2(u×x)sin⁡ϕ2cos⁡ϕ2−(x(u⊤u)−2u(u⊤x))sin⁡2ϕ2=x(cos⁡2ϕ2−sin⁡2ϕ2)+(u×x)(2sin⁡ϕ2cos⁡ϕ2)+u(u⊤x)(2sin⁡2ϕ2)=xcos⁡ϕ+(u×x)sin⁡ϕ+u(u⊤x)(1−cos⁡ϕ)=(x−uu⊤x)cos⁡ϕ+(u×x)sin⁡ϕ+uu⊤x=x⊥cos⁡ϕ+(u×x)sin⁡ϕ+x∥\begin{aligned} \mathbf{x}^{\prime} &=\mathbf{q} \otimes \mathbf{x} \otimes \mathbf{q}^{*} \\ &=\left(\cos \frac{\phi}{2}+\mathbf{u} \sin \frac{\phi}{2}\right) \otimes(0+\mathbf{x}) \otimes\left(\cos \frac{\phi}{2}-\mathbf{u} \sin \frac{\phi}{2}\right) \\ &=\mathbf{x} \cos ^{2} \frac{\phi}{2}+(\mathbf{u} \otimes \mathbf{x}-\mathbf{x} \otimes \mathbf{u}) \sin \frac{\phi}{2} \cos \frac{\phi}{2}-\mathbf{u} \otimes \mathbf{x} \otimes \mathbf{u} \sin ^{2} \frac{\phi}{2} \\ &=\mathbf{x} \cos ^{2} \frac{\phi}{2}+2(\mathbf{u} \times \mathbf{x}) \sin \frac{\phi}{2} \cos \frac{\phi}{2}-\left(\mathbf{x}\left(\mathbf{u}^{\top} \mathbf{u}\right)-2 \mathbf{u}\left(\mathbf{u}^{\top} \mathbf{x}\right)\right) \sin ^{2} \frac{\phi}{2} \\ &=\mathbf{x}\left(\cos ^{2} \frac{\phi}{2}-\sin ^{2} \frac{\phi}{2}\right)+(\mathbf{u} \times \mathbf{x})\left(2 \sin \frac{\phi}{2} \cos \frac{\phi}{2}\right)+\mathbf{u}\left(\mathbf{u}^{\top} \mathbf{x}\right)\left(2 \sin ^{2} \frac{\phi}{2}\right) \\ &=\mathbf{x} \cos \phi+(\mathbf{u} \times \mathbf{x}) \sin \phi+\mathbf{u}\left(\mathbf{u}^{\top} \mathbf{x}\right)(1-\cos \phi) \\ &=\left(\mathbf{x}-\mathbf{u} \mathbf{u}^{\top} \mathbf{x}\right) \cos \phi+(\mathbf{u} \times \mathbf{x}) \sin \phi+\mathbf{u} \mathbf{u}^{\top} \mathbf{x} \\ &=\mathbf{x}_{\perp} \cos \phi+(\mathbf{u} \times \mathbf{x}) \sin \phi+\mathbf{x}_{\|} \end{aligned} x=qxq=(cos2ϕ+usin2ϕ)(0+x)(cos2ϕusin2ϕ)=xcos22ϕ+(uxxu)sin2ϕcos2ϕuxusin22ϕ=xcos22ϕ+2(u×x)sin2ϕcos2ϕ(x(uu)2u(ux))sin22ϕ=x(cos22ϕsin22ϕ)+(u×x)(2sin2ϕcos2ϕ)+u(ux)(2sin22ϕ)=xcosϕ+(u×x)sinϕ+u(ux)(1cosϕ)=(xuux)cosϕ+(u×x)sinϕ+uux=xcosϕ+(u×x)sinϕ+x


2.4 旋转矩阵与四元数

无论向量 x\mathbf{x}x 是用四元数进行旋转,还是旋转矩阵进行旋转,旋转后的结果都是一致的,则有:
q⊗x⊗q∗=Rx\mathbf{q}\otimes\mathbf{x}\otimes\mathbf{q}^*=\mathbf{R}\mathbf{x}qxq=Rx

因此可以得到四元数到旋转矩阵的转换关系为:
R=[qw2+qx2−qy2−qz22(qxqy−qwqz)2(qxqz+qwqy)2(qxqy+qwqz)qw2−qx2+qy2−qz22(qyqz−qwqx)2(qxqz−qwqy)2(qyqz+qwqx)qw2−qx2−qy2+qz2]\mathbf{R}=\left[\begin{array}{ccc} q_{w}^{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] R=qw2+qx2qy2qz22(qxqy+qwqz)2(qxqzqwqy)2(qxqyqwqz)qw2qx2+qy2qz22(qyqz+qwqx)2(qxqz+qwqy)2(qyqzqwqx)qw2qx2qy2+qz2

为了书写方便,旋转矩阵也可以写成
R=(qw2−qv⊤qv)I+2qvqv⊤+2qw[qv]×\mathbf{R}=(q_w^2-\mathbf{q}_v^{\top}\mathbf{q}_v)\mathbf{I}+2\mathbf{q}_v\mathbf{q}_v^{\top}+2\mathbf{q}_w[\mathbf{q}_v]_{\times}R=(qw2qvqv)I+2qvqv+2qw[qv]×

旋转矩阵 R\mathbf{R}R 和四元数 q\mathbf{q}q 总结如下表所示。
在这里插入图片描述


3. 李群扰动导数

3.1 李群加减运算符

在实数空间 Rn\mathbb{R}^{n}Rn 中,加减运算符使用 +,−+,-+, 表示。但是在李群 SO(3)SO(3)SO(3) 上,定义的加减运算符为 ⊕,⊖\oplus, \ominus,

加法运算为:S=R⊕θ≜R∘Exp⁡(θ)R,S∈SO(3),θ∈R3\mathrm{S}=\mathrm{R} \oplus \boldsymbol{\theta} \triangleq \mathrm{R} \circ \operatorname{Exp}(\boldsymbol{\theta}) \quad \mathrm{R}, \mathrm{S} \in S O(3), \boldsymbol{\theta} \in \mathbb{R}^{3}S=RθRExp(θ)R,SSO(3),θR3

可以发现运算符满足任意 SO(3)SO(3)SO(3) 的表示,对于四元数可旋转矩阵,可以写成:
qS=qR⊕θ=qR⊗Exp⁡(θ)RS=RR⊕θ=RR⋅Exp⁡(θ)\begin{aligned} \mathbf{q}_{\mathrm{S}} &=\mathbf{q}_{\mathrm{R}} \oplus \boldsymbol{\theta}=\mathbf{q}_{\mathrm{R}} \otimes \operatorname{Exp}(\boldsymbol{\theta}) \\ \mathbf{R}_{\mathrm{S}} &=\mathbf{R}_{\mathrm{R}} \oplus \boldsymbol{\theta}=\mathbf{R}_{\mathrm{R}} \cdot \operatorname{Exp}(\boldsymbol{\theta}) \end{aligned} qSRS=qRθ=qRExp(θ)=RRθ=RRExp(θ)

减法运算为:
θ=S⊖R≜log⁡(R−1∘S)R,S∈SO(3),θ∈R3\boldsymbol{\theta}=\mathrm{S} \ominus \mathrm{R} \triangleq \log \left(\mathrm{R}^{-1} \circ \mathrm{S}\right) \quad \mathrm{R}, \mathrm{S} \in S O(3), \boldsymbol{\theta} \in \mathbb{R}^{3} θ=SRlog(R1S)R,SSO(3),θR3

对于旋转矩阵和四元数,其减法运算为:
θ=qs⊖qR=log⁡(qR∗⊗qS)θ=Rs⊖RR=log⁡(RR⊤RS)\begin{array}{l} \boldsymbol{\theta}=\mathbf{q}_{\mathrm{s}} \ominus \mathbf{q}_{\mathrm{R}}=\log \left(\mathbf{q}_{R}^{*} \otimes \mathbf{q}_{\mathrm{S}}\right) \\ \boldsymbol{\theta}=\mathbf{R}_{\mathrm{s}} \ominus \mathbf{R}_{\mathrm{R}}=\log \left(\mathbf{R}_{\mathrm{R}}^{\top} \mathbf{R}_{\mathrm{S}}\right) \end{array} θ=qsqR=log(qRqS)θ=RsRR=log(RRRS)


3.2 李群四种导数定义

(1)向量函数与向量的导数

已知函数 f:Rm→Rnf: \mathbb{R}^{m} \rightarrow \mathbb{R}^{n}f:RmRn,则函数导数为:
∂f(x)∂x≜lim⁡δx→0f(x+δx)−f(x)δx∈Rn×m\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \triangleq \lim _{\delta \mathbf{x} \rightarrow 0} \frac{f(\mathbf{x}+\delta \mathbf{x})-f(\mathbf{x})}{\delta \mathbf{x}} \quad \in \mathbb{R}^{n \times m} xf(x)δx0limδxf(x+δx)f(x)Rn×m

则欧拉积分公式为:
f(x+Δx)≈f(x)+∂f(x)∂xΔx∈Rnf(\mathbf{x}+\Delta \mathbf{x}) \approx f(\mathbf{x})+\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \Delta \mathbf{x} \quad \in \mathbb{R}^{n} f(x+Δx)f(x)+xf(x)ΔxRn

(2)李群函数与李群的导数

已知函数 f:SO(3)→SO(3)f: SO(3) \rightarrow SO(3)f:SO(3)SO(3),则函数导数为:
∂f(R)∂θ≜lim⁡δθ→0f(R⊕δθ)⊖f(R)δθ∈R3×3=lim⁡δθ→0log⁡(f−1(R)f(RExp⁡(δθ)))δθ\begin{aligned} \frac{\partial f(\mathrm{R})}{\partial \boldsymbol{\theta}} & \triangleq \lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{f(\mathrm{R} \oplus \delta \boldsymbol{\theta}) \ominus f(\mathrm{R})}{\delta \boldsymbol{\theta}} & \in \mathbb{R}^{3 \times 3} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\log \left(f^{-1}(\mathrm{R}) f(\mathrm{R} \operatorname{Exp}(\delta \boldsymbol{\theta}))\right)}{\delta \boldsymbol{\theta}} \end{aligned} θf(R)δθ0limδθf(Rδθ)f(R)=δθ0limδθlog(f1(R)f(RExp(δθ)))R3×3

则欧拉积分公式为:
f(R⊕Δθ)≈f(R)⊕∂f(R)∂θΔθ≜f(R)Exp⁡(∂f(R)∂θΔθ)∈SO(3)f(\mathrm{R} \oplus \Delta \boldsymbol{\theta}) \approx f(\mathrm{R}) \oplus \frac{\partial f(\mathrm{R})}{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta} \triangleq f(\mathrm{R}) \operatorname{Exp}\left(\frac{\partial f(\mathrm{R})}{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta}\right) \quad \in S O(3) f(RΔθ)f(R)θf(R)Δθf(R)Exp(θf(R)Δθ)SO(3)

(3)李群函数与向量的导数

已知函数 f:Rm→SO(3)f: \mathbb{R}^{m} \rightarrow SO(3)f:RmSO(3),则函数导数为:
∂f(x)∂x≜lim⁡δx→0f(x+δx)⊖f(x)δx∈R3×m=lim⁡δx→0log⁡(f−1(x)f(x+δx))δx\begin{aligned} \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} & \triangleq \lim _{\delta \mathbf{x} \rightarrow 0} \frac{f(\mathbf{x}+\delta \mathbf{x}) \ominus f(\mathbf{x})}{\delta \mathbf{x}} \quad \in \mathbb{R}^{3 \times m} \\ &=\lim _{\delta \mathbf{x} \rightarrow 0} \frac{\log \left(f^{-1}(\mathbf{x}) f(\mathbf{x}+\delta \mathbf{x})\right)}{\delta \mathbf{x}} \end{aligned} xf(x)δx0limδxf(x+δx)f(x)R3×m=δx0limδxlog(f1(x)f(x+δx))

则欧拉积分公式为:
f(x+Δx)≈f(x)⊕∂f(x)∂xΔx≜f(x)Exp⁡(∂f(x)∂xΔx)∈SO(3)f(\mathbf{x}+\Delta \mathbf{x}) \approx f(\mathbf{x}) \oplus \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \Delta \mathbf{x} \triangleq f(\mathbf{x}) \operatorname{Exp}\left(\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \Delta \mathbf{x}\right) \quad \in S O(3) f(x+Δx)f(x)xf(x)Δxf(x)Exp(xf(x)Δx)SO(3)

(4)向量函数与李群的导数
已知函数 f:SO(3)→R3f: SO(3) \rightarrow \mathbb{R}^3f:SO(3)R3,则函数导数为:
∂f(R)∂θ≜lim⁡δθ→0f(R⊕δθ)−f(R)δθ=lim⁡δθ→0f(RExp⁡(δθ))−f(R)δθ\begin{aligned} \frac{\partial f(\mathrm{R})}{\partial \boldsymbol{\theta}} & \triangleq \lim _{\delta \theta \rightarrow 0} \frac{f(\mathrm{R} \oplus \delta \boldsymbol{\theta})-f(\mathrm{R})}{\delta \boldsymbol{\theta}} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{f(\mathrm{R} \operatorname{Exp}(\delta \boldsymbol{\theta}))-f(\mathrm{R})}{\delta \boldsymbol{\theta}} \end{aligned} θf(R)δθ0limδθf(Rδθ)f(R)=δθ0limδθf(RExp(δθ))f(R)

则欧拉积分公式为:
f(R⊕δθ)≈f(R)+∂f(R)∂θΔθ≜f(R)+Exp⁡(∂f(R)∂θΔθ)∈R3f(\mathrm{R} \oplus \delta \boldsymbol{\theta}) \approx f(\mathrm{R})+\frac{\partial f(\mathrm{R})}{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta} \triangleq f(\mathrm{R})+\operatorname{Exp}\left(\frac{\partial f(\mathrm{R})}{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta}\right) \quad \in \mathbb{R}^3 f(Rδθ)f(R)+θf(R)Δθf(R)+Exp(θf(R)Δθ)R3


3.3 常用旋转雅可比矩阵 (重点)

已知向量 a\mathbf{a}a,旋转角度 θ\thetaθ,旋转轴 u\mathbf{u}u,可以有三种旋转表示:θ=θu,q=q{θ},R=R{θ}\boldsymbol{\theta}=\theta\mathbf{u},\mathbf{q}=\mathbf{q}\{\boldsymbol{\theta}\},\mathbf{R}=\mathbf{R}\{\boldsymbol{\theta}\}θ=θu,q=q{θ},R=R{θ}。下面求三者各自对应的雅可比矩阵。

(1)对向量求雅可比
∂(q⊗a⊗q∗)∂a=∂(Ra)∂a=R\frac{\partial(\mathbf{q} \otimes \mathbf{a} \otimes \mathbf{q} *)}{\partial \mathbf{a}}=\frac{\partial(\mathbf{R} \mathbf{a})}{\partial \mathbf{a}}=\mathbf{R} a(qaq)=a(Ra)=R

(2)对四元数求雅可比

四元数 q=w+v\mathbf{q}=w+\mathbf{v}q=w+v,则旋转后向量 a′\mathbf{a}^{\prime}a为:

a′=q⊗a⊗q∗=(w+v)⊗a⊗(w−v)=w2a+w(v⊗a−a⊗v)−v⊗a⊗v=w2a+2w(v×a)−[(−v⊤a+v×a)⊗v]=w2a+2w(v×a)−[(−v⊤a)v+(v×a)⊗v]=w2a+2w(v×a)−[(−v⊤a)v−(v×a)⊤v+(v×a)×v]=w2a+2w(v×a)−[(−v⊤a)v+(v⊤v)a−(v⊤a)v]=w2a+2w(v×a)+2(v⊤a)v−(v⊤v)a\begin{aligned} \mathbf{a}^{\prime} &=\mathbf{q} \otimes \mathbf{a} \otimes \mathbf{q}^{*} \\ &=(w+\mathbf{v}) \otimes \mathbf{a} \otimes(w-\mathbf{v}) \\ &=w^{2} \mathbf{a}+w(\mathbf{v} \otimes \mathbf{a}-\mathbf{a} \otimes \mathbf{v})-\mathbf{v} \otimes \mathbf{a} \otimes \mathbf{v} \\ &=w^{2} \mathbf{a}+2 w(\mathbf{v} \times \mathbf{a})-\left[\left(-\mathbf{v}^{\top} \mathbf{a}+\mathbf{v} \times \mathbf{a}\right) \otimes \mathbf{v}\right] \\ &=w^{2} \mathbf{a}+2 w(\mathbf{v} \times \mathbf{a})-\left[\left(-\mathbf{v}^{\top} \mathbf{a}\right) \mathbf{v}+(\mathbf{v} \times \mathbf{a}) \otimes \mathbf{v}\right] \\ &=w^{2} \mathbf{a}+2 w(\mathbf{v} \times \mathbf{a})-\left[\left(-\mathbf{v}^{\top} \mathbf{a}\right) \mathbf{v}-(\mathbf{v} \times \mathbf{a})^{\top} \mathbf{v}+(\mathbf{v} \times \mathbf{a}) \times \mathbf{v}\right] \\ &=w^{2} \mathbf{a}+2 w(\mathbf{v} \times \mathbf{a})-\left[\left(-\mathbf{v}^{\top} \mathbf{a}\right) \mathbf{v}+\left(\mathbf{v}^{\top} \mathbf{v}\right) \mathbf{a}-\left(\mathbf{v}^{\top} \mathbf{a}\right) \mathbf{v}\right] \\ &=w^{2} \mathbf{a}+2 w(\mathbf{v} \times \mathbf{a})+2\left(\mathbf{v}^{\top} \mathbf{a}\right) \mathbf{v}-\left(\mathbf{v}^{\top} \mathbf{v}\right) \mathbf{a} \end{aligned} a=qaq=(w+v)a(wv)=w2a+w(vaav)vav=w2a+2w(v×a)[(va+v×a)v]=w2a+2w(v×a)[(va)v+(v×a)v]=w2a+2w(v×a)[(va)v(v×a)v+(v×a)×v]=w2a+2w(v×a)[(va)v+(vv)a(va)v]=w2a+2w(v×a)+2(va)v(vv)a

对实部和虚部依次求偏导为:
∂a′∂w=2(wa+v×a)∂a′∂v=−2w[a]×+2(v⊤aI+va⊤)−2av⊤=2(v⊤aI+va⊤−av⊤−w[a]×)\begin{aligned} \frac{\partial \mathbf{a}^{\prime}}{\partial w} &=2(w \mathbf{a}+\mathbf{v} \times \mathbf{a}) \\ \frac{\partial \mathbf{a}^{\prime}}{\partial \mathbf{v}} &=-2 w[\mathbf{a}]_{\times}+2\left(\mathbf{v}^{\top} \mathbf{a} \mathbf{I}+\mathbf{v} \mathbf{a}^{\top}\right)-2 \mathbf{a} \mathbf{v}^{\top} \\ &=2\left(\mathbf{v}^{\top} \mathbf{a} \mathbf{I}+\mathbf{v} \mathbf{a}^{\top}-\mathbf{a} \mathbf{v}^{\top}-w[\mathbf{a}]_{\times}\right) \end{aligned} wava=2(wa+v×a)=2w[a]×+2(vaI+va)2av=2(vaI+vaavw[a]×)

最终雅可比矩阵为:
∂(q⊗a⊗q∗)∂q=2[wa+v×a∣v⊤aI3+va⊤−av⊤−w[a]×]∈R3×4\frac{\partial(\mathbf{q} \otimes \mathbf{a} \otimes \mathbf{q} *)}{\partial \mathbf{q}}=2\left[w \mathbf{a}+\mathbf{v} \times \mathbf{a} \mid \mathbf{v}^{\top} \mathbf{a} \mathbf{I}_{3}+\mathbf{v} \mathbf{a}^{\top}-\mathbf{a} \mathbf{v}^{\top}-w[\mathbf{a}]_{\times}\right] \in \mathbb{R}^{3 \times 4} q(qaq)=2[wa+v×avaI3+vaavw[a]×]R3×4

(3)李群的右雅可比

右雅可比的矩阵可以参考下图。

已知:Exp⁡(θ)⊕δϕ=Exp⁡(θ+δθ)\operatorname{Exp}(\boldsymbol{\theta}) \oplus \delta \boldsymbol{\phi}=\operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta})Exp(θ)δϕ=Exp(θ+δθ),则 δϕ=log⁡(Exp⁡(θ)−1∘Exp⁡(θ+δθ))=Exp⁡(θ+δθ)⊖Exp⁡(θ)\delta \boldsymbol{\phi}=\log \left(\operatorname{Exp}(\boldsymbol{\theta})^{-1} \circ \operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta})\right)=\operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta}) \ominus \operatorname{Exp}(\boldsymbol{\theta})δϕ=log(Exp(θ)1Exp(θ+δθ))=Exp(θ+δθ)Exp(θ)

右雅可比矩阵计算公式为:
Jr(θ)=lim⁡δθ→0Exp⁡(θ+δθ)⊖Exp⁡(θ)δθ=lim⁡δθ→0log⁡(Exp⁡(θ)⊤Exp⁡(θ+δθ))δθif using R=lim⁡δθ→0log⁡(Exp⁡(θ)∗⊗Exp⁡(θ+δθ))δθif using q.\begin{aligned} \mathbf{J}_{r}(\boldsymbol{\theta}) &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta}) \ominus \operatorname{Exp}(\boldsymbol{\theta})}{\delta \boldsymbol{\theta}} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\log \left(\operatorname{Exp}(\boldsymbol{\theta})^{\top} \operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta})\right)}{\delta \boldsymbol{\theta}} & \text { if using } \mathbf{R} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\log \left(\operatorname{Exp}(\boldsymbol{\theta})^{*} \otimes \operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta})\right)}{\delta \boldsymbol{\theta}} & \text { if using } \mathbf{q} . \end{aligned} Jr(θ)=δθ0limδθExp(θ+δθ)Exp(θ)=δθ0limδθlog(Exp(θ)Exp(θ+δθ))=δθ0limδθlog(Exp(θ)Exp(θ+δθ)) if using R if using q.

具体形式为:
Jr(θ)=I−1−cos⁡∥θ∥∥θ∥2[θ]×+∥θ∥−sin⁡∥θ∥∥θ∥3[θ]×2Jr−1(θ)=I+12[θ]×+(1∥θ∥2−1+cos⁡∥θ∥2∥θ∥sin⁡∥θ∥)[θ]×2\begin{aligned} \mathbf{J}_{r}(\boldsymbol{\theta}) &=\mathbf{I}-\frac{1-\cos \|\boldsymbol{\theta}\|}{\|\boldsymbol{\theta}\|^{2}}[\boldsymbol{\theta}]_{\times}+\frac{\|\boldsymbol{\theta}\|-\sin \|\boldsymbol{\theta}\|}{\|\boldsymbol{\theta}\|^{3}}[\boldsymbol{\theta}]_{\times}^{2} \\ \mathbf{J}_{r}^{-1}(\boldsymbol{\theta}) &=\mathbf{I}+\frac{1}{2}[\boldsymbol{\theta}]_{\times}+\left(\frac{1}{\|\boldsymbol{\theta}\|^{2}}-\frac{1+\cos \|\boldsymbol{\theta}\|}{2\|\boldsymbol{\theta}\| \sin \|\boldsymbol{\theta}\|}\right)[\boldsymbol{\theta}]_{\times}^{2} \end{aligned} Jr(θ)Jr1(θ)=Iθ21cosθ[θ]×+θ3θsinθ[θ]×2=I+21[θ]×+(θ212θsinθ1+cosθ)[θ]×2

其中,右雅可比矩阵有如下性质:
Exp⁡(θ+δθ)≈Exp⁡(θ)Exp⁡(Jr(θ)δθ)Exp⁡(θ)Exp⁡(δθ)≈Exp⁡(θ+Jr−1(θ)δθ)log⁡(Exp⁡(θ)Exp⁡(δθ))≈θ+Jr−1(θ)δθ\begin{aligned} \operatorname{Exp}(\boldsymbol{\theta}+\delta \boldsymbol{\theta}) & \approx \operatorname{Exp}(\boldsymbol{\theta}) \operatorname{Exp}\left(\mathbf{J}_{r}(\boldsymbol{\theta}) \delta \boldsymbol{\theta}\right) \\ \operatorname{Exp}(\boldsymbol{\theta}) \operatorname{Exp}(\delta \boldsymbol{\theta}) & \approx \operatorname{Exp}\left(\boldsymbol{\theta}+\mathbf{J}_{r}^{-1}(\boldsymbol{\theta}) \delta \boldsymbol{\theta}\right) \\ \log (\operatorname{Exp}(\boldsymbol{\theta}) \operatorname{Exp}(\delta \boldsymbol{\theta})) & \approx \boldsymbol{\theta}+\mathbf{J}_{r}^{-1}(\boldsymbol{\theta}) \delta \boldsymbol{\theta} \end{aligned} Exp(θ+δθ)Exp(θ)Exp(δθ)log(Exp(θ)Exp(δθ))Exp(θ)Exp(Jr(θ)δθ)Exp(θ+Jr1(θ)δθ)θ+Jr1(θ)δθ
在这里插入图片描述

(4)对旋转向量的雅可比
∂(q⊗a⊗q∗)∂δθ=∂(Ra)∂δθ=lim⁡δθ→0R{θ+δθ}a−R{θ}aδθ=lim⁡δθ→0(R{θ}Exp⁡(Jr(θ)δθ)−R{θ})aδθ=lim⁡δθ→0(R{θ}(I+[Jr(θ)δθ]×)−R{θ})aδθ=lim⁡δθ→0R{θ}[Jr(θ)δθ]×aδθ=lim⁡δθ→0−R{θ}[a]×Jr(θ)δθδθ=−R{θ}[a]×Jr(θ)\begin{aligned} \frac{\partial\left(\mathbf{q} \otimes \mathbf{a} \otimes \mathbf{q}^{*}\right)}{\partial \delta \boldsymbol{\theta}}=\frac{\partial(\mathbf{R} \mathbf{a})}{\partial \delta \boldsymbol{\theta}} &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\mathbf{R}\{\boldsymbol{\theta}+\delta \boldsymbol{\theta}\} \mathbf{a}-\mathbf{R}\{\boldsymbol{\theta}\} \mathbf{a}}{\delta \boldsymbol{\theta}} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\left(\mathbf{R}\{\boldsymbol{\theta}\} \operatorname{Exp}\left(\mathbf{J}_{r}(\boldsymbol{\theta}) \delta \boldsymbol{\theta}\right)-\mathbf{R}\{\boldsymbol{\theta}\}\right) \mathbf{a}}{\delta \boldsymbol{\theta}} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\left(\mathbf{R}\{\boldsymbol{\theta}\}\left(\mathbf{I}+\left[\mathbf{J}_{r}(\boldsymbol{\theta}) \delta \boldsymbol{\theta}\right]_{\times}\right)-\mathbf{R}\{\boldsymbol{\theta}\}\right) \mathbf{a}}{\delta \boldsymbol{\theta}} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0} \frac{\mathbf{R}\{\boldsymbol{\theta}\}\left[\mathbf{J}_{r}(\boldsymbol{\theta}) \delta \boldsymbol{\theta}\right]_{\times} \mathbf{a}}{\delta \boldsymbol{\theta}} \\ &=\lim _{\delta \boldsymbol{\theta} \rightarrow 0}-\frac{\mathbf{R}\{\boldsymbol{\theta}\}[\mathbf{a}]_{\times} \mathbf{J}_{r}(\boldsymbol{\theta}) \delta \boldsymbol{\theta}}{\delta \boldsymbol{\theta}} \\ &=-\mathbf{R}\{\boldsymbol{\theta}\}[\mathbf{a}]_{\times} \mathbf{J}_{r}(\boldsymbol{\theta}) \end{aligned} δθ(qaq)=δθ(Ra)=δθ0limδθR{θ+δθ}aR{θ}a=δθ0limδθ(R{θ}Exp(Jr(θ)δθ)R{θ})a=δθ0limδθ(R{θ}(I+[Jr(θ)δθ]×)R{θ})a=δθ0limδθR{θ}[Jr(θ)δθ]×a=δθ0limδθR{θ}[a]×Jr(θ)δθ=R{θ}[a]×Jr(θ)


3.4 四元数导数

四元数导数为:
q˙≜lim⁡Δt→0q(t+Δt)−q(t)Δt=lim⁡Δt→0q⊗ΔqL−qΔt=lim⁡Δt→0q⊗([112ΔϕL]−[10])Δt=lim⁡Δt→0q⊗([012ΔϕL]Δt=12q⊗[0ωL]\begin{aligned} \dot{\mathbf{q}} & \triangleq \lim _{\Delta t \rightarrow 0} \frac{\mathbf{q}(t+\Delta t)-\mathbf{q}(t)}{\Delta t} \\ &=\lim _{\Delta t \rightarrow 0} \frac{\mathbf{q} \otimes \Delta \mathbf{q}_{\mathcal{L}}-\mathbf{q}}{\Delta t} \\ &=\lim _{\Delta t \rightarrow 0} \frac{\mathbf{q} \otimes\left(\left[\begin{array}{c} 1 \\ \frac{1}{2} \Delta \boldsymbol{\phi}_{\mathcal{L}} \end{array}\right]-\left[\begin{array}{l} 1 \\ \mathbf{0} \end{array}\right]\right)}{\Delta t} \\ &=\lim _{\Delta t \rightarrow 0} \frac{\mathbf{q} \otimes\left(\left[\begin{array}{c} 0 \\ \frac{1}{2} \Delta \boldsymbol{\phi}_{\mathcal{L}} \end{array}\right]\right.}{\Delta t} \\ &=\frac{1}{2} \mathbf{q} \otimes\left[\begin{array}{c} 0 \\ \boldsymbol{\omega}_{\mathcal{L}} \end{array}\right] \end{aligned} q˙Δt0limΔtq(t+Δt)q(t)=Δt0limΔtqΔqLq=Δt0limΔtq([121ΔϕL][10])=Δt0limΔtq([021ΔϕL]=21q[0ωL]

定义:
Ω(ω)≜[ω]R=[0−ω⊤ω−[ω]×]=[0−ωx−ωy−ωzωx0ωz−ωyωy−ωz0ωxωzωy−ωx0]\boldsymbol{\Omega}(\boldsymbol{\omega}) \triangleq[\boldsymbol{\omega}]_{R}=\left[\begin{array}{cc} 0 & -\boldsymbol{\omega}^{\top} \\ \boldsymbol{\omega} & -[\boldsymbol{\omega}]_{\times} \end{array}\right]=\left[\begin{array}{cccc} 0 & -\omega_{x} & -\omega_{y} & -\omega_{z} \\ \omega_{x} & 0 & \omega_{z} & -\omega_{y} \\ \omega_{y} & -\omega_{z} & 0 & \omega_{x} \\ \omega_{z} & \omega_{y} & -\omega_{x} & 0 \end{array}\right] Ω(ω)[ω]R=[0ωω[ω]×]=0ωxωyωzωx0ωzωyωyωz0ωxωzωyωx0

最终得到四元数和旋转矩阵的导数公式(局部坐标):
q˙=12Ω(ωL)q=12q⊗ωL,R˙=R[ωL]×\dot{\mathbf{q}}=\frac{1}{2} \boldsymbol{\Omega}\left(\boldsymbol{\omega}_{\mathcal{L}}\right) \mathbf{q}=\frac{1}{2} \mathbf{q} \otimes \boldsymbol{\omega}_{\mathcal{L}}, \quad \dot{\mathbf{R}}=\mathbf{R}\left[\boldsymbol{\omega}_{\mathcal{L}}\right]_{\times} q˙=21Ω(ωL)q=21qωL,R˙=R[ωL]×

全局坐标下导数为:
q˙=12ωG⊗q,R˙=[ωG]×R\dot{\mathbf{q}}=\frac{1}{2} \boldsymbol{\omega}_{\mathcal{G}}\otimes\mathbf{q}, \quad \dot{\mathbf{R}}=[\boldsymbol{\omega}_{\mathcal{G}}]_{\times}\mathbf{R} q˙=21ωGq,R˙=[ωG]×R


4. IMU运动学方程

在文中作者列出了使用误差卡尔曼滤波的原因

  • 方向误差状态极小(和自由度有相同的参数数量),能够避免过度参数化以及由此产生的协方差矩阵奇异的风险。
  • 误差状态系统始终在接近原点的位置运行,因此远离可能的参数奇异性,万向节锁定问题等,从而保证了线性化有效性始终不变
  • 误差状态量始终很小,这意味着所有二阶项都可以忽略不计。 这使得 Jacobian 的计算非常容易和快速。
  • 误差状态量动态变化缓慢,因为所有的 large-signal 动态变化已经被包含在名义状态里了。因此,在卡尔曼滤波过程中,相较于预测过程,可以以更低的频率来执行更新过程

在文中作者对误差状态卡尔曼滤波还做了如下解释:

  • 在误差状态卡尔曼滤波中,会讨论到三种状态量:真值状态,名义状态和误差状态,真值状态由名义状态和误差状态组合表示(如线性组合,四元数乘积或矩阵乘积方式等)。其思想是将名义状态视为 large-signal(以非线性方式可积分),将误差状态视为 small-signal(线性可积分并适用于线性高斯滤波)
  • 在使用 IMU 进行定位时,高频 IMU 数据 um\mathbf{u_m}um 被积分到名义状态 x\mathbf{x}x 中。名义状态未考虑噪声 w\mathbf{w}w,结果它会积累误差。误差状态 δx\delta \mathbf{x}δx 通过误差状态卡尔曼滤波进行估计,包含了所有的噪声和扰动。误差状态由小幅度的信号组成,其更新函数由线性动态系统定义,其动态、控制和测量矩阵均由名义状态的值计算得出。误差状态卡尔曼修正是在其它传感器信息(例如GPS,视觉等)到达时执行的。

4.1 局部坐标系统连续时刻微分方程

下表是误差状态卡尔曼滤波中使用到的所有变量,需要注意的时:这里的方向误差 δq\delta\mathbf{q}δq 是定义在局部坐标下的。后面会再给出全局坐标下的方向计算公式。
在这里插入图片描述

4.1.1 真值状态微分方程

首先介绍真值状态微分方程
p˙t=vtv˙t=atq˙t=12qt⊗ωta˙bt=awω˙bt=ωwg˙t=0\begin{aligned} \dot{\mathrm{p}}_{t} &=\mathbf{v}_{t} \\ \dot{\mathbf{v}}_{t} &=\mathbf{a}_{t} \\ \dot{\mathbf{q}}_{t} &=\frac{1}{2} \mathbf{q}_{t} \otimes \boldsymbol{\omega}_{t} \\ \dot{\mathbf{a}}_{b t} &=\mathbf{a}_{w} \\ \dot{\boldsymbol{\omega}}_{b t} &=\boldsymbol{\omega}_{w} \\ \dot{\mathbf{g}}_{t} &=0 \end{aligned} p˙tv˙tq˙ta˙btω˙btg˙t=vt=at=21qtωt=aw=ωw=0

其中,加速度真值 at\mathbf{a}_tat,角速度真值 ωt\mathbf{\omega_t}ωt 可以从 IMU 中获得,IMU测量值 am\mathbf{a}_mamωm\mathbf{\omega}_mωm 分别为:
am=Rt⊤(at−gt)+abt+anωm=ωt+ωbt+ωn\begin{aligned} \mathbf{a}_{m} &=\mathbf{R}_{t}^{\top}\left(\mathbf{a}_{t}-\mathbf{g}_{t}\right)+\mathbf{a}_{b t}+\mathbf{a}_{n} \\ \boldsymbol{\omega}_{m} &=\boldsymbol{\omega}_{t}+\boldsymbol{\omega}_{b t}+\boldsymbol{\omega}_{n} \end{aligned} amωm=Rt(atgt)+abt+an=ωt+ωbt+ωn

对上面两个方程进行移项变换,可以得到真值 at\mathbf{a}_tatωt\mathbf{\omega_t}ωt 为:
at=Rt(am−abt−an)+gtωt=ωm−ωbt−ωn\begin{aligned} \mathbf{a}_{t} &=\mathbf{R}_{t}\left(\mathbf{a}_{m}-\mathbf{a}_{b t}-\mathbf{a}_{n}\right)+\mathbf{g}_{t} \\ \boldsymbol{\omega}_{t} &=\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b t}-\boldsymbol{\omega}_{n} \end{aligned} atωt=Rt(amabtan)+gt=ωmωbtωn

最终,真值状态微分方程为:
p˙t=vtv˙t=Rt(am−abt−an)+gtq˙t=12qt⊗(ωm−ωbt−ωn)a˙bt=awω˙bt=ωwg˙t=0\begin{aligned} \dot{\mathbf{p}}_{t} &=\mathbf{v}_{t} \\ \dot{\mathbf{v}}_{t} &=\mathbf{R}_{t}\left(\mathbf{a}_{m}-\mathbf{a}_{b t}-\mathbf{a}_{n}\right)+\mathbf{g}_{t} \\ \dot{\mathbf{q}}_{t} &=\frac{1}{2} \mathbf{q}_{t} \otimes\left(\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b t}-\boldsymbol{\omega}_{n}\right) \\ \dot{\mathbf{a}}_{b t} &=\mathbf{a}_{w} \\ \dot{\boldsymbol{\omega}}_{b t} &=\boldsymbol{\omega}_{w} \\ \dot{\mathbf{g}}_{t} &=0 \end{aligned} p˙tv˙tq˙ta˙btω˙btg˙t=vt=Rt(amabtan)+gt=21qt(ωmωbtωn)=aw=ωw=0


4.1.2 名义状态微分方程

由于名义状态不包含误差和扰动项,可以直接得到其微分方程为:
p˙=vv˙=R(am−ab)+gq˙=12q⊗(ωm−ωb)a˙b=0ω˙b=0g˙=0\begin{aligned} \dot{\mathbf{p}} &=\mathbf{v} \\ \dot{\mathbf{v}} &=\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)+\mathbf{g} \\ \dot{\mathbf{q}} &=\frac{1}{2} \mathbf{q} \otimes\left(\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right) \\ \dot{\mathbf{a}}_{b} &=0 \\ \dot{\boldsymbol{\omega}}_{b} &=0 \\ \dot{\mathrm{g}} &=0 \end{aligned} p˙v˙q˙a˙bω˙bg˙=v=R(amab)+g=21q(ωmωb)=0=0=0


4.1.3 误差状态微分方程

在忽略二阶项后,这里先给出误差状态的线性微分方程。这里重点是速度误差状态量 δv{\delta\mathbf{v}}δv方向误差状态量 δθ\delta\boldsymbol{\theta}δθ 微分方程的推导。
δp˙=δvδv˙=−R[am−ab]×δθ−Rδab+δg−Ranδθ˙=−[ωm−ωb]×δθ−δωb−ωnδa˙b=awδω˙b=ωwδg˙=0\begin{aligned} \dot{\delta\mathbf{p}} &=\delta \mathbf{v} \\ \dot{\delta \mathbf{v}} &=-\mathbf{R}\left[\mathbf{a}_{m}-\mathbf{a}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\mathbf{R} \delta \mathbf{a}_{b}+\delta \mathbf{g}-\mathbf{R a}_{n} \\ \dot{\delta\boldsymbol{\theta}} &=-\left[\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\delta \boldsymbol{\omega}_{b}-\boldsymbol{\omega}_{n} \\ \dot{\delta\mathbf{a}}_{b} &=\mathbf{a}_{w} \\ \dot{\delta\boldsymbol{\omega}}_{b} &=\boldsymbol{\omega}_{w} \\ \dot{\delta \mathbf{g}} &=0 \\ \end{aligned} δp˙δv˙δθ˙δa˙bδω˙bδg˙=δv=R[amab]×δθRδab+δgRan=[ωmωb]×δθδωbωn=aw=ωw=0

(1)速度误差状态量微分方程

在推导 速度误差状态微分方程 时先给出两个基本方程:
Rt=R(I+[δθ]×)+O(∥δθ∥2)v˙=RaB+g\begin{aligned} \mathbf{R}_{t} &=\mathbf{R}\left(\mathbf{I}+[\delta \boldsymbol{\theta}]_{\times}\right)+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right) \\ \dot{\mathbf{v}} &=\mathbf{R a}_{\mathcal{B}}+\mathbf{g} \end{aligned} Rtv˙=R(I+[δθ]×)+O(δθ2)=RaB+g

由表3可知:Rt=RδR\mathbf{R}_{t}=\mathbf{R} \delta \mathbf{R}Rt=RδR,同时 δR=e[δθ]×\delta \mathbf{R}=e^{[\delta \boldsymbol{\theta}]_{\times}}δR=e[δθ]×,泰勒展开保留二阶项即可得到 Rt\mathbf{R}_tRt。这里引入两个变量:a⁡B\operatorname{a}_{\mathcal{B}}aB 是载体坐标下加速度large-signal值δaB\delta \mathbf{a}_{\mathcal{B}}δaBsamll-signal值

a⁡B\operatorname{a}_{\mathcal{B}}aBδaB\delta \mathbf{a}_{\mathcal{B}}δaB方程为:
aB≜am−abδaB≜−δab−an\begin{array}{c} \mathbf{a}_{\mathcal{B}} \triangleq \mathbf{a}_{m}-\mathbf{a}_{b} \\ \delta \mathbf{a}_{\mathcal{B}} \triangleq-\delta \mathbf{a}_{b}-\mathbf{a}_{n} \end{array} aBamabδaBδaban

代入上式,可得真值状态 at\mathbf{a}_tat 为:
at=Rt(am−abt−an)+gt=Rt(am−an−(ab+δab))+gt=Rt(aB+δaB)+g+δg\begin{aligned} \mathbf{a}_{t} &=\mathbf{R}_{t}\left(\mathbf{a}_{m}-\mathbf{a}_{b t}-\mathbf{a}_{n}\right)+\mathbf{g}_{t} \\ &= \mathbf{R}_{t}(\mathbf{a}_{m} -\mathbf{a}_{n} - (\mathbf{a}_{b} + \delta \mathbf{a}_{\mathcal{b}})) + \mathbf{g}_{t} \\ &= \mathbf{R}_{t}\left(\mathbf{a}_{\mathcal{B}}+\delta \mathbf{a}_{\mathcal{B}}\right)+\mathbf{g}+\delta \mathbf{g}\end{aligned}at=Rt(amabtan)+gt=Rt(aman(ab+δab))+gt=Rt(aB+δaB)+g+δg

现在用两种形式来表示v˙t\dot \mathbf{v}_tv˙t
v˙+δv˙=v˙t=Rt(am−abt−an)+gt\dot{\mathbf{v}}+\dot{\delta \mathbf{v}}=\dot{\mathbf{v}}_{t}=\mathbf{R}_{t}\left(\mathbf{a}_{m}-\mathbf{a}_{b t}-\mathbf{a}_{n}\right)+\mathbf{g}_{t} v˙+δv˙=v˙t=Rt(amabtan)+gt

可得:
v˙+δv˙=v˙t=R(I+[δθ]×)(aB+δaB)+g+δg\dot{\mathbf{v}}+\dot{\delta \mathbf{v}}=\dot{\mathbf{v}}_{t}=\mathbf{R}\left(\mathbf{I}+[\delta \boldsymbol{\theta}]_{\times}\right)\left(\mathbf{a}_{\mathcal{B}}+\delta \mathbf{a}_{\mathcal{B}}\right)+\mathbf{g}+\delta \mathbf{g}v˙+δv˙=v˙t=R(I+[δθ]×)(aB+δaB)+g+δg

对上式右边进行展开可得:
RaB+g+δv˙=v˙t=RaB+RδaB+R[δθ]×aB+R[δθ]×δaB+g+δg\mathbf{R a}_{\mathcal{B}}+\mathbf{g}+\dot{\delta \mathbf{v}}=\dot{\mathbf{v}}_{t}=\mathbf{R a}_{\mathcal{B}}+\mathbf{R} \delta \mathbf{a}_{\mathcal{B}}+\mathbf{R}[\delta \boldsymbol{\theta}]_{\times} \mathbf{a}_{\mathcal{B}}+\mathbf{R}[\delta \boldsymbol{\theta}]_{\times} \delta \mathbf{a}_{\mathcal{B}}+\mathbf{g}+\delta \mathbf{g}RaB+g+δv˙=v˙t=RaB+RδaB+R[δθ]×aB+R[δθ]×δaB+g+δg

两边消除相同项 RaB+g\mathbf{R a}_{\mathcal{B}}+\mathbf{g}RaB+g,可得 δv˙\dot {\delta \mathbf{v}}δv˙ 为:
δv˙=R(δaB+[δθ]×aB)+R[δθ]×δaB+δg\dot{\delta \mathbf{v}}=\mathbf{R}\left(\delta \mathbf{a}_{\mathcal{B}}+[\delta \boldsymbol{\theta}]_{\times} \mathbf{a}_{\mathcal{B}}\right)+\mathbf{R}[\delta \boldsymbol{\theta}]_{\times} \delta \mathbf{a}_{\mathcal{B}}+\delta \mathbf{g}δv˙=R(δaB+[δθ]×aB)+R[δθ]×δaB+δg

忽略上式中的二阶项,且已知 [a]×b=−[b]×a[\mathbf{a}]_{\times} \mathbf{b}=-[\mathbf{b}]_{\times} \mathbf{a}[a]×b=[b]×a,可得:
δv˙=R(δaB−[aB]×δθ)+δg\dot{\delta \mathbf{v}}=\mathbf{R}\left(\delta \mathbf{a}_{\mathcal{B}}-\left[\mathbf{a}_{\mathcal{B}}\right]_{\times} \delta \boldsymbol{\theta}\right)+\delta \mathbf{g}δv˙=R(δaB[aB]×δθ)+δg

最终可得:
δv˙=R(−[am−ab]×δθ−δab−an)+δg\dot{\delta \mathbf{v}}=\mathbf{R}\left(-\left[\mathbf{a}_{m}-\mathbf{a}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\delta \mathbf{a}_{b}-\mathbf{a}_{n}\right)+\delta \mathbf{g}δv˙=R([amab]×δθδaban)+δg

对上式进行整理,最终可得速度误差状态量的微分方程为
δv˙=−R[am−ab]×δθ−Rδab+δg−Ran\dot{\delta \mathbf{v}}=-\mathbf{R}\left[\mathbf{a}_{m}-\mathbf{a}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\mathbf{R} \delta \mathbf{a}_{b}+\delta \mathbf{g}-\mathbf{R} \mathbf{a}_{n}δv˙=R[amab]×δθRδab+δgRan

(2)方向误差状态量微分方程

同样地在推导 方向误差状态量微分方程 时也先给出两个基本方程,下面是真值状态名义状态四元数的微分方程:
q˙t=12qt⊗ωtq˙=12q⊗ω\begin{aligned} \dot{\mathbf{q}}_{t} &=\frac{1}{2} \mathbf{q}_{t} \otimes \boldsymbol{\omega}_{t} \\ \dot{\mathbf{q}} &=\frac{1}{2} \mathbf{q} \otimes \boldsymbol{\omega} \end{aligned} q˙tq˙=21qtωt=21qω

这里也引入角速度的 large-signalsmall-signal 值,其表达式为:
ω≜ωm−ωbδω≜−δωb−ωn\begin{array}{c} \boldsymbol{\omega} \triangleq \boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b} \\ \delta\boldsymbol{\omega} \triangleq -\delta\boldsymbol{\omega}_{b}-\boldsymbol{\omega}_{n} \end{array} ωωmωbδωδωbωn

因此,角速度真值可以写为:
ωt=ω+δω\boldsymbol{\omega_{t}}=\boldsymbol{\omega}+\delta \boldsymbol{\omega} ωt=ω+δω

也使用两种形式来表示 q˙t\dot \mathbf{q}_tq˙t
q⊗˙δq=q˙t=12qt⊗ωt\mathbf{q}\dot{\otimes} \delta \mathbf{q}=\dot{\mathbf{q}}_{t}=\frac{1}{2} \mathbf{q}_{t} \otimes \omega_{t}q˙δq=q˙t=21qtωt

上式两边同时展开可得:
q˙⊗δq+q⊗δq˙=q˙t=12q⊗δq⊗ωt\dot{\mathbf{q}} \otimes \delta \mathbf{q}+\mathbf{q} \otimes \dot{\delta \mathbf{q}}=\dot \mathbf{q}_t=\frac{1}{2} \mathbf{q} \otimes \delta \mathbf{q} \otimes \boldsymbol{\omega}_{t}q˙δq+qδq˙=q˙t=21qδqωt

等式左边进一步展开可得:
12q⊗ω⊗δq+q⊗δq˙=q˙t=12q⊗δq⊗ωt\frac{1}{2} \mathbf{q} \otimes \boldsymbol{\omega} \otimes \delta \mathbf{q}+\mathbf{q} \otimes \dot{\delta \mathbf{q}}=\dot \mathbf{q}_t=\frac{1}{2} \mathbf{q} \otimes \delta \mathbf{q} \otimes \boldsymbol{\omega}_{t}21qωδq+qδq˙=q˙t=21qδqωt

上式移项合并可得:
q⊗δq˙=12q⊗δq⊗ωt−12q⊗ω⊗δq=12q⊗(δq⊗ωt−ω⊗δq)\mathbf{q} \otimes \dot{\delta \mathbf{q}}=\frac{1}{2} \mathbf{q} \otimes \delta \mathbf{q} \otimes \boldsymbol{\omega}_{t} - \frac{1}{2} \mathbf{q} \otimes \boldsymbol{\omega} \otimes \delta \mathbf{q} =\frac{1}{2} \mathbf{q} \otimes( \delta \mathbf{q} \otimes \boldsymbol{\omega}_{t} - \boldsymbol{\omega} \otimes \delta \mathbf{q})qδq˙=21qδqωt21qωδq=21q(δqωtωδq)

两边消除同类项可得:
2δq˙=δq⊗ωt−ω⊗δq2 \dot{\delta \mathbf{q}}= \delta \mathbf{q} \otimes \boldsymbol{\omega}_{t} - \boldsymbol{\omega} \otimes \delta \mathbf{q}2δq˙=δqωtωδq

且已知 δq=eδθ/2\delta \mathbf{q}=e^{\delta \boldsymbol{\theta} / 2}δq=eδθ/2,则 [0δ˙θ]=2δq˙\left[\begin{array}{c}0 \\\dot{\delta} \boldsymbol{\theta}\end{array}\right]=2 \dot{\delta \mathbf{q}}[0δ˙θ]=2δq˙,代入上式可得:
[0δ˙θ]=2δq˙=δq⊗ωt−ω⊗δq\left[\begin{array}{c}0 \\\dot{\delta} \boldsymbol{\theta}\end{array}\right] = 2 \dot{\delta \mathbf{q}} = \delta \mathbf{q} \otimes \boldsymbol{\omega}_{t} - \boldsymbol{\omega} \otimes \delta \mathbf{q}[0δ˙θ]=2δq˙=δqωtωδq

根据四元数矩阵乘法,可得:
[0δ˙θ]=[q]R(ωt)δq−[q]L(ω)δq=([q]R(ωt)−[q]L(ω))δq\left[\begin{array}{c}0 \\\dot{\delta} \boldsymbol{\theta}\end{array}\right] = [\mathbf{q}]_{R}\left(\boldsymbol{\omega}_{t}\right) \delta \mathbf{q}-[\mathbf{q}]_{L}(\boldsymbol{\omega}) \delta \mathbf{q}= ( [\mathbf{q}]_{R}\left(\boldsymbol{\omega}_{t}\right)-[\mathbf{q}]_{L}(\boldsymbol{\omega}))\delta \mathbf{q}[0δ˙θ]=[q]R(ωt)δq[q]L(ω)δq=([q]R(ωt)[q]L(ω))δq

将四元数转换为矩阵表示,可知:
[q]R(ωt)=[0−(ωt)⊤(ωt)−[ωt]×][\mathbf{q}]_{R}\left(\boldsymbol{\omega}_{t}\right) = \left[\begin{array}{cc}0 & -\left(\boldsymbol{\omega}_{t}\right)^{\top} \\(\boldsymbol{\omega}_{t}) & -\left[\boldsymbol{\omega}_{t}\right]_{\times}\end{array}\right] [q]R(ωt)=[0(ωt)(ωt)[ωt]×]
[q]L(ω)=[0−(ω)⊤(ω)[ω]×][\mathbf{q}]_{L}\left(\boldsymbol{\omega}\right) = \left[\begin{array}{cc}0 & -\left(\boldsymbol{\omega}\right)^{\top} \\\left(\boldsymbol{\omega}\right) & \left[\boldsymbol{\omega}\right]_{\times}\end{array}\right] [q]L(ω)=[0(ω)(ω)[ω]×]

带入上式可得:
[0δ˙θ]=[0−(ωt−ω)⊤(ωt−ω)−[ωt+ω]×][1δθ/2]+O(∥δθ∥2)\left[\begin{array}{c}0 \\\dot{\delta} \boldsymbol{\theta}\end{array}\right] =\left[\begin{array}{cc}0 & -\left(\boldsymbol{\omega}_{t}-\boldsymbol{\omega}\right)^{\top} \\\left(\boldsymbol{\omega}_{t}-\boldsymbol{\omega}\right) & -\left[\boldsymbol{\omega}_{t}+\boldsymbol{\omega}\right]_{\times}\end{array}\right]\left[\begin{array}{c}1 \\\delta \boldsymbol{\theta} / 2\end{array}\right]+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right)[0δ˙θ]=[0(ωtω)(ωtω)[ωt+ω]×][1δθ/2]+O(δθ2)

根据 ωt=ω+δω\omega_{t}=\boldsymbol{\omega}+\delta \boldsymbol{\omega}ωt=ω+δω,上式进一步处理为:

[0δ˙θ]=[0−δω⊤δω−[2ω+δω]×][1δθ/2]+O(∥δθ∥2)\left[\begin{array}{c}0 \\\dot{\delta} \boldsymbol{\theta}\end{array}\right] =\left[\begin{array}{cc}0 & -\delta \boldsymbol{\omega}^{\top} \\\delta \boldsymbol{\omega} & -[2 \boldsymbol{\omega}+\delta \boldsymbol{\omega}]_{\times}\end{array}\right]\left[\begin{array}{c}1 \\\delta \boldsymbol{\theta} / 2\end{array}\right]+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right)[0δ˙θ]=[0δωδω[2ω+δω]×][1δθ/2]+O(δθ2)

最后可得 δθ˙=δω−[ω]×δθ−12[δω]×δθ+O(∥δθ∥2)\dot{\delta \boldsymbol{\theta}}=\delta \boldsymbol{\omega}-[\boldsymbol{\omega}]_{\times} \delta \boldsymbol{\theta}-\frac{1}{2}[\delta \boldsymbol{\omega}]_{\times} \delta \boldsymbol{\theta}+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right)δθ˙=δω[ω]×δθ21[δω]×δθ+O(δθ2),忽略掉二阶项,可得:δ˙θ=−[ω]×δθ+δω\dot{\delta} \boldsymbol{\theta}=-[\boldsymbol{\omega}]_{\times} \delta \boldsymbol{\theta}+\delta \boldsymbol{\omega}δ˙θ=[ω]×δθ+δω

最终可得方向误差状态微分方程为:
δ˙θ=−[ωm−ωb]×δθ−δωb−ωn\dot{\delta} \boldsymbol{\theta}=-\left[\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\delta \boldsymbol{\omega}_{b}-\boldsymbol{\omega}_{n}δ˙θ=[ωmωb]×δθδωbωn


4.2 全局坐标系统连续时微分方程

上一节中 方向误差状态量是在局部坐标系下定义的,本节将给出全局坐标系下误差状态微分方程。在全局坐标系下,方向四元数真值为:
qt=δq⊗q\mathbf{q}_{t}=\delta \mathbf{q} \otimes \mathbf{q} qt=δqq
上式证明过程如下:设在局部坐标系下方向误差项为 δqL\delta \mathbf{q}_{L}δqLq\mathbf{q}q 为局部坐标到全局坐标的旋转四元数,则在全局坐标下的方向误差为:
δqG=q⊗δqL⊗q∗\delta\mathbf{q}_{G} = \mathbf{q} \otimes\delta \mathbf{q}_L \otimes \mathbf{q}^*δqG=qδqLq已知在局部坐标下方向误差真值为:qt=q⊗δqL\mathbf{q}_{t}=\mathbf{q} \otimes \delta\mathbf{q}_Lqt=qδqL,代入上式可得:qt=q⊗q∗⊗δqG⊗q=δqG⊗q\mathbf{q}_{t}=\mathbf{q} \otimes \mathbf{q}^*\otimes\delta\mathbf{q}_G\otimes\mathbf{q}=\delta\mathbf{q}_G\otimes\mathbf{q}qt=qqδqGq=δqGq,证明完毕。

与局部坐标下误差状态量微分方程相比,只有速度误差状态量和方向误差状态量微分方程不同,下面将给出推导过程。


(1)速度误差状态量微分方程

在推导速度误差状态微分方程时这里也给出两个基本方程:

Rt=(I+[δθ]×)R+O(∥δθ∥2)v˙=RaB+g\begin{aligned} \mathbf{R}_{t} &=(\mathbf{I}+[\delta \boldsymbol{\theta}]_{\times})\mathbf{R}+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right) \\ \dot{\mathbf{v}} &=\mathbf{R a}_{\mathcal{B}}+\mathbf{g} \end{aligned} Rtv˙=(I+[δθ]×)R+O(δθ2)=RaB+g

全局坐标下 Rt=δR⋅R\mathbf{R}_{t} = \delta \mathbf{R} \cdot \mathbf{R}Rt=δRR,同时 δR=e[δθ]×\delta \mathbf{R}=e^{[\delta \boldsymbol{\theta}]_{\times}}δR=e[δθ]×

这里同样引入两个变量:aB\mathbf{a}_{\mathcal{B}}aB 是载体坐标下加速度large-signal值δaB\delta \mathbf{a}_{\mathcal{B}}δaBsamll-signal值

同样的,也用两种形式来表示v˙t\dot \mathbf{v}_tv˙t
v˙+δv˙=v˙t=(I+[δθ]×)R(aB+δaB)+g+δg\dot{\mathbf{v}}+\dot{\delta \mathbf{v}}=\dot{\mathbf{v}}_{t}=\left(\mathbf{I}+[\delta \boldsymbol{\theta}]_{\times}\right) \mathbf{R}\left(\mathbf{a}_{\mathcal{B}}+\delta \mathbf{a}_{\mathcal{B}}\right)+\mathbf{g}+\delta \mathbf{g}v˙+δv˙=v˙t=(I+[δθ]×)R(aB+δaB)+g+δg

同时对上式进行展开可得:
RaB+g+δv˙=RaB+RδaB+[δθ]×RaB+[δθ]×RδaB+g+δg\mathbf{R a}_{\mathcal{B}}+\mathbf{g}+\dot{\delta \mathbf{v}}=\mathbf{R} \mathbf{a}_{\mathcal{B}}+\mathbf{R} \delta \mathbf{a}_{\mathcal{B}}+[\delta \boldsymbol{\theta}]_{\times} \mathbf{R} \mathbf{a}_{\mathcal{B}}+[\delta \boldsymbol{\theta}]_{\times} \mathbf{R} \delta \mathbf{a}_{\mathcal{B}}+\mathbf{g}+\delta \mathbf{g}RaB+g+δv˙=RaB+RδaB+[δθ]×RaB+[δθ]×RδaB+g+δg

两边消除相同项 RaB+g\mathbf{R a}_{\mathcal{B}}+\mathbf{g}RaB+g,可得 δv˙\dot {\delta \mathbf{v}}δv˙ 为:
δv˙=RδaB+[δθ]×RaB+[δθ]×RδaB+δg\dot{\delta \mathbf{v}}=\mathbf{R}\delta \mathbf{a}_{\mathcal{B}} + [\delta \boldsymbol{\theta}]_{\times} \mathbf{R}\mathbf{a}_{\mathcal{B}}+[\delta \boldsymbol{\theta}]_{\times}\mathbf{R} \delta \mathbf{a}_{\mathcal{B}}+\delta \mathbf{g}δv˙=RδaB+[δθ]×RaB+[δθ]×RδaB+δg

消除上式中的二阶项,且已知 [a]×b=−[b]×a[\mathbf{a}]_{\times} \mathbf{b}=-[\mathbf{b}]_{\times} \mathbf{a}[a]×b=[b]×a,可得:
δv˙=RδaB−[RaB]×δθ+δg\dot{\delta \mathbf{v}}=\mathbf{R} \delta \mathbf{a}_{\mathcal{B}}-\left[\mathbf{R} \mathbf{a}_{\mathcal{B}}\right]_{\times} \delta \boldsymbol{\theta}+\delta \mathbf{g}δv˙=RδaB[RaB]×δθ+δg

最终可得全局坐标系下 速度误差状态量的微分方程
δv˙=−[R(am−ab)]×δθ−Rδab+δg−Ran\dot{\delta \mathbf{v}}=-\left[\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)\right]_{\times} \delta \boldsymbol{\theta}-\mathbf{R} \delta \mathbf{a}_{b}+\delta \mathbf{g}-\mathbf{R} \mathbf{a}_{n}δv˙=[R(amab)]×δθRδab+δgRan

(2)方向误差状态量微分方程

和局部坐标下推导一样,真值状态和名义状态四元数微分方程为:
q˙t=12qt⊗ωtq˙=12q⊗ω\begin{aligned} \dot{\mathbf{q}}_{t} &=\frac{1}{2} \mathbf{q}_{t} \otimes \boldsymbol{\omega}_{t} \\ \dot{\mathbf{q}} &=\frac{1}{2} \mathbf{q} \otimes \boldsymbol{\omega} \end{aligned} q˙tq˙=21qtωt=21qω

现在也使用两种形式来表示q˙t\dot \mathbf{q}_tq˙t,但记住这里使用的是全局坐标下的方向误差

(δq⊗q)˙=q˙t=12qt⊗ωt\dot{(\delta \mathbf{q} \otimes \mathbf{q})} = \dot{\mathbf{q}}_{t}=\frac{1}{2} \mathbf{q}_{t} \otimes \omega_{t} (δqq)˙=q˙t=21qtωt

上式两边同时展开可得:
δq˙⊗q+δq⊗q˙=12δq⊗q⊗ωt\dot{\delta \mathbf{q}} \otimes \mathbf{q}+\delta \mathbf{q} \otimes \dot{\mathbf{q}}=\frac{1}{2} \delta \mathbf{q} \otimes \mathbf{q} \otimes \boldsymbol{\omega}_{t} δq˙q+δqq˙=21δqqωt

进一步展开可得:

δq˙⊗q+12δq⊗q⊗ω=12δq⊗q⊗ωt\dot{\delta \mathbf{q}} \otimes \mathbf{q}+\frac{1}{2} \delta \mathbf{q} \otimes \mathbf{q} \otimes \boldsymbol{\omega}=\frac{1}{2} \delta \mathbf{q} \otimes \mathbf{q} \otimes \boldsymbol{\omega}_{t}δq˙q+21δqqω=21δqqωt

根据 ωt=ω+δω\boldsymbol{\omega}_{t}=\boldsymbol{\omega}+\delta \boldsymbol{\omega}ωt=ω+δω,移项可得:
δq˙⊗q=12δq⊗q⊗δω\dot{\delta \mathbf{q}} \otimes \mathbf{q}=\frac{1}{2} \delta \mathbf{q} \otimes \mathbf{q} \otimes \delta \boldsymbol{\omega} δq˙q=21δqqδω

上式两边右乘q∗\mathbf{q}^{*}q,可得:
δq˙=12δq⊗q⊗δω⊗q∗=12δq⊗(Rδω)=12δq⊗δωG\begin{aligned}\dot{\delta \mathbf{q}} &=\frac{1}{2} \delta \mathbf{q} \otimes \mathbf{q} \otimes \delta \boldsymbol{\omega} \otimes \mathbf{q}^{*} \\&=\frac{1}{2} \delta \mathbf{q} \otimes(\mathbf{R} \delta \boldsymbol{\omega}) \\&=\frac{1}{2} \delta \mathbf{q} \otimes \delta \boldsymbol{\omega}_{G}\end{aligned} δq˙=21δqqδωq=21δq(Rδω)=21δqδωG

且已知 δq=eδθ/2\delta \mathbf{q}=e^{\delta \boldsymbol{\theta} / 2}δq=eδθ/2,则 [0δ˙θ]=2δq˙\left[\begin{array}{c}0 \\\dot{\delta} \boldsymbol{\theta}\end{array}\right]=2 \dot{\delta \mathbf{q}}[0δ˙θ]=2δq˙,代入上式可得:
[0δθ˙]=2δq˙=δq⊗δωG=Ω(δωG)δq=[0−δωG⊤δωG−[δωG]×][1δθ/2]+O(∥δθ∥2)\begin{aligned}\left[\begin{array}{c}0 \\\dot{\delta \boldsymbol{\theta}}\end{array}\right] = 2 \dot{\delta\mathbf{q}}&=\delta \mathbf{q} \otimes \delta \boldsymbol{\omega}_{G} =\Omega\left(\delta \boldsymbol{\omega}_{G}\right) \delta \mathbf{q} =\left[\begin{array}{cc}0 & -\delta \boldsymbol{\omega}_{G}^{\top} \\\delta \boldsymbol{\omega}_{G}&-\left[\delta \boldsymbol{\omega}_{G}\right]_{\times}\end{array}\right]\left[\begin{array}{c}1 \\\delta \boldsymbol{\theta} / 2\end{array}\right]+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right)\end{aligned} [0δθ˙]=2δq˙=δqδωG=Ω(δωG)δq=[0δωGδωG[δωG]×][1δθ/2]+O(δθ2)

最后可得 δθ˙=δωG−12[δωG]×δθ+O(∥δθ∥2)\dot{\delta \boldsymbol{\theta}}=\delta \boldsymbol{\omega}_{G}-\frac{1}{2}\left[\delta \boldsymbol{\omega}_{G}\right]_{\times} \delta \boldsymbol{\theta}+O\left(\|\delta \boldsymbol{\theta}\|^{2}\right)δθ˙=δωG21[δωG]×δθ+O(δθ2),忽略掉二阶项,可得:δ˙θ=δωG=Rδω\dot{\delta} \boldsymbol{\theta}=\delta \boldsymbol{\omega}_{G}=\mathbf{R} \delta \boldsymbol{\omega}δ˙θ=δωG=Rδω。最终全局坐标系下方向误差状态微分方程为:
δθ˙=−Rδωb−Rωn\dot{\delta \boldsymbol{\theta}}=-\mathbf{R} \delta \boldsymbol{\omega}_{b}-\mathbf{R} \boldsymbol{\omega}_{n} δθ˙=RδωbRωn


4.3 全局坐标系统离散时刻运动学

(1)名义状态量运动学方程

根据名义状态量微分方程,可以得到名义状态运动学方程:
p←p+vΔt+12(R(am−ab)+g)Δt2v←v+(R(am−ab)+g)Δtq←q⊗{(ωm−ωb)Δt}ab←abωb←ωbg←g\begin{aligned} {\mathbf{p}} &\leftarrow\mathbf{p} +\mathbf{v}\Delta t+\frac{1}{2}(\mathbf{R}(\mathbf{a}_m-\mathbf{a}_b)+\mathbf{g})\Delta t^2\\ {\mathbf{v}} &\leftarrow\mathbf{v} +(\mathbf{R}(\mathbf{a}_m-\mathbf{a}_b)+\mathbf{g})\Delta t \\ {\mathbf{q}} &\leftarrow\mathbf{q} \otimes \{(\boldsymbol{\omega}_m-\boldsymbol{\omega}_b)\Delta t\} \\ \mathbf{a}_b &\leftarrow \mathbf{a}_b \\ \boldsymbol{\omega}_b &\leftarrow \boldsymbol{\omega}_b \\ \mathbf{g}&\leftarrow\mathbf{g} \end{aligned} pvqabωbgp+vΔt+21(R(amab)+g)Δt2v+(R(amab)+g)Δtq{(ωmωb)Δt}abωbg

(2)误差状态量运动学方程

根据前面两小节的推导,误差状态量运动学方程为:
δp←p+δvΔtδv←v+(−[R(am−ab)]×δθ−Rδab+δg)Δt+viδθ←δθ−RδωbΔt+θiδab←δab+aiδωb←δωb+ωiδg←δg\begin{aligned} \delta{\mathbf{p}} &\leftarrow\mathbf{p} +\delta\mathbf{v}\Delta t \\ \delta{\mathbf{v}} &\leftarrow\mathbf{v} +(-\left[\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)\right]_{\times} \delta \boldsymbol{\theta}-\mathbf{R} \delta \mathbf{a}_{b}+\delta \mathbf{g})\Delta t +\mathbf{v}_{\mathbf{i}}\\ \delta{\boldsymbol{\theta}} &\leftarrow\delta{\boldsymbol{\theta}} -\mathbf{R}\delta\boldsymbol{\omega}_b\Delta t+\boldsymbol{\theta}_{\mathbf{i}} \\ \delta\mathbf{a}_b &\leftarrow \delta\mathbf{a}_b +\mathbf{a}_{\mathbf{i}}\\ \delta\boldsymbol{\omega}_b &\leftarrow \delta\boldsymbol{\omega}_b+\boldsymbol{\omega}_{\mathbf{i}} \\ \delta\mathbf{g}&\leftarrow\delta\mathbf{g} \end{aligned} δpδvδθδabδωbδgp+δvΔtv+([R(amab)]×δθRδab+δg)Δt+viδθRδωbΔt+θiδab+aiδωb+ωiδg

其中,vi,θi,ai,ωi\mathbf{v}_{\mathbf{i}},\boldsymbol{\theta}_{\mathbf{i}},\mathbf{a}_{\mathbf{i}},\boldsymbol{\omega}_{\mathbf{i}}viθiaiωi 是输入高斯白噪声:
Vi=σa~n2Δt2I[m2/s2]Θi=σω~n2Δt2I[rad2]Ai=σaw2ΔtI[m2/s4]Ωi=σωw2ΔtI[rad2/s2]\begin{aligned} \mathbf{V}_{\mathbf{i}} &=\sigma_{\tilde{\mathbf{a}}_{n}}^{2} \Delta t^{2} \mathbf{I} &\left[m^{2} / s^{2}\right] \\ \Theta_{\mathbf{i}} &=\sigma_{\tilde{\omega}_{n}}^{2} \Delta t^{2} \mathbf{I} &\left[\mathrm{rad}^{2}\right] \\ \mathbf{A}_{\mathbf{i}} &=\sigma_{\mathbf{a}_{w}}^{2} \Delta t \mathbf{I} &\left[\mathrm{m}^{2} / \mathrm{s}^{4}\right] \\ \Omega_{\mathbf{i}} &=\sigma_{\boldsymbol{\omega}_{w}}^{2} \Delta t \mathbf{I} &\left[\mathrm{rad}^{2} / \mathrm{s}^{2}\right] \end{aligned} ViΘiAiΩi=σa~n2Δt2I=σω~n2Δt2I=σaw2ΔtI=σωw2ΔtI[m2/s2][rad2][m2/s4][rad2/s2]


5. IMU/GPS融合定位

5.1 融合定位预测

现在来看一个实例,即IMU/GPS融合定位。关于IMU/GPS融合定位的工作原理可以查看博文:动手学无人驾驶(6):基于IMU和GPS数据融合的自车定位。

卡尔曼滤波中,首先给出系统的名义状态变量 x\mathbf{x}x,误差状态量 δx\delta\mathbf{x}δx,输入为 um\mathbf{u}_mum,噪声为 i\mathbf{i}i
x=[pvqabωbg],δx=[δpδvδθδabδωbδg],um=[amωm],i=[viθiaiωi]\mathbf{x}=\left[\begin{array}{c} \mathbf{p} \\ \mathbf{v} \\ \mathbf{q} \\ \mathbf{a}_{b} \\ \boldsymbol{\omega}_{b} \\ \mathbf{g} \end{array}\right], \quad \delta \mathbf{x}=\left[\begin{array}{c} \delta \mathbf{p} \\ \delta \mathbf{v} \\ \delta \boldsymbol{\theta} \\ \delta \mathbf{a}_{b} \\ \delta \boldsymbol{\omega}_{b} \\ \delta \mathbf{g} \end{array}\right], \quad \mathbf{u}_{m}=\left[\begin{array}{c} \mathbf{a}_{m} \\ \boldsymbol{\omega}_{m} \end{array}\right], \quad \mathbf{i}=\left[\begin{array}{c} \mathbf{v}_{\mathbf{i}} \\ \boldsymbol{\theta}_{\mathbf{i}} \\ \mathbf{a}_{\mathbf{i}} \\ \boldsymbol{\omega}_{\mathbf{i}} \end{array}\right] x=pvqabωbg,δx=δpδvδθδabδωbδg,um=[amωm],i=viθiaiωi

ESKF 预测方程可以写为:
δ^x←Fx(x,um)⋅δ^xP←FxPFx⊤+FiQiFi⊤\begin{aligned} \hat{\delta} \mathbf{x} & \leftarrow \mathbf{F}_{\mathbf{x}}\left(\mathbf{x}, \mathbf{u}_{m}\right) \cdot \hat{\delta} \mathbf{x} \\ \mathbf{P} & \leftarrow \mathbf{F}_{\mathbf{x}} \mathbf{P} \mathbf{F}_{\mathbf{x}}^{\top}+\mathbf{F}_{\mathbf{i}} \mathbf{Q}_{\mathbf{i}} \mathbf{F}_{\mathbf{i}}^{\top} \end{aligned} δ^xPFx(x,um)δ^xFxPFx+FiQiFi

其中,状态转移矩阵 Fx\mathbf{F}_{\mathbf{x}}Fx为:
Fx=[IIΔt00000I−[R(am−ab)]×Δt−RΔt0IΔt00I0−RΔt0000I000000I000000I].\mathbf{F}_{\mathbf{x}}=\left[\begin{array}{cccccc} \mathbf{I} & \mathbf{I} \Delta t & 0 & 0 & 0 & 0 \\ 0 & \mathbf{I} & -\left[\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)\right]_{\times} \Delta t & -\mathbf{R} \Delta t & 0 & \mathbf{I} \Delta t \\ 0 & 0 & \mathbf{I} & 0 & -\mathbf{R} \Delta t & 0 \\ 0 & 0 & 0 & \mathbf{I} & 0 & 0 \\ 0 & 0 & 0 & 0 & \mathbf{I} & 0 \\ 0 & 0 & 0 & 0 & 0 & \mathbf{I} \end{array}\right] . Fx=I00000IΔtI00000[R(amab)]×ΔtI0000RΔt0I0000RΔt0I00IΔt000I.

系统输入雅可比矩阵 Fi\mathbf{F}_{\mathbf{i}}Fi 为:
Fi=[0000I0000I0000I0000I0000]\mathbf{F}_{\mathbf{i}}=\left[\begin{array}{llll} 0 & 0 & 0 & 0 \\ \mathbf{I} & 0 & 0 & 0 \\ 0 & \mathbf{I} & 0 & 0 \\ 0 & 0 & \mathbf{I} & 0 \\ 0 & 0 & 0 & \mathbf{I} \\ 0 & 0 & 0 & 0 \end{array}\right] Fi=0I000000I000000I000000I0

状态转移协方差矩阵 Qi\mathbf{Q}_{\mathbf{i}}Qi 为:
Qi=[Vi0000Θi0000Ai0000Ωi]\mathbf{Q}_{\mathbf{i}}=\left[\begin{array}{cccc} \mathbf{V}_{\mathbf{i}} & 0 & 0 & 0 \\ 0 & \Theta_{\mathbf{i}} & 0 & 0 \\ 0 & 0 & \mathbf{A}_{\mathbf{i}} & 0 \\ 0 & 0 & 0 & \boldsymbol{\Omega}_{\mathbf{i}} \end{array}\right] Qi=Vi0000Θi0000Ai0000Ωi

需要注意的是由于 δx\delta\mathbf{x}δx 初始化为0其在预测阶段一直为0因此使用名义状态量作为真值状态量


5.2 融合定位更新

回顾误差卡尔曼滤波更新步骤:
K=PH⊤(HPH⊤+V)−1δx^←K(y−h(x^t))xt^←x⊕δx^P←(I−KH)P(I−KH)⊤+KVK⊤\begin{aligned} \mathbf{K} &=\mathbf{P} \mathbf{H}^{\top}\left(\mathbf{H P H}^{\top}+\mathbf{V}\right)^{-1} \\ \hat{\delta \mathbf{x}} & \leftarrow \mathbf{K}\left(\mathbf{y}-h\left(\hat{\mathbf{x}}_{t}\right)\right) \\ \hat{\mathbf{x}_t} & \leftarrow \mathbf{x} \oplus\hat{\delta\mathbf{x}}\\ \mathbf{P} & \leftarrow(\mathbf{I}-\mathbf{K H}) \mathbf{P} (\mathbf{I}-\mathbf{K H})^{\top}+\mathbf{K}\mathbf{V}\mathbf{K}^{\top} \end{aligned} Kδx^xt^P=PH(HPH+V)1K(yh(x^t))xδx^(IKH)P(IKH)+KVK

其中,y\mathbf{y}y 是测量值,H\mathbf{H}H 是对误差状态量 δx\delta\mathbf{x}δx 的测量矩阵,由于误差状态量为0,使用名义状态量作为真值状态量。

测量矩阵H\mathbf{H}H 为:
H≜∂h∂δx∣x=∂h∂xt∣x∂xt∂δx∣x=HxXδx\left.\mathbf{H} \triangleq \frac{\partial h}{\partial \delta \mathbf{x}}\right|_{\mathbf{x}}=\left.\left.\frac{\partial h}{\partial \mathbf{x}_{t}}\right|_{\mathbf{x}} \frac{\partial \mathbf{x}_{t}}{\partial \delta \mathbf{x}}\right|_{\mathbf{x}}=\mathbf{H}_{\mathbf{x}} \mathbf{X}_{\delta \mathbf{x}} Hδxhx=xthxδxxtx=HxXδx

矩阵 Hx\mathbf{H}_\mathbf{x}Hx为 测量函数对真值状态量的雅可比矩阵,根据使用传感器的不同,其形式也不同。真值状态对误差状态矩阵 Xδx\mathbf{X}_{\delta\mathbf{x}}Xδx 为:
Xδx=[∂(p+δp)∂δp∂(v+δv)∂δv0∂(q⊗δq)∂δθ∂(ab+δab)∂δab0∂(ωb+δωb)∂δωb∂(g+δg)∂δg]\mathbf{X}_{\delta \mathbf{x}}=\left[\begin{array}{cccc}\frac{\partial(\mathbf{p}+\delta \mathbf{p})}{\partial \delta \mathbf{p}} & & & & & \\& \frac{\partial(\mathbf{v}+\delta \mathbf{v})}{\partial \delta \mathbf{v}} & & & 0& \\& & \frac{\partial(\mathbf{q} \otimes \delta \mathbf{q})}{\partial \delta \boldsymbol{\theta}} & & & \\& & & \frac{\partial\left(\mathbf{a}_{b}+\delta \mathbf{a}_{b}\right)}{\partial \delta \mathbf{a}_{b}} & & \\& 0 & && \frac{\partial\left(\boldsymbol{\omega}_{b}+\delta \boldsymbol{\omega}_{b}\right)}{\partial \delta \boldsymbol{\omega}_{b}} & \\& & & & &\frac{\partial(\mathbf{g}+\delta \mathbf{g})}{\partial \delta \mathbf{g}}\end{array}\right] Xδx=δp(p+δp)δv(v+δv)0δθ(qδq)δab(ab+δab)0δωb(ωb+δωb)δg(g+δg)

进一步简化,可得:
Xδx=[I6000Qδθ000I9]\mathbf{X}_{\delta \mathbf{x}}=\left[\begin{array}{cccc} \mathbf{I}_6 & 0& 0 \\0 &\mathbf{Q}_{\delta\boldsymbol\theta} &0 \\0&0 & \mathbf{I}_9 \end{array}\right] Xδx=I6000Qδθ000I9
其中,
Qδθ=12[−qx−qy−qzqwqz−qy−qzqwqzqy−qxqw]\mathbf{Q}_{\delta\boldsymbol\theta}=\frac{1}{2}\left[\begin{array}{cccc}-q_x &-q_y & -q_z \\ q_w &q_z&-q_y \\-q_z &q_w &q_z \\ q_y &-q_x & q_w\end{array}\right] Qδθ=21qxqwqzqyqyqzqwqxqzqyqzqw

接下来是更新状态量:
p←p+δpv←v+δvq←q{δθ^}⊗qab←ab+δabωb←ωb+δωbg←g+δg\begin{aligned} {\mathbf{p}} &\leftarrow\mathbf{p} + \delta\mathbf{p}\\ {\mathbf{v}} &\leftarrow\mathbf{v} + \delta\mathbf{v} \\ {\mathbf{q}} &\leftarrow\mathbf{q}\{\hat{\delta\boldsymbol{\theta}}\} \otimes \mathbf{q} \\ \mathbf{a}_b &\leftarrow \mathbf{a}_b + \delta\mathbf{a}_b \\ \boldsymbol{\omega}_b &\leftarrow \boldsymbol{\omega}_b +\delta\boldsymbol{\omega}_b\\ \mathbf{g}&\leftarrow\mathbf{g} + \delta\mathbf{g} \end{aligned} pvqabωbgp+δpv+δvq{δθ^}qab+δabωb+δωbg+δg

在误差卡尔曼滤波中,还需要对协方差矩阵 P\mathbf{P}P 进行重置操作:
P←GPG⊤\mathbf{P}\leftarrow\mathbf{G}\mathbf{P}\mathbf{G}^{\top} PGPG
其中,矩阵 G\mathbf{G}G
G=[I6000I+[12δθ^]×000I9]\mathbf{G}=\left[\begin{array}{cccc} \mathbf{I}_6 & 0& 0 \\0 &\mathbf{I}+[\hat{\frac{1}{2}\delta\boldsymbol{\theta}}]_{\times} &0 \\0&0 & \mathbf{I}_9 \end{array}\right] G=I6000I+[21δθ^]×000I9

局部坐标和全局坐标方向误差总结如下表4所示:
在这里插入图片描述
至此,本文介绍完毕:)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CodeForces - 789C】Functions again(最大子段和变形,dp,思维)

题干: Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandian superheroes Shean the Sheep and Stas the Giraffe were called in order to save the situation. Upon the arriving, they found that citizens are wo…

一步步编写操作系统 55 CPL和DPL入门2

接上节。 图中第132行的jmp指令,段选择子为SELECTOR_CODE,其RPL的值为RPL0,RPL0定义在include/boot.inc中,其值为0。选择子的索引部分值为1,表示对应GDT中第1个段描述符,该描述符的DPL为0,&…

详解停车位检测算法 Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark

本文介绍一篇基于深度学习的停车位检测论文:DeepPS,作者同时公开了数据集ps2.0,工作很扎实,对于入门停车位检测很有帮助,论文发表在 IEEE T-IP 2018。 项目链接为:https://cslinzhang.github.io/deepps/ 0…

Monitor(管程)是什么意思?Java中Monitor(管程)的介绍

本篇文章给大家带来的内容是关于Monitor(管程)是什么意思?Java中Monitor(管程)的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 monitor的概念 管程&#x…

详解经典GPS辅助惯性导航论文 A GPS-aided Inertial Navigation System in Direct Configuration

本文介绍一篇 IMU 和 GPS 融合的惯性导航论文,重点是理解本文提出的:Dynamical constraints update、Roll and pitch updates 和 Position and heading updates。 论文链接为:https://www.sciencedirect.com/science/article/pii/S166564231…

详解停车位检测论文:Attentional Graph Neural Network for Parking-slot Detection

本文介绍一篇注意力图神经网络用于停车位检测论文,论文已收录于 RA-L2021。在之前的基于卷积神经网络的停车位检测方法中,很少考虑停车位标记点之间的关联信息,从而导致需要复杂的后处理。在本文中,作者将环视图中的标记点看作图结…

详解3D物体检测模型 SPG: Unsupervised Domain Adaptation for 3D Object Detection via Semantic Point Generation

本文对基于激光雷达的无监督域自适应3D物体检测进行了研究,论文已收录于 ICCV2021。 在Waymo Domain Adaptation dataset上,作者发现点云质量的下降是3D物件检测器性能下降的主要原因。因此论文提出了Semantic Point Generation (SPG)方法,首…

Waymo研发经理:《自动驾驶感知前沿技术介绍》

Waymo研发经理|自动驾驶感知前沿技术介绍这是Waymo研发经理(VoxelNet作者)的一个最新分享报告:《自动驾驶感知前沿技术介绍》。在这份报告里,介绍了Waymo在自动驾驶感知中五个研究方向的最新成果。 1. Overview of the autonomous…

几种常见软件过程模型的比较

瀑布模型 瀑布模型(经典生命周期)提出了软件开发的系统化的、顺序的方法。其流 程从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供一 个完整的软件并提供持续的技术支持。 优点: 1. 强调开发的…

两篇基于语义地图的视觉定位方案:AVP-SLAM和RoadMap

本文介绍两篇使用语义地图进行视觉定位的论文,两篇论文工程性很强,值得一学。 AVP-SLAM是一篇关于自动泊车的视觉定位方案,收录于 IROS 2020。论文链接为:https://arxiv.org/abs/2007.01813,视频链接为:ht…

【51Nod - 1270】数组的最大代价(dp,思维)

题干&#xff1a; 数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai&#xff0c;都满足1 < Ai < Bi。数组A的代价定义如下&#xff1a; &#xff08;公式表示所有两个相邻元素的差的绝对值之和&#xff09; 给出数组B&…

一步步编写操作系统 56 门、调用门与RPL序 1

小弟多次想把调用门和RPL分开单独说&#xff0c;但几次尝试都没有成功&#xff0c;我发现它们之间是紧偶合、密不可分&#xff0c;RPL的产生主要是为解决系统调用时的“越权”问题&#xff0c;系统调用的实现方式中&#xff0c;以调用门和中断门最为适合。由于以后我们将用中断…

自动驾驶纯视觉3D物体检测算法

视频链接&#xff1a;https://www.shenlanxueyuan.com/open/course/112 这是Pseudo-LiDAR作者最近做的一个分享报告&#xff1a;《Pseudo-LiDAR&#xff1a;基于相机的3D物体检测算法》。在这份报告里&#xff0c;作者主要介绍了博士期间的研究成果&#xff1a;基于深度学习的…

一步步编写操作系统 57 门、调用门与RPL序 2

接上文&#xff1a; 提供了4种门的原因是&#xff0c;它们都有各自的应用环境&#xff0c;但它们都是用来实现从低特权级的代码段转向高特权级的代码段&#xff0c;咱们这里也只讨论有关特权级的功用&#xff1a; 1.调用门 call和jmp指令后接调用门选择子为参数&#xff0c;以…

Coursera自动驾驶课程第15讲:GNSS and INS Sensing for Pose Estimation

在上一讲《Coursera自动驾驶课程第14讲&#xff1a;Linear and Nonlinear Kalman Filters》 我们学习了卡尔曼滤波相关知识&#xff0c;包括&#xff1a;线性卡尔曼滤波&#xff08;KF&#xff09;、扩展卡尔曼滤波&#xff08;EKF&#xff09;、误差卡尔曼滤波&#xff08;ES-…

详解车道线检测数据集和模型 VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection

本文介绍一个新的车道线数据集 VIL-100 和检测模型 MMA-Net&#xff0c;论文已收录于 ICCV2021&#xff0c;重点是理解本文提出的 LGMA 模块&#xff0c;用于聚合局部和全局记忆特征。 论文链接&#xff1a;https://arxiv.org/abs/2108.08482 项目链接&#xff1a;https://gi…

七天入门图像分割(1):图像分割综述

最近在研究自动驾驶视觉语义地图构建&#xff0c;因为要使用到语义分割技术&#xff0c;趁此机会学习了百度飞桨的图像分割课程&#xff0c;课程蛮好的&#xff0c;收获也蛮大的。 课程地址&#xff1a;https://aistudio.baidu.com/aistudio/course/introduce/1767 1. 课程简要…

一步步编写操作系统 59 cpu的IO特权级1

在保护模式下&#xff0c;处理器中的“阶级”不仅体现在数据和代码的访问&#xff0c;还体现在指令中。 一方面将指令分级的原因是&#xff0c;有些指令的执行对计算机有着严重的影响&#xff0c;它们只有在0特权级下被执行&#xff0c;因此被称为特权指令&#xff08;Privile…

重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》

9年后重读深度学习奠基作之一&#xff1a;AlexNet【下】【论文精读】这两天偶然间在B站看了李沐博士对AlexNet论文的重新解读&#xff0c;收获满满。AlexNet是当今深度学习浪潮奠基作之一&#xff0c;发表在2012年。在视频中&#xff0c;李沐博士主要是分享了他的三步法快速读论…

一步步编写操作系统 60 cpu的IO特权级2 什么是驱动程序

用户程序可以在由操作系统加载时通过指定整个eflags设置&#xff0c;操作系统如何设置自己的IOPL呢&#xff0c;即使内核IOPL为0也得写进去eflags寄存器中才生效。可惜的是&#xff0c;没有直接读写eflags寄存器的指令&#xff0c;不过可以通过将栈中数据弹出到eflags寄存器中来…