VINS-Mono之IMU預積分,預積分誤差、協方差及誤差對狀態量雅克比矩陣的遞推方程的推導

1. 前言

本博客借鑑了崔華坤的《VINS論文推導及代碼解析》和 VINS-Mono理論學習——IMU預積分 Pre-integration (Jacobian 協方差)的內容,因爲確實寫得太好了,然後有些地方加入自己一些理解。

VINS-MONO論文中的IV-B. IMU Pre-integration介紹了IMU預積分模型,Foster的倆篇論文對IMU預積分理論進行詳細分析。

爲什麼需要對IMU進行預積分?
傳統捷聯慣性導航算法,在已知 kk 時刻下的IMU狀態量(姿態、速度和位移)情況下,利用IMU測量的線加速度和角速度,通過積分預算得到k+1k+1時刻下的狀態量。

然而在非線性優化的VIO中,各個節點的狀態量都是估計值,當算法對這些狀態量優化時,每次調整都需要在它們之間重新積分,導致絕對位姿被優化時對狀態量進行重複積分。IMU預積分的提出使得優化算法可對IMU的相對測量進行處理,使它與絕對位姿解耦,或者只要線性運算就可以進行矯正

2. IMU模型

IMU測量值包括加速度計得到的 (測量值) 線加速度at^\hat{a_{t}} 和陀螺儀得到的角加速度w^t\hat{w}_{t} 【論文式(1)】
a^t=at+bat+Rwtgw+na\hat{a}_{t}=a_{t}+b_{at}+R_{w}^{t}g^{w}+n_{a} w^t=wt+bwt+nw\hat{w}_{t}=w_{t}+b_{wt}+n_{w}其中tt下標表示在IMU的體(body)座標系下,ata_{t}wtw_{t}分別表示IMU真實的線加速度和角速度,並受到加速度偏置(bias) batb_{at}、陀螺儀偏置bwtb_{wt}和附加噪聲nan_annwn_{n_{w}}的影響。計算得到的線加速度at^\hat{a_{t}}是重力加速度和物體加速度的合矢量。
假設附加噪聲爲高斯噪聲:
na(0,σa2), na(0,σw2)n_{a}\sim(0,\sigma_{a}^{2}), \ n_{a}\sim(0,\sigma_{w}^{2}) 加速度計偏置和陀螺儀偏置被建模爲隨機遊走,其導數爲高斯分佈:【論文式(2)】
b˙at=nba, b˙wt=nbw\dot{b}_{at}=n_{ba}, \ \dot{b}_{wt}=n_{bw} nbaN(0,σba2), nbwN(0,σbw2)n_{ba}\sim N(0,\sigma_{ba}^{2}), \ n_{bw} \sim N(0, \sigma_{bw}^{2})

3. 基於世界座標系下的IMU運動模型

3.1 連續形式下的IMU運動模型

對於圖像幀kkk+1k+1, IMU body座標系對應爲bkb_{k}bk+1b_{k+1}位置、速度和姿態狀態值PVQ(Pose、Velocity、Quaternion)可以根據[tk,tk+1][t_{k}, t_{k+1}]時間間隔內的IMU測量值,在世界座標系下進行傳遞:【論文式(3)(4)】
pbk+1w=pbkw+vbkwΔtk+t[tk,tk+1](Rtw(a^tbatna)gw)dt2p^{w}_{b_{k+1}}=p^{w}_{bk}+v_{b_{k}}^{w}\Delta t_{k}+\int \int_{t\in[t_{k}, t_{k+1}]}(R_{t}^{w}(\hat{a}_{t}-b_{at}-n_{a})-g^{w})dt^{2} vbk+1w=vbkw+t[tk,tk+1](Rtw(a^tbatna)gw)dtv_{b_{k+1}}^{w}=v_{bk}^{w}+\int_{t\in[t_{k},t_{k+1}]}(R^{w}_{t}(\hat{a}_{t}-b_{at}-n_{a})-g^{w})dt qbk+1w=qbkwt[tk,tk+1]12qtbk[(w^tbwtnw)0]dt=qbkt[tk,tk+1]12Ω(w^tbwtnw)qtbkdt(1)q_{b_{k+1}}^{w} = q_{b_{k}}^{w} \otimes \int_{t\in[t_{k}, t_{k+1}]} \frac{1}{2} q_{t}^{b_{k}} \otimes \begin{bmatrix} (\hat{w}_{t}-b_{wt}-n_{w})\\ 0 \end{bmatrix}dt \\ = q_{bk} \otimes \int_{t\in[t_{k}, t_{k+1}]} \frac{1}{2} \Omega (\hat{w}_{t}-b_{wt}-n_{w})q_{t}^{bk}dt \tag{1} Ω(w)=[[w]×wwT0], [w]×=[0wzwywz0wxwywx0]\Omega(w)=\begin{bmatrix} -[w]_{\times} & w\\ -w^{T}& 0 \end{bmatrix}, \ [w]_{\times} = \begin{bmatrix} 0 & -w_{z} & w_{y}\\ w_{z} & 0 & -w_{x}\\ -w_{y} & w_{x} & 0 \end{bmatrix}其中 Δtk\Delta t_{k}[tk,tk+1][t_{k}, t_{k+1}]之間的時間間隔,RtwR_{t}^{w}爲t時刻IMU body座標系到世界座標系的旋轉矩陣,qtbkq_{t}^{bk}爲用四元素表示的 tt 時刻從IMU body座標系到 kk 時刻IMU body座標系的旋轉,這裏的四元素實部在後,虛部在前, 爲了與論文保持一致。這裏的Ω(w)\Omega(w)表示四元素右乘。


關於公式(1)(1)的推導,這裏首先引入四元素左乘右乘及導數定理:
根據《視覺SLAM14講》3.4.2 的四元數乘法,我們引入左乘和右乘符號如下:
qaqb=R(qb)qa=[sbzbybxbzbsbxbybybxbsbzbxbybzbsb][xayazasa]=L(qa)qb=[sazayaxazasaxayayaxasazaxayazasa][xbybzbsb]q_{a} \otimes q_{b} = R(q_{b})q_{a} = \begin{bmatrix} s_{b} & z_{b} & -y_{b} & x_{b}\\ -z_{b} & s_{b} & x_{b} & y_{b}\\ y_{b}& -x_{b} & s_{b} & z_{b}\\ -x_{b}& -y_{b} & -z_{b} & s_{b} \end{bmatrix}\begin{bmatrix} x_{a}\\ y_{a}\\ z_{a}\\ s_{a} \end{bmatrix} \\ = L(q_{a})q_{b} = \begin{bmatrix} s_{a} & -z_{a} & y_{a} & x_{a}\\ z_{a} & s_{a} & -x_{a} & y_{a}\\ -y_{a}& x_{a} & s_{a} & z_{a}\\ -x_{a}& -y_{a} & -z_{a} & s_{a} \end{bmatrix}\begin{bmatrix} x_{b}\\ y_{b}\\ z_{b}\\ s_{b} \end{bmatrix}
爲了簡化,令q=[x y z s]=[w s]q=[x \ y \ z \ s] = [w \ s], 則有:
R(q)=Ω(w)+sI4×4=[[w]×wwT0]+sI4×4R(q) = \Omega(w)+sI_{4\times4} = \begin{bmatrix} -[w]_{\times} & w\\ -w^{T}& 0 \end{bmatrix} + sI_{4\times4} L(q)=Ψ(w)+sI4×4=[[w]×wwT0]+sI4×4L(q) = \Psi(w)+sI_{4\times4} = \begin{bmatrix} [w]_{\times} & w\\ -w^{T}& 0 \end{bmatrix} + sI_{4\times4}
對於四元素的求導,我們定義qtq_{t}tt時刻下的單位四元素(這裏的四元素實部在後,虛部在前),wwqtq_{t}確定的角速度,則關於qtq_{t}的導數爲: q˙t=12[[w]×wwT0]qt=12Ω(w)qt=12R([w0])qt=12qt[w0]\dot{q}_{t} = \frac{1}{2} \begin{bmatrix} -[w]_{\times} & w\\ -w^{T}& 0 \end{bmatrix}q_{t} = \frac{1}{2}\Omega(w)q_{t}=\frac{1}{2}R(\begin{bmatrix} w\\ 0 \end{bmatrix})q_{t} = \frac{1}{2}q_{t} \otimes \begin{bmatrix} w\\ 0 \end{bmatrix}

