IMU模型下的IEKF

复杂系统下的不变扩展卡尔曼滤波

由前文可知,不变性要靠合理的状态误差设计来实现,但在更复杂的系统中,为所有状态量找到一个满足不变性的状态误差是很困难的,甚至一些状态是不可能被表示为群运算的。在存在这类状态量的系统中,有没有可能保留 I E K F IEKF IEKF的主要优点呢(主要指一致性方面的优点),答案是肯定的。

考虑这样一类系统,其系统方程如下:

Θ ˙ t = g ( Θ t ) χ ˙ t = f ( χ t , u t , Θ t ) y t = h ( χ t , Θ t ) \begin{aligned} \dot\Theta_t &= g(\Theta_t) \\ \dot\chi_t &= f(\chi_t, u_t, \Theta_t) \\ y_t &= h(\chi_t, \Theta_t) \end{aligned} Θ˙tχ˙tyt=g(Θt)=f(χt,ut,Θt)=h(χt,Θt)

抛开矢量 Θ t \Theta_{t} Θt不看,上式就是之前讨论的普通系统方程,引入矢量 Θ t \Theta_{t} Θt后,系统的变化不仅依赖当前时刻的状态 χ t \chi_{t} χt和输入 u t u_{t} ut,还依赖另外一个随着时间变化的量 Θ t \Theta_{t} Θt。在普通的 E K F EKF EKF中,可以将 Θ t \Theta_{t} Θt也融入到需要估计的状态量 χ t \chi_{t} χt中。这里之所以分开写,是为了在 I E K F IEKF IEKF中区分可以被描述为群元素的状态量 χ t \chi_{t} χt,和不能被描述为群元素的量 Θ t \Theta_{t} Θt

以一个完整的 I M U IMU IMU系统为例,系统方程为:

R ˙ t = R t [ w ~ t − b t w − n t w ] × v ˙ t = R t ( a ~ t − b t a − n t a ) + g p ˙ t = v t b ˙ t w = n t b w b ˙ t a = n t b a \begin{aligned} \dot{R}_t&=R_t[\tilde{w}_t-b_t^w-n_t^w]_\times \\ \dot{v}_t&=R_t(\tilde{a}_t-b_t^a-n_t^a)+g \\ \dot{p}_t&=v_t \\ \dot{b}_t^w&=n_t^{bw} \\ \dot{b}_t^a &=n_t^{ba} \end{aligned} R˙tv˙tp˙tb˙twb˙ta=Rt[w~tbtwntw]×=Rt(a~tbtanta)+g=vt=ntbw=ntba

其 中 b t w , b t a 分 别 为 I M U 的 g y r o b i a s 和 a c c e l e r a t o r b i a s , 他 们 满 足 R a n d o m W a l k 模 型 , 即 随 时 间 的 变 化 率 是 一 个 满 足 高 斯 分 布 的 白 噪 声 。 其中b^w_t,b^a_t分别为IMU的gyro bias和accelerator bias,他们满足Random Walk模型,即随时间的变化率是一个满足高斯分布的白噪声。 btw,btaIMUgyrobiasacceleratorbiasRandomWalk

由前文可知, R t , v t , p t R_t,v_t,p_t Rt,vt,pt能够构成一个群元素并且使得最终导出的误差系统方程满足不变性(系统矩阵与状态无关),但如果将两个 b i a s bias bias也放入群中,就很难找到一个状态误差使其满足不变性了。也就是说, R t , v t , p t R_t,v_t,p_t Rt,vt,pt就是上文中的 χ t \chi_{t} χt,而 b t w , b t a b^w_t,b^a_t btw,bta就是上文中的 Θ t \Theta_{t} Θt

为了处理这类系统,可以将状态误差定义为如下形式:

e t = ( χ ^ t χ t − 1 ,   Θ ^ t − Θ t ) = ( η t ,   ζ t ) e_t=(\hat{\chi}_t\chi_t^{-1},\ \hat\Theta_t-\Theta_t)=(\eta_t,\ \zeta_t) et=(χ^tχt1, Θ^tΘt)=(ηt, ζt)

即右不变误差与普通线性误差的笛卡尔积,是一种混合误差。

混合误差的系统方程

现在需要推导在混合误差下,该误差的系统方程是怎样的。直接以上文的 I M U IMU IMU系统为例,令

χ t = ( R t v t p t 0 1 0 0 0 1 ) ,    η t = χ ^ t χ t − 1 \chi_t= \begin{pmatrix} R_t & v_t & p_t \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix},\ \ \eta_t=\hat{\chi}_t\chi_t^{-1} χt=Rt00vt10pt01,  ηt=χ^tχt1

以及

Θ t = ( b t w b t a ) ,    ζ t = ( b ^ t w − b t w b ^ t a − b t a ) = ( ζ t w ζ t a ) \Theta_{t}=\begin{pmatrix} b_t^w \\ b_t^a \end{pmatrix},\ \ \zeta_t= \begin{pmatrix} \hat{b}_t^w - b_t^w \\ \hat{b}_t^a - b_t^a \end{pmatrix}= \begin{pmatrix} \zeta_t^w \\ \zeta_t^a \end{pmatrix} Θt=(btwbta),  ζt=(b^twbtwb^tabta)=(ζtwζta)

推导方式模仿前文中普通系统的推导,也就是计算:

e ˙ t = ( η ˙ t ζ ˙ t ) \dot{e}_{t}=\begin{pmatrix} \dot{\eta}_t \\ \\ \dot{\zeta}_t \end{pmatrix} e˙t=η˙tζ˙t

其中 η ˙ t \dot{\eta}_{t} η˙t的定义和前文一样

η ˙ t ≈ ( [ ξ ˙ R t ] × ξ ˙ v t ξ ˙ p t 0 0 0 0 0 0 ) = d d t Λ ( ξ R t ξ v t ξ p t ) \begin{aligned} \dot{\eta}_t\approx \begin{pmatrix} [\dot{\xi}_{R_t}]_\times & \dot{\xi}_{v_t} & \dot{\xi}_{p_t} \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix} = \frac{d}{dt}\Lambda \begin{pmatrix} \xi_{R_t} \\ \xi_{v_t} \\ \xi_{p_t} \end{pmatrix} \end{aligned} η˙t[ξ˙Rt]×00ξ˙vt00ξ˙pt00=dtdΛξRtξvtξpt

仅在 ξ R t , ξ v t , ξ p t \xi_{R_t}, \xi_{v_t}, \xi_{p_t} ξRt,ξvt,ξpt的计算中有少许不同,分别为

[ ξ ˙ R t ] × ≈ η ˙ R t = R ^ ˙ t R t T + R ^ t R ˙ t T = R ^ t [ w ~ t − b ^ t w ] × R t T − R ^ t [ w t ] × R t T = R ^ t [ w ~ t − b ^ t w − w t ] × R t T      ( 其中  w ~ t = w t + b t w + n t w ) = R ^ t [ n t w − ζ t w ] × R t T = R ^ t [ n t w − ζ t w ] × R ^ t T R ^ t R t T = [ R ^ t ( n t w − ζ t w ) ] × η R t ≈ [ R ^ t ( n t w − ζ t w ) ] × ( I + [ ξ R t ] × ) ≈ [ R ^ t ( n t w − ζ t w ) ] × \begin{aligned} \\ [\dot{\xi}_{R_t}]_\times\approx\dot{\eta}_{R_t}&=\dot{\hat{R}}_tR_t^T+\hat{R}_t\dot{R}_t^T \\ &=\hat{R}_t[\tilde{w}_t-\hat{b}_t^w]_\times R_t^T-\hat{R}_t[w_t]_\times R_t^T \\ &=\hat{R}_t[\tilde{w}_t-\hat{b}_t^w-w_t]_\times R_t^T \ \ \ \ (\text{其中}\ \tilde{w}_t=w_t+b_t^w+n_t^w) \\ &=\hat{R}_t[n_t^w-\zeta_t^w]_\times R_t^T \\ &=\hat{R}_t[n_t^w-\zeta_t^w]_\times \hat{R}_t^T \hat{R}_tR_t^T \\ &=[\hat{R}_t (n_t^w-\zeta_t^w)]_\times \eta_{R_t} \\ &\approx [\hat{R}_t (n_t^w-\zeta_t^w)]_\times ( I+[\xi_{R_t}]_\times) \\ &\approx [\hat{R}_t (n_t^w-\zeta_t^w)]_\times \end{aligned} [ξ˙Rt]×η˙Rt=R^˙tRtT+R^tR˙tT=R^t[w~tb^tw]×RtTR^t[wt]×RtT=R^t[w~tb^twwt]×RtT    (其中 w~t=wt+btw+ntw)=R^t[ntwζtw]×RtT=R^t[ntwζtw]×R^tTR^tRtT=[R^t(ntwζtw)]×ηRt[R^t(ntwζtw)]×(I+[ξRt]×)[R^t(ntwζtw)]×