當看到q˙=12R([0w])qt=12qt[0w]\dot{q} = \frac{1}{2}\mathcal{R}(\begin{bmatrix} 0 \\ w \end{bmatrix}) q_{t}= \frac{1}{2} q_{t} \otimes \begin{bmatrix} 0 \\ w \end{bmatrix} 說明該四元素實部在前,虛部在後,只是表示不同而已。

因此對於IMU連續形式下的旋轉狀態(用四元素表示)推導,我們有:
qbk+1w=qbkwqbk+1bk=qbkwt[tk,tk+1]qt˙bkdt=qbkwt[tk,tk+1]12qtbk[wtbk0]dt=qbkwt[tk,tk+1]12qtbk[wt^bwtnw0]dt==qbkt[tk,tk+1]12Ω(w^tbwtnw)qtbkdtq_{b_{k+1}^{w}}=q_{b_{k}}^{w} \otimes q_{b_{k+1}}^{b_{k}} = q_{b_{k}}^{w} \otimes \int _{t\in [t_{k}, t_{k+1}]} \dot{q_{t}}^{b_{k}} dt = q_{bk}^{w} \otimes \int_{t\in[t_{k}, t_{k+1}]} \frac{1}{2} q_{t}^{b_{k}}\otimes \begin{bmatrix} w_{t}^{b_{k}}\\ 0\end{bmatrix}dt \\ =q_{b_{k}}^{w} \otimes \int_{t \in [t_{k}, t_{k+1}]} \frac{1}{2}q_{t}^{b_{k}} \otimes \begin{bmatrix} \hat{w_{t}}-b_{wt}-n_{w}\\ 0\end{bmatrix} dt \\ = = q_{bk} \otimes \int_{t\in[t_{k}, t_{k+1}]} \frac{1}{2} \Omega (\hat{w}_{t}-b_{wt}-n_{w})q_{t}^{bk}dt


3.2 離散形式下的IMU運動模型

3.2.1 歐拉法離散形式

使用歐拉法,即k+1k+1時刻的位姿是用第kk時刻的測量值a^bk\hat{a}_{b_{k}}, w^bk\hat{w}_{b_{k}}來計算的:
pbk+1w=pbkw+vbkwΔtk+12a^bkδt2p^{w}_{b_{k+1}} = p_{b_{k}}^{w} + v_{b_{k}}^{w} \Delta t_{k} + \frac{1}{2}\hat{a}_{b_{k}}\delta t^{2} vbk+1w=vbkw+a^bkδtv_{b_{k+1}}^{w} = v_{b_{k}}^{w} + \hat{a}_{b_{k}} \delta t qbk+1w=qbkw[112w^bkδt]q^{w}_{b_{k+1}} = q^{w}_{b_{k}} \otimes \begin{bmatrix} 1\\ \frac{1}{2}\hat{w}_{b_{k}}\delta t \end{bmatrix} 其中 a^bk=qbkw(abkbak)gw\hat{a}_{b_{k}} = q_{b_{k}}^{w}(a_{b_{k}}-b_{ak})-g^{w}w^bk=wbkbwk\hat{w}_{b_{k}} = w_{b_{k}}-b_{wk}

3.2.2 中值法離散形式

使用中值法,即k+1k+1時刻的位姿是用倆個時刻kkk+1k+1測量值aa, ww的平均值來計算的:
pbk+1w=pbkw+vbkwΔtk+12a^ˉtδt2p^{w}_{b_{k+1}} = p_{b_{k}}^{w} + v_{b_{k}}^{w} \Delta t_{k} + \frac{1}{2}\bar{\hat{a}}_{t}\delta t^{2} vbk+1w=vbkw+a^ˉtδtv_{b_{k+1}}^{w} = v_{b_{k}}^{w} + \bar{\hat{a}}_{t} \delta t qbk+1w=qbkw[112w^ˉtδt]q^{w}_{b_{k+1}} = q^{w}_{b_{k}} \otimes \begin{bmatrix} 1\\ \frac{1}{2}\bar{\hat{w}}_{t}\delta t \end{bmatrix} 其中 a^ˉt=12[qbkw(abkbak)gw+qbk+1w(abk+1bak+1)gw]\bar{\hat{a}}_{t} = \frac{1}{2}[q_{b_{k}}^{w}(a_{b_{k}}-b_{ak})-g^{w} + q_{b_{k+1}}^{w}(a_{b_{k+1}}-b_{ak+1})-g^{w}]w^ˉt=12(wbkbwk+wbk+1bwk+1)=12(wbk+wbk)bwk\bar{\hat{w}}_{t} = \frac{1}{2}(w_{b_{k}}-b_{wk}+w_{b_{k+1}}-b_{wk+1}) \\ = \frac{1}{2}(w_{b_{k}}+w_{b_{k}})-b_{w{k}} 假設在短時間內加速度計和陀螺儀的偏置不變,則有:bak=bak+1, bwk=bwk+1b_{ak}=b_{ak+1}, \ b_{wk} = b_{wk+1}

4.IMU預積分 (基於第K幀IMU body座標系下的運動模型)

通過公式(1)(1)可以看到,IMU 的積分需要依賴與第 kk 幀的 vvRR (基於世界座標系下的),當我們在後端進行非線性優化時,需要迭代更新第 kk 幀的 vvRR,這將導致我們需要根據每次迭代後的值重新進行積分,這將非常耗時。我們考慮將優化變量從第 kk 幀到第 k+1k+1 幀的 IMU 積分項中分離開來。

4.1 連續形式下的IMU運動模型

IMU預積分的思想就是將參考座標系從世界座標系ww調整爲第kk幀的IMU body座標系bkb_{k}下,可通過在等式倆端同時乘以RwbkR^{b_{k}}_{w}得到:【論文式[5][6]】
Rwbkpbk+1w=Rwbk(pbkw+vbkwΔtk12gwΔtk2)+αbk+1bkR^{b_{k}}_{w}p^{w}_{b_{k+1}}=R^{b_{k}}_{w}(p_{b_{k}}^{w}+v^{w}_{b_{k}}\Delta t_{k}-\frac{1}{2}g^{w}\Delta t_{k}^{2}) + \alpha^{b_{k}}_{b_{k+1}} Rwbkvbk+1w=Rwbk(vbkwgwΔtk)+βbk+1bkR^{b_{k}}_{w}v_{b_{k+1}}^{w} = R_{w}^{b_{k}}(v_{b_{k}}^{w}-g^{w}\Delta t_{k})+\beta^{b_{k}}_{b_{k+1}} qwbkqbk+1w=γbk+1bk(2)q_{w}^{b_{k}} \otimes q_{b_{k+1}}^{w} = \gamma _{b_{k+1}} ^{b_{k}} \tag{2}
其中 αbk+1bk=t[tk,tk+1]Rtbk(a^tbatna)dt2\alpha^{b_{k}}_{b_{k+1}} = \int \int _{t\in [t_{k}, t_{k+1}]} R_{t}^{b_{k}} (\hat{a}_{t}-b_{at}-n_{a}) dt^{2} βbk+1bk=t[tk,tk+1]Rtbk(a^tbatna)dt\beta_{b_{k+1}}^{b_{k}} = \int _{t\in [t_{k}, t_{k+1}]}R_{t}^{b_{k}}(\hat{a}_{t}-b_{at}-n_{a})dt γbk+1=t[tk,tk+1]12Ω(w^tbwtnw)γtbkdt\gamma_{b_{k+1}} = \int _{t \in [t_{k}, t_{k+1}]} \frac{1}{2} \Omega(\hat{w}_{t}-b_{wt}-n_{w}) \gamma_{t}^{b_{k}}dt