以及

ξ ˙ v t = v ^ ˙ t − η ˙ R t v t − η R t v ˙ t = R ^ t ( a ~ t − b ^ t a ) + g − [ R ^ t ( n t w − ζ t w ) ] × v t − R ^ t R t T ( R t a t + g ) = R ^ t ( a ~ t − b ^ t a − a t ) + g − [ R ^ t ( n t w − ζ t w ) ] × v t − R ^ t R t T g      ( 其中  a ~ t = a t + b t a + n t a ) ≈ R ^ t ( n t a − ζ t a ) + g − [ R ^ t ( n t w − ζ t w ) ] × v t − ( I + [ ξ R t ] × ) g = [ g ] × ξ R t + ( [ v t ] × R ^ t ) ( n t w − ζ t w ) + R ^ t ( n t a − ζ t a ) \begin{aligned} \dot{\xi}_{v_t} &= \dot{\hat{v}}_t - \dot{\eta}_{R_t}v_t-\eta_{R_t}\dot{v}_t \\ &=\hat{R}_t(\tilde{a}_t-\hat{b}_t^a)+g-[\hat{R}_t (n_t^w-\zeta_t^w)]_\times v_t-\hat{R}_tR_t^T(R_ta_t+g) \\ &=\hat{R}_t(\tilde{a}_t-\hat{b}_t^a-a_t) + g-[\hat{R}_t (n_t^w-\zeta_t^w)]_\times v_t-\hat{R}_tR_t^Tg \ \ \ \ (\text{其中}\ \tilde{a}_t=a_t+b_t^a+n_t^a)\\ &\approx \hat{R}_t(n_t^a-\zeta_t^a)+g-[\hat{R}_t (n_t^w-\zeta_t^w)]_\times v_t-(I+[\xi_{R_t}]_\times)g \\ &=[g]_\times \xi_{R_t}+([v_t]_\times \hat{R}_t) (n_t^w-\zeta_t^w)+\hat{R}_t(n_t^a-\zeta_t^a) \end{aligned} ξ˙vt=v^˙tη˙RtvtηRtv˙t=R^t(a~tb^ta)+g[R^t(ntwζtw)]×vtR^tRtT(Rtat+g)=R^t(a~tb^taat)+g[R^t(ntwζtw)]×vtR^tRtTg    (其中 a~t=at+bta+nta)R^t(ntaζta)+g[R^t(ntwζtw)]×vt(I+[ξRt]×)g=[g]×ξRt+([vt]×R^t)(ntwζtw)+R^t(ntaζta)

以及

ξ ˙ p t = p ^ ˙ t − η ˙ R t p t − η R t p ˙ t = v ^ t − [ R ^ t ( n t w − ζ t w ) ] × p t − R ^ t R t T v t = ( v ^ t − R ^ t R t T v t ) − [ R ^ t ( n t w − ζ t w ) ] × p t = ξ v t + ( [ p t ] × R ^ t ) ( n t w − ζ t w ) \begin{aligned} \dot{\xi}_{p_t} &= \dot{\hat{p}}_t - \dot{\eta}_{R_t}p_t-\eta_{R_t}\dot{p}_t \\ &=\hat{v}_t-[\hat{R}_t (n_t^w-\zeta_t^w)]_\times p_t - \hat{R}_tR_t^Tv_t \\ &=(\hat{v}_t-\hat{R}_tR_t^Tv_t)-[\hat{R}_t (n_t^w-\zeta_t^w)]_\times p_t \\ &=\xi_{v_t}+([p_t]_\times \hat{R}_t) (n_t^w-\zeta_t^w) \end{aligned} ξ˙pt=p^˙tη˙RtptηRtp˙t=v^t[R^t(ntwζtw)]×ptR^tRtTvt=(v^tR^tRtTvt)[R^t(ntwζtw)]×pt=ξvt+([pt]×R^t)(ntwζtw)

ζ t \zeta_{t} ζt由于是普通的线性误差,推导就比较简单了,即

ζ ˙ t = ( ζ ˙ t w ζ ˙ t a ) = ( − n t b w − n t b a ) \dot{\zeta}_t= \begin{pmatrix} \dot{\zeta}_t^w \\ \dot{\zeta}_t^a \end{pmatrix} = \begin{pmatrix} -n_t^{bw} \\ -n_t^{ba} \end{pmatrix} ζ˙t=(ζ˙twζ˙ta)=(ntbwntba)

综上,模仿前文的处理方式,可以得到整个系统状态误差的系统方程:

d d t ( ξ R t ξ v t ξ p t ζ t w ζ t a ) = ( 0 0 0 − R ^ t 0 [ g ] × 0 0 − [ v ^ t ] R ^ t − R ^ t 0 I 0 − [ p ^ t ] R ^ t 0 0 0 0 0 0 0 0 0 0 0 ) ( ξ R t ξ v t ξ p t ζ t w ζ t a ) + ( R ^ t 0 0 0 0 [ v ^ t ] × R ^ t R ^ t 0 0 0 [ p ^ t ] × R ^ t 0 R ^ t 0 0 0 0 0 − I 0 0 0 0 0 − I ) ( n t w n t a 0 n t b w n t b a ) \frac{d}{dt} \begin{pmatrix} \xi_{R_t} \\ \xi_{v_t} \\ \xi_{p_t} \\ \zeta_t^w \\ \zeta_t^a \end{pmatrix} = \begin{pmatrix} 0 & 0 & 0 & -\hat{R}_t & 0\\ [g]_\times & 0 & 0 & -[\hat{v}_t]\hat{R}_t & -\hat{R}_t \\ 0 & I & 0 & -[\hat{p}_t]\hat{R}_t & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \end{pmatrix} \begin{pmatrix} \xi_{R_t} \\ \xi_{v_t} \\ \xi_{p_t} \\ \zeta_t^w \\ \zeta_t^a \end{pmatrix} + \begin{pmatrix} \hat{R}_t & 0 & 0 & 0 & 0\\ [\hat{v}_t]_\times\hat{R}_t & \hat{R}_t & 0 & 0 & 0\\ [\hat{p}_t]_\times\hat{R}_t & 0 & \hat{R}_t & 0 & 0\\ 0 & 0 & 0 & -I & 0 \\ 0 & 0 & 0 & 0 & -I \end{pmatrix} \begin{pmatrix} n_t^w \\ n_t^a \\ 0 \\ n_t^{bw} \\ n_t^{ba} \end{pmatrix} dtdξRtξvtξptζtwζta=0[g]×00000I0000000R^t[v^t]R^t[p^t]R^t000R^t000ξRtξvtξptζtwζta+R^t[v^t]×R^t[p^t]×R^t000R^t00000R^t00000I00000Intwnta0ntbwntba

将其写为更紧凑的形式,容易看出带有 b i a s 的 I M U 系 统 与 之 前 不 带 b i a s 的 I M U bias的IMU系统与之前不带bias的IMU biasIMUbiasIMU系统之间的联系