此時的積分結果αbk+1bk\alpha^{b_{k}}_{b_{k+1}}βbk+1bk\beta^{b_{k}}_{b_{k+1}}γbk+1bk\gamma^{b_{k}}_{b_{k+1}}可以理解爲bk+1b_{k+1}bkb_{k}的相對運動量,bkb_{k}的狀態並不會對其產生影響,因此將其作爲非線性優化變量,可以避免狀態的重複傳遞

注意,這是在假設IMU偏置bab_{a}bwb_{w}已經確定的情況下,實際上偏置也是需要優化的變量,那麼每次迭代時,bab_{a}bwb_{w}發生改變,得重新根據公式求得所有幀之間的IMU預積分。

當偏置變換很小時,可以將αbk+1bk\alpha_{b_{k+1}}^{b_{k}}βbk+1bk\beta_{b_{k+1}}^{b_{k}}γbk+1bk\gamma_{b_{k+1}}^{b_{k}}按其偏置的一階近似來調整,否則就進行重新傳遞。【論文式[12]】(這部分只是拋出一個概念,後面會講爲什麼這樣寫)
αbk+1bkα^bk+1bk+Jbaαδba+Jbwαδbw\alpha_{b_{k+1}}^{b_{k}} \approx \hat{\alpha}_{b_{k+1}}^{b_{k}} + J_{b_{a}}^{ \alpha} \delta b_{a} + J_{b_{w}}^{ \alpha} \delta b_{w} βbk+1bkβ^bk+1bk+Jbaβδba+Jbwβδbw\beta_{b_{k+1}}^{b_{k}} \approx \hat{\beta}_{b_{k+1}}^{b_{k}} + J_{b_{a}}^{ \beta} \delta b_{a} + J_{b_{w}}^{ \beta} \delta b_{w} γbk+1bkγ^bk+1bk[112Jbwγδbw]\gamma_{b_{k+1}}^{b_{k}} \approx \hat{\gamma}_{b_{k+1}}^{b_{k}} \begin{bmatrix} 1 \\ \frac{1}{2}J_{b_{w}}^{\gamma}\delta b_{w} \end{bmatrix}

4.2 離散形式下的IMU運動模型

4.2.1 兩幀之間 PVQ 增量的歐拉法離散形式

歐拉法給出第i時刻與第i+1時刻的預積分量估計值的關係: 【論文式[7]】
α^i+1bk=α^ibk+β^ibkδt+12R(γ^ibk)(a^ibai)δt2\hat{\alpha}^{b_{k}}_{i+1} = \hat{\alpha}^{b_{k}}_{i} + \hat{\beta}_{i}^{b_{k}}\delta t + \frac{1}{2} R(\hat{\gamma}_{i}^{b_{k}})(\hat{a}_{i}-b_{ai})\delta t^{2} β^i+1bk=β^ibk+12R(γ^ibk)(a^ibai)δt\hat{\beta}^{b_{k}}_{i+1} = \hat{\beta}^{b_{k}}_{i} + \frac{1}{2} R(\hat{\gamma}_{i}^{b_{k}})(\hat{a}_{i}-b_{ai})\delta t γ^i+1bk=γ^ibkγ^i+1i=γ^ibk[112(w^ibwi)δt]\hat{\gamma}^{b_{k}}_{i+1} = \hat{\gamma}^{b_{k}}_{i} \otimes \hat{\gamma}^{i}_{i+1} = \hat{\gamma}^{b_{k}}_{i} \otimes \begin{bmatrix} 1\\ \frac{1}{2}(\hat{w}_{i}-b_{wi})\delta t \end{bmatrix}
其中ii[tk,tk+1][t_{k}, t_{k+1}]之間的離散時間

4.2.2 兩幀之間 PVQ 增量的中值法離散形式

代碼中採用的基於中值法的 IMU 預積分公式,這在Estimator::processIMU()函數 和IntegrationBase::push_back()函數中得以實現,注意這裏積分出來的是前後兩幀之間的 IMU 增量信息。
α^i+1bk=α^ibk+β^ibkδt+12a^ˉiδt2\hat{\alpha}^{b_{k}}_{i+1} = \hat{\alpha}^{b_{k}}_{i} + \hat{\beta}_{i}^{b_{k}}\delta t+ \frac{1}{2} \bar{\hat{a}}_{i}\delta t^{2} β^i+1bk=β^ibk+a^ˉiδt\hat{\beta}^{b_{k}}_{i+1} = \hat{\beta}^{b_{k}}_{i} + \bar{\hat{a}}_{i}\delta t γ^i+1bk=γ^ibkγ^i+1i=γ^ibk[112w^ˉiδt]\hat{\gamma}^{b_{k}}_{i+1} = \hat{\gamma}^{b_{k}}_{i} \otimes \hat{\gamma}^{i}_{i+1} = \hat{\gamma}^{b_{k}}_{i} \otimes \begin{bmatrix} 1\\ \frac{1}{2} \bar{\hat{w}}_{i}\delta t \end{bmatrix} 其中 a^ˉt=12[qi(a^ibi)+qi+1(a^i+1bai)]\bar{\hat{a}}_{t} = \frac{1}{2}[q_{i}(\hat{a}_{i}-b_{i}) + q_{i+1}(\hat{a}_{i+1}-b_{ai})] w^ˉi=12(w^i+w^i+1)bwi\bar{\hat{w}}_{i} = \frac{1}{2}(\hat w_{i} + \hat w_{i+1})-b_{wi}
初始狀態下αbkbk\alpha_{b_{k}}^{b_{k}}βbkbk\beta_{b_{k}}^{b_{k}}爲0, γbkbk\gamma_{b_{k}}^{b_{k}}爲單位四元素,nan_{a}nwn_{w}被視爲0,ii爲在[k,k+1][k, k+1]中IMU測量值的某一時刻,δt\delta t爲IMU測量值iii+1i+1之間的時間間隔。

5. 非線性方程的誤差遞推方程

5.1 一段時間內多個IMU數據積分形成的預積分量的協方差計算

一個 IMU 數據作爲測量值的噪聲方差我們能夠標定。現在,一段時間內多個 IMU 數據積分形成的預積分量的方差呢?

要推導預積分量的協方差,需要知道IMU噪聲和預積分量之間的線性遞推關係。

假設已知了相鄰時刻誤差的線性傳遞方程:
ηik+1=Fkηik+Gknk\eta_{ik+1} = F_{k}\eta_{ik} + G_{k}n_{k}其中ηik\eta_{ik}爲狀態量誤差且ηik=[δθik,δvik,δpik]\eta_{ik}=[\delta\theta_{ik}, \delta v_{ik}, \delta p_{ik}]nkn_{k}爲測量噪聲且nk=[nkg,nkg]n_{k}=[n_{k}^{g}, n_{k}^{g}]
可以看出誤差的傳遞由倆部分組成:當前時刻的誤差傳遞給下一時刻,當前時刻測量噪聲傳遞給下一時刻

5.2 非線性方程的誤差遞推方程推導

通常對於狀態量之間的遞推關係是非線性的方程如xk+1=f(xk,uk)x_{k+1} = f(x_{k}, u_{k}),其中狀態量xxuu爲系統的輸入量。