d d t ( ξ t ζ t ) = ( F χ t F χ t , Θ t 0 F Θ t ) ( ξ t ζ t ) + ( A d χ ^ t 0 0 − I ) ( n t n t b ) \frac{d}{dt} \begin{pmatrix} \xi_t \\ \zeta_t \end{pmatrix} = \begin{pmatrix} F_{\chi_t} & F_{\chi_t, \Theta_t} \\ 0 & F_{\Theta_t} \end{pmatrix} \begin{pmatrix} \xi_t \\ \zeta_t \end{pmatrix}+ \begin{pmatrix} Ad_{\hat{\chi}_t} & 0 \\ 0 & -I \end{pmatrix} \begin{pmatrix} n_t \\ n_t^b \end{pmatrix} dtd(ξtζt)=(Fχt0Fχt,ΘtFΘt)(ξtζt)+(Adχ^t00I)(ntntb)

其中 F χ t F_{\chi_{t}} Fχt就是前文中不带 b i a s bias bias I M U IMU IMU系统的系统矩阵, A d χ ^ t Ad_{\hat{\chi}_{t}} Adχ^t是其噪声矩阵,带有 b i a s 的 I M U bias的IMU biasIMU系统,只是在原来的系统矩阵上进行了增广。这个结论适用于所有满足本文开头所定义的系统形式。

可以看到,在这种混合误差形式下,系统矩阵不再是一个常量了,每个时刻的系统矩阵与当前状态的估计值有关。但是,这种联系只通过 b i a s bias bias或噪声等小量引入。可以证明对于这样的系统方程,一致性仍然能够保证。同时大量的实验也表明,这种“非完美”的 I E K F IEKF IEKF在鲁棒性和收敛性上仍然优于传统的 E K F EKF EKF

混合状态的更新

之前已经知道,观测误差 z t z_{t} zt与状态误差 ξ t \xi_{t} ξt的线性关系为

z ~ t = H t ξ t + s t \tilde{z}_t=H_t\xi_t+s_t z~t=Htξt+st

其中 s t s_{t} st是观测噪声。

现在设系统的观测量不变(即 Θ t \Theta_{t} Θt是无法直接观测到的),但是状态误差变成了 ( ξ t , ζ t ) (\xi_t, \zeta_t) (ξt,ζt),显然线性关系应该变为

z ~ t = ( H χ t    H Θ t ) ( ξ t ζ t ) + s t \tilde{z}_t=(H_{\chi_t}\ \ H_{\Theta_t}) \begin{pmatrix} \xi_t \\ \zeta_t \end{pmatrix}+s_t z~t=(Hχt  HΘt)(ξtζt)+st

以带有 b i a s 的 I M U bias的IMU biasIMU系统为例, H χ t H_{\chi_{t}} Hχt就是上文中的观测矩阵 H t H_{t} Ht

H χ t = ( − [ m 1 ] × 0 3 × 3 I 3 × 3 ⋮ − [ m k ] × 0 3 × 3 I 3 × 3 ) H_{\chi_t}= \begin{pmatrix} -[m_1]_\times & 0_{3\times3} & I_{3\times3} \\ \vdots \\ -[m_k]_\times & 0_{3\times3} & I_{3\times3} \end{pmatrix} Hχt=[m1]×[mk]×03×303×3I3×3I3×3

其中 m k m_{k} mk是观测到的 l a n d m a r k landmark landmark在世界系下的坐标。而观测误差与 b i a s bias bias的误差没有直接关系,即

H Θ t = ( 0 3 k × 3    0 3 k × 3 ) H_{\Theta_t}=(0_{3k\times3}\ \ 0_{3k\times3}) HΘt=(03k×3  03k×3)

同理,线性状态误差的更新变为了:

( ξ t + ζ t + ) = ( ξ t ζ t ) + ( K t ξ K t ζ ) z ~ t \begin{pmatrix} \xi_t^+ \\ \zeta_t^+ \end{pmatrix}= \begin{pmatrix} \xi_t \\ \zeta_t \end{pmatrix}+ \begin{pmatrix} K_t^\xi \\ K_t^\zeta \end{pmatrix}\tilde{z}_t (ξt+ζt+)=(ξtζt)+(KtξKtζ)z~t