可以用倆種方法來推導狀態誤差傳遞的線性遞推關係:

  • 一種是基於一階泰勒展開的誤差遞推方程
  • 一種是基於誤差隨時間變化的遞推方程 (論文是基於誤差隨時間變化來推導的)

5.2.1 基於一階泰勒展開的誤差遞推方程

令狀態量爲x^=x+δx\hat{x} = x +\delta x,其中x^\hat{x}表示計算得到的值,帶有誤差,真值爲xx,誤差爲δx\delta x。另外,輸入量uu的噪聲爲nn
應用一階泰勒展開(EKF的協方差預測也是用了泰勒展開),非線性系統x^k+1=f(x^k,u^k)\hat{x}_{k+1}=f(\hat{x}_{k},\hat{u}_{k})的狀態誤差的線性遞推關係爲:
δxk+1=Fδxk+Gnk\delta x_{k+1} = F\delta x_{k}+Gn_{k} 其中,F是狀態量xk+1x_{k+1}對狀態量xkx_{k}的雅克比矩陣,G是狀態量xk+1x_{k+1}對輸入量uku_{k}的雅克比矩陣。

證明:對非線性狀態方程進行一階泰勒展開有:
x^k+1=f(x^k,u^k)\hat{x}_{k+1} = f(\hat{x}_{k}, \hat{u}_{k}) xk+1+δxk+1=f(xk+δxk,uk+nk)x_{k+1}+\delta x_{k+1} = f(x_{k} + \delta x_{k}, u_{k} + n_{k}) xk+1+δxk+1=f(xk,uk)+Fδxk+Gnk(3)\underline{x_{k+1}}+\delta x_{k+1} = \underline{f(x_{k}, u_{k})} + F \delta x_{k} + Gn_{k} \tag{3}

5.2.2 基於誤差隨時間變化(誤差導數)的遞推方程

如果我們能夠推導狀態誤差隨時間變化的導數關係,如:
δ˙x=Aδx+Bn\dot {\delta}_{x} = A\delta x + Bn 則誤差狀態的傳遞方程爲:
δxk+1=δxk+δ˙xkΔt\delta x_{k+1} = \delta x_{k} + \dot{\delta} x_{k} \Delta t δxk+1=(I+AΔt)δxk+BΔtnk(4)\rightarrow \delta x_{k+1} = (I+A\Delta t)\delta x_{k} + B\Delta tn_{k} \tag{4}

由公式(3)(4)(3)(4)F=I+AΔtF=I+A\Delta t, G=BΔtG=B\Delta t

5.2.3 基於泰勒展開和誤差隨時間變化的方法對比

基於一階泰勒展開的誤差遞推方程不香嗎,爲什麼會用誤差隨時間的變化來進行誤差遞推方程的構建呢?

在VIO系統中,我們已經知道了狀態的導數和狀態之間的轉移矩陣,如我們已經知道速度和狀態量之間的關係:
v˙w=Rbwab+gw\dot{v}^{w} = R^{w}_{b}a^{b}+g^{w} 那我們就可以推導速度的誤差導數和狀態誤差之間的關係,在每一項上都加上各自的誤差就有:
v˙w+δ˙vw=Rbwexp([δθ]×)(ab+δab)+g+δg\dot{v}^{w}+\dot{\delta }v^{w} = R_{b}^{w}exp([\delta \theta]_{\times})(a^{b} + \delta a^{b})+g+\delta g v˙w+δ˙vw=Rbw(I+[δθ]×)(ab+δab)+g+δg\dot{v}^{w}+\dot{\delta }v^{w} = R_{b}^{w}(I+[\delta \theta]_{\times})(a^{b} + \delta a^{b})+g+\delta g v˙w+δ˙vw=Rbwab+g+Rbwδab+Rbw[δθ]×(ab+δab)+δg\underline{\dot{v}}^{w} + \dot{\delta} v^{w}= \underline{R_{b}^{w} a^{b}+ g} +R_{b}^{w}\delta a^{b} + R_{b}^{w} [\delta \theta]_{\times} (a^{b} + \delta a^{b}) + \delta gδ˙vw=Rbwδab+Rbw[δθ]×(ab+δab)+δg\dot{\delta}{v}^{w} = R_{b}^{w}\delta a^{b} + R_{b}^{w} [\delta \theta]_{\times} (a^{b} + \delta a^{b}) + \delta g δ˙vw=RbwδabRbw[ab]×δθ+δg(5)\dot{\delta} v^{w} = R_{b}^{w}\delta a^{b} - R_{b}^{w} [a^{b}]_{\times} \delta \theta + \delta g \tag{5} 由此就能以此類推,輕易寫出整個 A 和 B 其他方程了。

考慮到公式的編輯篇幅,爲了對一些求導公式進行簡化,對求導公式進行了簡化 (下同):
awδθ=limδθ0Rbwexp([δθ]×)abRbwabδθawδθ=Rbwexp([δθ]×)abδθ\frac{\partial a^{w}}{\partial \delta \theta } = \underset{\delta \theta \rightarrow 0}{lim} \frac{R_{b}^{w}exp([\delta \theta]_{\times})a^{b}-R_{b}^{w}a^{b}}{\delta \theta} \rightarrow \frac{\partial a^{w}}{\partial \delta \theta} = \frac{\partial R_{b}^{w}exp([\delta \theta]_{\times}) a^{b}}{\partial \delta \theta}

6. PVQ增量誤差、協方差及雅克比矩陣的遞推方程

6.1 連續形式下的誤差、協方差及雅克比矩陣的遞推方程

在第4部分我們已經完成了IMU預積分測量值的推導,而要將IMU預積分運用到非線性優化中,需要建立線性高斯誤差狀態遞推方程 (可參考第5部分),由線性高斯系統的協方差,推到方程協方差矩陣,並糾結對應的雅克比矩陣。
首先由於四元素γtbk\gamma_{t}^{b_{k}}被參數化過,我們將其誤差定義爲圍繞其均值的擾動:【論文式(8)】
γtbkγ^tbk[112δθtbk]\gamma_{t}^{b_{k}} \approx \hat{\gamma}_{t}^{b_{k}} \otimes \begin{bmatrix} 1 \\ \frac{1}{2} \delta \theta_{t}^{b_{k}}\end{bmatrix}
由預積分的連續形式建立的運動模型,由公式(2)可得一段時間內IMU構建的預積分量作爲測量值,對倆時刻之間的狀態量進行約束,可得到其在kkk+1k+1時刻下的誤差項爲:【論文公式(24)】
[δαbk+1bkδβbk+1bkδθbk+1bkδbaδbw]=[Rwbk(pbk+1wpbkwvkwΔt+12gwΔt2)αbk+1bkRwbk(vbk+1wvbkw+gwΔt)βbk+1bk2[qwbkqbk+1wγbkbk+1]xyzbabk+1babkbwbk+1bwbk]\begin{bmatrix} \delta \alpha_{b_{k+1}}^{b_{k}} \\ \delta \beta_{b_{k+1}}^{b_{k}} \\ \delta \theta_{b_{k+1}}^{b_{k}} \\ \delta b_{a} \\ \delta b_{w} \end{bmatrix} = \begin{bmatrix} R^{b_{k}}_{w}(p^{w}_{b_{k+1}}-p_{b_{k}}^{w} - v_{k}^{w} \Delta t + \frac{1}{2}g^{w} \Delta t ^{2}) - \alpha_{b_{k+1}}^{b_{k}}\\ R^{b_{k}}_{w}(v_{b_{k+1}}^{w}-v_{b_{k}}^{w}+g^{w}\Delta t) - \beta ^{b_{k}}_{b_{k+1}} \\ 2[ q_{w}^{b_{k}} \otimes q^{w}_{b_{k+1}} \otimes \gamma_{b_{k}}^{b_{k+1}} ]_{xyz} \\ b_{ab_{k+1}}-b_{ab_{k}} \\ b_{wb_{k+1}}-b_{wb_{k}}\end{bmatrix}

我們給出在tt時刻誤差項的線性化遞推方程爲:【論文式(9)】:
[δα˙tbkδβ˙tbkδθ˙tbkδb˙atδb˙wt]=[0I00000Rtbk[a^tbat]×Rtbk000[w^bwt]×0I0000000000][δαtbkδβtbkδθtbkδbatδbwt]+[0000Rtbk0000I0000I0000I][nanwnbanbw]=Ftδztbk+Gtnt(6)\begin{bmatrix} \delta \dot{\alpha}_{t}^{b_{k}} \\ \delta \dot{\beta}_{t}^{b_{k}} \\ \delta \dot{\theta}_{t}^{b_{k}} \\ \delta \dot{b}_{at} \\ \delta \dot{b}_{wt} \end{bmatrix} = \begin{bmatrix} 0 & I & 0 & 0 & 0\\ 0 & 0 & -R_{t}^{b_{k}}[\hat{a}_{t}-b_{at}]_{\times} & -R_{t}^{b_{k}} & 0\\ 0 & 0 & -[\hat{w}-b_{wt}]_{\times} & 0 & -I\\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} \begin{bmatrix} \delta \alpha_{t}^{b_{k}} \\ \delta \beta_{t}^{b_{k}} \\ \delta \theta_{t}^{b_{k}} \\ \delta b_{at} \\ \delta b_{wt} \end{bmatrix} + \begin{bmatrix} 0 & 0 & 0 & 0\\ -R_{t}^{b_{k}} & 0 & 0 & 0\\ 0& -I & 0 & 0 \\ 0 & 0 & I & 0 \\ 0 & 0 & 0 & I \end{bmatrix} \begin{bmatrix} n_{a} \\ n_{w} \\ n_{ba} \\ n_{bw} \end{bmatrix} \tag{6} \\ = F_{t}\delta z_{t}^{b_{k}} + G_{t}n_{t} 可以簡寫爲:
δz˙tbk=Ftδztbk+Gtnt\delta \dot{z}_{t}^{b_{k}} = F_{t}\delta z_{t}^{b_{k}} + G_{t}n_{t} 其中FtF_{t}是15x15,GtG_{t}是12x12,δztbk\delta z_{t}^{b_{k}}是15x1,ntn_{t}是12x1。
根據導數的定義有:
δz˙tbk=limδt0δzt+δtbkδztbkδt\delta \dot{z}_{t}^{b_{k}} = \underset{\delta t\rightarrow 0}{lim} \frac{\delta z_{t+\delta t}^{b_{k}}-\delta z_{t}^{b_{k}}}{\delta t} 即:δzt+δtbk=δztbk+δz˙tbkδt=δztbk+(Ftδztbk+Gtnt)δt=(I+Ftδt)δztbk+Gtδtnt\delta z_{t+\delta t}^{b_{k}} = \delta z_{t}^{b_{k}} + \delta \dot{z}_{t}^{b_{k}} \delta t = \delta z_{t}^{b_{k}} + (F_{t}\delta z_{t}^{b_{k}} + G_{t}n_{t})\delta t = (I+F_{t} \delta t) \delta z_{t}^{b_{k}} + G_{t}\delta t n_{t} 這個形式與公式(4)不謀而合,一般連續形式下的微小時間用δt\delta t表示,離散形式下的時間區間用Δt\Delta t表示,其實都是一個意思。進一步的,令F=(I+Ftδt),V=GtδtF=(I+F_{t} \delta t), V=G_{t}\delta t, 有:
δzt+δtbk=Fδztbk+Vnt(7)\delta z_{t+\delta t}^{b_{k}} = F \delta z_{t}^{b_{k}} + Vn_{t} \tag{7} 由此我們已經知道了該非線性系統的線性化遞推方程。

至於下一時刻的協方差,首先對於一個高斯分佈的變量線性變換後得到新的變量的協方差計算,我們有以下推導:
已知一個變量y=Axy=Axx(0,Σx)x \sim(0, \Sigma_{x}),則有 Σy=AΣxAT\Sigma_{y} = A \Sigma_{x} A^{T},即:
Σy=E((Ax)(Ax)T)=E(AxxTAT)=AΣxAT\Sigma_{y} = E((Ax)(Ax)^{T}) = E(Axx^{T}A^{T}) = A \Sigma_{x} A^{T}

得到了遞推方程(7)(7)之後,根據高斯分佈線性變換協方差的傳遞規律,我們可以預測下一時刻的協方差:【論文式(10)】
Pt+δtbk=(I+Ftδt)Ptbk(I+Ftδt)T+(Gδt)Q(Gtδt)TP_{t+\delta t}^{b_{k}} = (I + F_{t} \delta t) P_{t}^{b_{k}} (I + F_{t} \delta t)^{T} + (G \delta t) Q (G_{t} \delta t)^{T}
其中初始協方差 Pbkbk=0P_{b_{k}}^{b_{k}} = 0, QQ代表噪聲項的對角協方差矩陣:
Q12×12=[σa20000σw20000σba20000σbw2]Q^{12 \times 12} = \begin{bmatrix} \sigma _{a}^{2} & 0 & 0 &0 \\ 0 & \sigma _{w}^{2} &0 & 0 \\ 0 & 0 &\sigma_{ba}^{2} & 0 \\ 0 & 0 &0 & \sigma_{bw} ^{2} \end{bmatrix}

同時也可以根據遞推方程得到對應的雅克比矩陣迭代公式:【論文式[11]】
Jt+δt=(I+Ftδt)JtJ_{t+\delta t} = (I+F_{t} \delta t) J_{t} 其中初始雅克比矩陣爲:Jbk=IJ_{b_{k}} = I