卡尔曼增益的计算都一样,即

K t = ( K t ξ K t ζ ) = P t H t T ( H t P t H t T + V t ) − 1 K_t= \begin{pmatrix} K_t^\xi \\ K_t^\zeta \end{pmatrix}=P_tH_t^T(H_tP_tH_t^T+V_t)^{-1} Kt=(KtξKtζ)=PtHtT(HtPtHtT+Vt)1

只是现在的 H t = ( H χ t    H Θ t ) H_t=(H_{\chi_t}\ \ H_{\Theta_t}) Ht=(Hχt  HΘt),状态的协方差矩阵 P t P_{t} Pt维数上也有相应改变。

最终,混合状态的更新方式也采用混合的形式,能表示为群元素的部分采用指数更新,不能表示为群元素的部分采用普通的线性更新,即

( χ ^ t + Θ ^ t + ) = ( Exp ( K t ξ z ~ t ) χ ^ t Θ ^ t + K t ζ z ~ t ) \begin{pmatrix} \hat{\chi}_t^+ \\ \hat{\Theta}_t^+ \end{pmatrix}= \begin{pmatrix} \text{Exp}(K_t^\xi\tilde{z}_t)\hat{\chi}_t \\ \hat{\Theta}_t+K_t^{\zeta}\tilde{z}_t \end{pmatrix} (χ^t+Θ^t+)=(Exp(Ktξz~t)χ^tΘ^t+Ktζz~t)

I E K F IEKF IEKF算法总结

设系统方程满足如下形式:

Θ ˙ t = g ( Θ t ) χ ˙ t = f ( χ t , u t , Θ t ) y t = h ( χ t , Θ t ) \begin{aligned} \dot\Theta_t &= g(\Theta_t) \\ \dot\chi_t &= f(\chi_t, u_t, \Theta_t) \\ y_t &= h(\chi_t, \Theta_t) \end{aligned} Θ˙tχ˙tyt=g(Θt)=f(χt,ut,Θt)=h(χt,Θt)

其中 χ t , Θ t \chi_t, \Theta_t χt,Θt都是需要估计的量,但是 χ t \chi_{t} χt是一个群元素 ( 比 如 S E k ( 3 ) 中 的 元 素 ) , Θ t (比如SE_k(3)中的元素),\Theta_{t} SEk(3)Θt是一个矢量,一般不可直接观测。则该系统在 I E K F IEKF IEKF框架下,具有如下形式的系统矩阵 F t F_{t} Ft和观测矩阵 H t H_{t} Ht:

F t = ( F χ t F χ t , Θ t 0 F Θ t ) ,    H t = ( H χ t    H Θ t ) F_t= \begin{pmatrix} F_{\chi_t} & F_{\chi_t, \Theta_t} \\ 0 & F_{\Theta_t} \end{pmatrix},\ \ H_t=(H_{\chi_t}\ \ H_{\Theta_t}) Ft=(Fχt0Fχt,ΘtFΘt),  Ht=(Hχt  HΘt)

且卡尔曼增益

K t = ( K t ξ K t ζ ) = P t H t T ( H t P t H t T + V t ) − 1 K_t= \begin{pmatrix} K_t^\xi \\ K_t^\zeta \end{pmatrix}=P_tH_t^T(H_tP_tH_t^T+V_t)^{-1} Kt=(KtξKtζ)=PtHtT(HtPtHtT+Vt)1

状态的更新方式为

( χ ^ t + Θ ^ t + ) = ( Exp ( K t ξ z ~ t ) χ ^ t Θ ^ t + K t ζ z ~ t ) \begin{pmatrix} \hat{\chi}_t^+ \\ \hat{\Theta}_t^+ \end{pmatrix}= \begin{pmatrix} \text{Exp}(K_t^\xi\tilde{z}_t)\hat{\chi}_t \\ \hat{\Theta}_t+K_t^{\zeta}\tilde{z}_t \end{pmatrix} (χ^t+Θ^t+)=(Exp(Ktξz~t)χ^tΘ^t+Ktζz~t)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值