關於公式(6)(6)的推導:
先把之前的預積分再寫一遍:
αbk+1bk=t[tk,tk+1]Rtbk(a^tbatna)dt2\alpha^{b_{k}}_{b_{k+1}} = \int \int _{t\in [t_{k}, t_{k+1}]} R_{t}^{b_{k}} (\hat{a}_{t}-b_{at}-n_{a}) dt^{2} βbk+1bk=t[tk,tk+1]Rtbk(a^tbatna)dt\beta_{b_{k+1}}^{b_{k}} = \int _{t\in [t_{k}, t_{k+1}]}R_{t}^{b_{k}}(\hat{a}_{t}-b_{at}-n_{a})dt γbk+1=t[tk,tk+1]12Ω(w^tbwtnw)γtbkdt\gamma_{b_{k+1}} = \int _{t \in [t_{k}, t_{k+1}]} \frac{1}{2} \Omega(\hat{w}_{t}-b_{wt}-n_{w}) \gamma_{t}^{b_{k}}dt 1)首先對於δα˙tbk\delta \dot{\alpha}_{t}^{b_{k}}δb˙at\delta \dot {b}_{at}δb˙wt\delta \dot{b}_{wt}, 顯然根據定義有:
δα˙tbk=α˙^tbkα˙tbk=β^tbkβtbk=δβtbk\delta \dot{\alpha}_{t}^{b_{k}} = \hat{\dot {\alpha}}_{t}^{b_{k}} - \dot {\alpha}_{t}^{b_{k}} = \hat{\beta}_{t}^{b_{k}} - \beta_{t}^{b_{k}} = \delta \beta_{t}^{b_{k}} δb˙at=b˙at0=nba\delta \dot{b}_{at} = \dot{b}_{at} - 0 = n_{b_{a}} δb˙wt=b˙wt0=nbw\delta \dot{b}_{wt} = \dot{b}_{wt} - 0 = n_{b_{w}} 其中上標" ^ " (如 α˙^tbk\hat{\dot {\alpha}}_{t}^{b_{k}}) 代表真實測量值,包含了噪聲,α˙tbk\dot {\alpha}_{t}^{b_{k}} 代表無噪聲的理論值,偏置被建立成隨機遊走模型,其導數服從0均值的高斯分佈。
2)然後是δβ˙tbk\delta \dot{\beta}_{t}^{b_{k}}:
β˙tbk\dot{\beta}_{t}^{b_{k}}爲理論值,即不考慮存在噪聲nan_{a}bbab_{ba}時應爲:β˙tbk=Rtbk(a^tbat)\dot{\beta}_{t}^{b_{k}}=R_{t}^{b_{k}}(\hat a_{t} - b_{at})
β˙tbk\dot \beta _{t}^{b_{k}} 的實際測量值,即考慮噪聲時應爲:
β˙^tbk=R^tbk(a^tb^atna)=Rtbkexp([δθ]×)(a^tnabatδbat)=Rtbk(1+[δθ]×)(a^tnabatδbat)=Rtbk(a^tnabatδbat+[δθ]×(a^tbat))=Rtbk(a^tnabatδbat[a^tbat]×δθ)(8)\hat{\dot{\beta}}_{t}^{b_{k}} = \hat{R}_{t}^{b_{k}} (\hat a_{t}-\hat b_{at} - n_{a}) = R_{t}^{b_{k}}exp([\delta \theta]_{\times})(\hat a_{t} - n_{a} - b_{at} - \delta b_{at}) \\ =R_{t}^{b_{k}}(1+[\delta \theta]_{\times})(\hat a_{t} - n_{a} - b_{at} - \delta b_{at}) \\ = R_{t}^{b_{k}} (\hat a_{t} - n_{a} - b_{at} - \delta b_{at} + [\delta \theta]_{\times} (\hat a_{t} - b_{at})) \\ = R_{t}^{b_{k}} (\hat a_{t} - n_{a} - b_{at} - \delta b_{at} - [\hat a_{t} - b_{at}]_{\times} \delta \theta ) \tag{8} 則有 δβ˙tbk=β˙^tbkβ˙tbk=Rtbk[a^tbat]×δθRtbkδbatRtbkna\delta \dot{\beta}_{t}^{b_{k}} = \hat{\dot{\beta}}_{t}^{b_{k}} - \dot{\beta}_{t}^{b_{k}} = -R_{t}^{b_{k}} [\hat a_{t} - b_{at}]_{\times} \delta \theta - R_{t}^{b_{k}}\delta b_{at} - R_{t}^{b_{k}}n_{a} 其中公式(8)(8)的推導原因可借鑑公式(5)(5),證畢!
3)接下來是δθ˙tbk\delta \dot{\theta} _{t}^{b_{k}},先推個δq˙tbk\delta \dot{q}_{t}^{b_{k}}
q˙tbk\dot q_{t}^{b_{k}}的理論值,即考慮噪聲nwn_{w}nbwn_{b_{w}}: q˙tbk=12qtbk[(w^tbwt)0]=12Ω(w^tbwt)qtbk\dot q_{t}^{b_{k}} = \frac{1}{2} q_{t}^{b_{k}} \otimes \begin{bmatrix} (\hat{w}_{t} - b_{wt}) \\ 0 \end{bmatrix}= \frac{1}{2} \Omega(\hat{w}_{t} - b_{wt}) q_{t}^{b_{k}} q˙tbk\dot q_{t}^{b_{k}}的真實測量值:q˙t^bk=12qt^bk[(w^tnwbwtδbwt)0]=12qtbkδqtbk[(w^tnwbwtδbwt)0]\hat{\dot q_{t}}^{b_{k}} = \frac{1}{2} \hat{q_{t}}^{b_{k}} \otimes \begin{bmatrix} (\hat{w}_{t} - n_{w} - b_{wt} - \delta b_{wt}) \\ 0 \end{bmatrix} \\ = \frac{1}{2} q_{t}^{b_{k}} \otimes \delta q_{t}^{b_{k}}\otimes \begin{bmatrix} (\hat{w}_{t} - n_{w} - b_{wt} - \delta b_{wt}) \\ 0 \end{bmatrix} 根據導數性質,有:
q˙t^bk=(qtbk˙δqtbk)=q˙tbkδqtbk+qtbkδq˙tbk=12qtbk[(w^tbwt)0]δqtbk+qtbkδq˙tbk\hat{\dot q_{t}}^{b_{k}} = (q_{t}^{b_{k}} \dot \otimes \delta q_{t}^{b_{k}}) = \dot q_{t}^{b_{k}} \otimes \delta q_{t}^{b_{k}} + q_{t}^{b_{k}} \otimes \delta \dot q_{t}^{b_{k}} = \frac{1}{2} q_{t}^{b_{k}} \otimes \begin{bmatrix} (\hat {w}_{t} - b_{wt}) \\ 0 \end{bmatrix} \otimes \delta q_{t}^{b_{k}} + q_{t}^{b_{k}} \otimes \delta \dot q_{t}^{b_{k}} 即得到等式:
12qtbkδqtbk[(w^tnwbwtδbwt)0]=12qtbk[(w^tbwt)0]δqtbk+qtbkδq˙tbk\frac{1}{2} q_{t}^{b_{k}} \otimes \delta q_{t}^{b_{k}}\otimes \begin{bmatrix} (\hat{w}_{t} - n_{w} - b_{wt} - \delta b_{wt}) \\ 0 \end{bmatrix} = \frac{1}{2} q_{t}^{b_{k}} \otimes \begin{bmatrix} (\hat {w}_{t} - b_{wt}) \\ 0 \end{bmatrix} \otimes \delta q_{t}^{b_{k}} + q_{t}^{b_{k}} \otimes \delta \dot q_{t}^{b_{k}} 2δq˙tbk=qtbk[(w^tnwbwtδbwt)0][(w^tbwt)0]δqtbk2 \delta \dot q_{t}^{b_{k}} = q_{t}^{b_{k}}\otimes \begin{bmatrix} (\hat{w}_{t} - n_{w} - b_{wt} - \delta b_{wt}) \\ 0 \end{bmatrix} - \begin{bmatrix} (\hat {w}_{t} - b_{wt}) \\ 0 \end{bmatrix} \otimes \delta q_{t}^{b_{k}} 2δq˙tbk=R([(w^tnwbwtδbwt)0])δqtbkL([(w^tbwt)0])δqtbk2 \delta \dot q_{t}^{b_{k}} = R(\begin{bmatrix} (\hat{w}_{t} - n_{w} - b_{wt} - \delta b_{wt}) \\ 0 \end{bmatrix} ) \delta q_{t}^{b_{k}}- L(\begin{bmatrix} (\hat {w}_{t} - b_{wt}) \\ 0 \end{bmatrix}) \delta q_{t}^{b_{k}} 2δq˙tbk=[δθ˙tbk0]=[[2w^t2bwtnwδbwt]×nwδbwt(nw+δbwt)T0][12δθtbk1]2 \delta \dot q_{t}^{b_{k}} = \begin{bmatrix} \delta \dot{\theta}_{t}^{b_{k}} \\ 0\end{bmatrix}= \begin{bmatrix} -[2\hat{w}_{t} - 2b_{wt} - n_{w} - \delta b_{wt}]_{\times} & -n_{w}-\delta b_{wt}\\ (n_{w}+\delta b_{wt})^{T} & 0\end{bmatrix} \begin{bmatrix} \frac{1}{2} \delta \theta _{t}^{b_{k}} \\ 1 \end{bmatrix} δθ˙tbk=[2w^t2bwtnwδbwt]×12δθtbknwδbwt[w^tbwt]×δθtbknwδbwt\delta \dot{\theta}_{t}^{b_{k}} =-[2\hat{w}_{t} - 2b_{wt} - n_{w} - \delta b_{wt}]_{\times} \frac{1}{2} \delta \theta _{t}^{b_{k}} - n_{w} - \delta b_{wt} \\ \approx -[\hat{w}_{t} - b_{wt} ]_{\times} \delta \theta _{t}^{b_{k}} - n_{w} - \delta b_{wt} 證畢!


6.2 離散形式下(中值法)增量誤差、協方差及雅克比矩陣的遞推方程

根據連續形式的增量誤差遞推方程,同理我們可以推導出離散形式的方程,首先直接給出 PVQ 增量誤差在離散形式下的矩陣形式,這在vins_estimator/src/factor/integration_base.h中的void integrationBase::midPointIntegration()函數中得以實現 (這裏的矩陣V幾個變量與VINS中的代碼差個負號,體現在前四個噪聲項,應該是推導過程中與VINS添加噪聲的方式不同,即是減去一個噪聲還是加上一個噪聲,問題不是特別大)
[δαk+1δθk+1δβk+1δbak+1δbwk+1]=[If01δtf03f040f1100δt0f21If23f24000I00000I][δαkδθkδβkδbakδbwk]+[v00v01v02v0300012δt012δt0012Rkδtv2112Rk+1δtv23000000δt000000δt][naknwknak+1nwk+1nbanbw](9)\begin{bmatrix} \delta \alpha_{k+1} \\ \delta \theta_{k+1} \\ \delta \beta_{k+1} \\ \delta b_{ak+1} \\ \delta b_{wk+1} \end{bmatrix} = \begin{bmatrix} I & f_{01} & \delta t & f_{03} & f_{04} \\ 0 & f_{11} & 0 & 0 & -\delta t \\ 0 & f_{21} & I & f_{23} & f_{24} \\ 0 & 0& 0 & I & 0 \\ 0 & 0& 0& 0 & I\end{bmatrix} \begin{bmatrix} \delta \alpha_{k} \\ \delta \theta_{k} \\ \delta \beta_{k} \\ \delta b_{ak} \\ \delta b_{wk} \end{bmatrix} + \begin{bmatrix} v_{00} & v_{01} &v_{02} & v_{03} & 0 & 0 \\ 0 & -\frac{1}{2} \delta t & 0 & -\frac{1}{2} \delta t& 0 & 0 \\ -\frac{1}{2}R_{k}\delta t & v_{21} & -\frac{1}{2}R_{k+1}\delta t & v_{23} & 0 & 0\\ 0 & 0& 0 & 0 & \delta t&0 \\ 0 & 0& 0& 0 & 0 & \delta t\end{bmatrix} \begin{bmatrix} n_{ak} \\ n_{wk} \\ n_{ak+1} \\ n_{wk+1} \\ n_{ba} \\ n_{bw}\end{bmatrix} \tag{9} 其中:f01=12f21δt, f03=14(Rk+Rk+1)δt2, f04=12f24δtf_{01} = \frac{1}{2} f_{21}\delta t, \ f_{03} = -\frac{1}{4}(R_{k}+R_{k+1})\delta t^{2}, \ f_{04}=\frac{1}{2} f_{24} \delta {t} f11=I[w^k+w^k+12bwk]×δtf_{11}=I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t f21=12Rk[a^kbak]×δt12Rk+1[a^k+1bak]×(I[w^k+w^k+12bwk]×δt)δtf_{21} = -\frac{1}{2}R_{k} [\hat a_{k} - b_{ak}]_{\times} \delta t -\frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times} (I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t) \delta t f23=12(Rk+Rk+1)δt, f24=12Rk+1[a^k+1bak]×δt2f_{23} = -\frac{1}{2}(R_{k} + R_{k+1})\delta t, \ f_{24} = \frac{1}{2} R_{k+1}[\hat {a}_{k+1} - b_{a_{k}}]_{\times} \delta t^ {2} v00=14Rkδt2, v01=v03=12v21δt, v02=14Rk+1δt2v_{00}=-\frac{1}{4}R_{k}\delta t^{2}, \ v_{01} = v_{03} = \frac{1}{2} v_{21}\delta t, \ v_{02} = -\frac{1}{4}R_{k+1}\delta t^{2}v21=v23=14Rk+1[a^k+1bak]×δt2v_{21}=v_{23} = \frac{1}{4}R_{k+1}[\hat{a}_{k+1}-b_{ak}]_{\times} \delta t^{2}
簡寫爲:
δzk+115×1=F15×15δzk15×1+V15×18n18×1(10)\delta z_{k+1}^{15 \times 1} = F^{15 \times 15} \delta z_{k}^{15 \times 1} + V^{15 \times 18} n^{18 \times 1} \tag{10} 協方差的迭代公式爲(協方差的初始值P0=0P_{0} = 0
Pk+1=FPkFT+VQVTP_{k+1} = FP_{k}F^{T} + VQV^{T} 其中噪聲項的對角協方差矩陣QQ爲:Q18×18=(σa2,σw2,σa2,σw2,σba2,σbw2)Q^{18 \times 18} = (\sigma_{a}^{2}, \sigma_{w}^{2},\sigma_{a}^{2},\sigma_{w}^{2},\sigma_{ba}^{2},\sigma_{bw}^{2})
雅克比矩陣的迭代公式爲(雅克比矩陣的初始值爲J0=IJ_{0} =I): Jk+1=FJkJ_{k+1} = FJ_{k} 這裏計算出來的Jk+1J_{k+1}只是爲了給後面提供對 bias 的雅克比矩陣。


關於公式(9)的推導:
1)對於δbak+1\delta b_{ak+1}δbwk+1\delta b_{wk+1},根據偏置模型定義顯然有:
δbak+1=δbak+nbaδt, δbwk+1=δbwk+nbwδt\delta b_{ak+1} = \delta b_{ak} + n_{b_{a}} \delta t, \ \delta b_{wk+1} = \delta b_{wk} + n_{b_{w}} \delta t 2) 對於δθk+1\delta \theta_{k+1}:
之前已經得到了角度誤差導數的連續形式:δθ˙tbk=[w^tbwt]×δθtbknwδbwt\delta \dot{\theta}_{t}^{b_{k}} = -[\hat{w}_{t} - b_{wt}]_{\times} \delta \theta_{t}^{b_{k}} - n_{w} - \delta b_{wt} 那麼其中值積分的離散形式爲:
δθ˙k=[w^k+w^k+12bwk]×δθkbknwk+nwk+12δbwk\delta \dot{\theta}_{k} = -[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta \theta_{k}^{b_{k}} - \frac{n_{wk}+n_{wk+1}}{2} - \delta b_{wk} 根據導數定義可得下一時刻的誤差爲:
δθk+1=δθk+δθ˙kδt=(I[w^k+w^k+12bwk]×δt)δθknwk+nwk+12δtδbwkδt\delta \theta_{k+1} = \delta \theta_{k} + \delta \dot{\theta}_{k} \delta t = (I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t) \delta \theta_{k} - \frac{n_{wk}+n_{wk+1}}{2} \delta t- \delta b_{wk} \delta t 整理得
δθk+1=(I[w^k+w^k+12bwk]×δt)δθkδtδbwkδt2nwkδt2nwk+1=f11δθkδtδbwkδt2nwkδt2nwk+1\delta \theta_{k+1} = (I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t) \delta \theta_{k} - \delta t \delta b_{wk} - \frac{\delta t}{2} n_{wk} - \frac{\delta t}{2} n_{wk+1} = f_{11} \delta \theta_{k} - \delta t \delta b_{wk} - \frac{\delta t}{2} n_{wk} - \frac{\delta t}{2} n_{wk+1} 故有:
f11=I[w^k+w^k+12bwk]×δtf_{11}=I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t 3)對於δβk+1:\delta \beta_{k+1}:
之前已經得到了速度誤差導數的連續形式:δβ˙tbk=Rtbk[a^tbat]×δθRtbkδbatRtbkna\delta \dot{\beta}_{t}^{b_{k}} = -R_{t}^{b_{k}} [\hat a_{t} - b_{at}]_{\times} \delta \theta - R_{t}^{b_{k}}\delta b_{at} - R_{t}^{b_{k}}n_{a} 那麼其中值積分的離散形式爲:
δβ˙k=12Rk[a^kbak]×δθk12Rk+1[a^k+1bak+1]×δθk+112(Rk+Rk+1)δbak12Rknak12Rk+1nak+1\delta \dot{\beta}_{k} = -\frac{1}{2}R_{k} [\hat a_{k} - b_{ak}]_{\times} \delta \theta_{k} -\frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak+1}]_{\times}\delta \theta_{k+1} - \frac{1}{2}(R_{k}+R_{k+1}) \delta b_{ak} -\frac{1}{2} R_{k}n_{ak} - \frac{1}{2} R_{k+1}n_{ak+1} 其中假設在kk時刻和k+1k+1時刻下的加速度計偏置bab_{a}相等(下同),把之前的δθk+1\delta \theta_{k+1}代進去有:
δβ˙k={12Rk[a^kbak]×12Rk+1[a^k+1bak]×(I[w^k+w^k+12bwk]×δt)}δθk+14Rk+1[a^k+1bak]×δt(nwk+nwk+1)+12Rk+1[a^k+1bak]×δtδbwk12(Rk+Rk+1)δbak12Rknak12Rk+1nak+1\delta \dot{\beta}_{k} = \begin{Bmatrix} -\frac{1}{2}R_{k} [\hat a_{k} - b_{ak}]_{\times} -\frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times} (I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t)\end{Bmatrix} \delta \theta_{k} \\ + \frac{1}{4} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times}\delta t (n_{wk}+n_{wk+1}) + \frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times} \delta t \delta b_{wk} \\ -\frac{1}{2}(R_{k} + R_{k+1})\delta b_{ak} - \frac{1}{2} R_{k}{n_{ak}} - \frac{1}{2}R_{k+1}{n_{ak+1}} 根據導數定義可得到下一時刻的誤差爲:δβk+1=δβk+δβ˙kδt={12Rk[a^kbak]×12Rk+1[a^k+1bak]×(I[w^k+w^k+12bwk]×δt)}δtδθk+δβk+{14Rk+1[a^k+1bak]×δt(nwk+nwk+1)+12Rk+1[a^k+1bak]×δtδbwk12(Rk+Rk+1)δbak12Rknak12Rk+1nak+1}δt\delta \beta_{k+1} = \delta \beta_{k} + \delta \dot {\beta}_{k} \delta t \\ = \begin{Bmatrix} -\frac{1}{2}R_{k} [\hat a_{k} - b_{ak}]_{\times} -\frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times} (I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t)\end{Bmatrix} \delta t \delta \theta_{k} + \delta \beta _{k} + \\ \begin{Bmatrix} \frac{1}{4} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times}\delta t (n_{wk}+n_{wk+1}) + \frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times} \delta t \delta b_{wk} -\frac{1}{2}(R_{k} + R_{k+1})\delta b_{ak} - \frac{1}{2} R_{k}{n_{ak}} - \frac{1}{2}R_{k+1}{n_{ak+1}} \end{Bmatrix} \delta t 整理後得到:
δβk+1=f21δθk+δβk+f23δbak+f24δbwk12Rkδtnak12Rk+1δtnak+1+v21nwk+v23nwk+1\delta \beta_{k+1} = f_{21} \delta \theta_{k} + \delta \beta _{k} + f_{23}\delta b_{ak} + f_{24}\delta b_{wk} - \frac{1}{2} R_{k}\delta tn_{ak} \\ - \frac{1}{2}R_{k+1}\delta tn_{ak+1} + v_{21}n_{wk}+v_{23}n_{wk+1} 其中
f21=12Rk[a^kbak]×δt12Rk+1[a^k+1bak]×(I[w^k+w^k+12bwk]×δt)δtf_{21} = -\frac{1}{2}R_{k} [\hat a_{k} - b_{ak}]_{\times} \delta t -\frac{1}{2} R_{k+1} [\hat a_{k+1} - b_{ak}]_{\times} (I-[\frac{\hat{w}_{k}+\hat{w}_{k+1}}{2} - b_{wk}]_{\times} \delta t) \delta t f23=12(Rk+Rk+1)δtf_{23} = -\frac{1}{2}(R_{k} + R_{k+1})\delta tf24=12Rk+1[a^k+1bak]×δt2 f_{24} = \frac{1}{2} R_{k+1}[\hat {a}_{k+1} - b_{a_{k}}]_{\times} \delta t^ {2} v21=v23=14Rk+1[a^k+1bak]×δt2v_{21}=v_{23} = \frac{1}{4}R_{k+1}[\hat{a}_{k+1}-b_{ak}]_{\times} \delta t^{2} 證畢!
4)對於δαk+1:\delta \alpha_{k+1}:
之前已經得到了速度誤差導數的連續形式:
δα˙tbk=α˙^tbkα˙tbk=β^tbkβtbk=δβtbk\delta \dot{\alpha}_{t}^{b_{k}} = \hat{\dot {\alpha}}_{t}^{b_{k}} - \dot {\alpha}_{t}^{b_{k}} = \hat{\beta}_{t}^{b_{k}} - \beta_{t}^{b_{k}} = \delta \beta_{t}^{b_{k}} 則離散形式爲:δα˙tbk=12δβk+12δβk+1=δβk+12f21δθk14(Rk+Rk+1)δtδbak+12f24δbwk14Rkδtnak14Rk+1δtnak+1+12v21nwk+12v23nwk+1\delta \dot{\alpha}_{t}^{b_{k}} = \frac{1}{2}\delta \beta_{k} + \frac{1}{2} \delta \beta_{k+1} \\ = \delta \beta_{k} + \frac{1}{2} f_{21}\delta \theta_{k} - \frac{1}{4}(R_{k}+R_{k+1})\delta t \delta b_{ak} + \frac{1}{2} f_{24} \delta b_{wk} \\ - \frac{1}{4} R_{k}\delta t n_{ak} - \frac{1}{4}R_{k+1}\delta t n_{ak+1} + \frac{1}{2} v_{21}n_{wk} + \frac{1}{2} v_{23}n_{wk+1} 根據導數定義可得下一時刻的誤差爲:
δαk+1=δαk+δα˙δt=δαk+f01δθk+δtδβk+f03δbak+f04δbwk+v00nak+v01nwk+v02nak+1+v03nwk+1\delta \alpha_{k+1} = \delta{\alpha}_{k} + \delta \dot {\alpha} \delta t \\ = \delta \alpha _{k} + f_{01} \delta \theta_{k} + \delta t \delta \beta _{k} + f_{03}\delta b_{ak} + f_{04} \delta b_{wk} + v_{00}n_{ak} + v_{01}n_{wk}+v_{02}n_{ak+1}+v_{03}n_{wk+1} 其中
f01=12f21δt, f03=14(Rk+Rk+1)δt2, f04=12f24δtf_{01} = \frac{1}{2} f_{21} \delta t, \ f_{03} = -\frac{1}{4}(R_{k}+R_{k+1})\delta t^{2}, \ f_{04}=\frac{1}{2} f_{24} \delta {t} v00=14Rkδt2, v01=v03=12v21δt, v02=14Rk+1δt2v_{00}=-\frac{1}{4}R_{k}\delta t^{2}, \ v_{01} = v_{03} = \frac{1}{2} v_{21}\delta t, \ v_{02} = -\frac{1}{4}R_{k+1}\delta t^{2}


發佈了144 篇原創文章 · 獲贊 144 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章