The error state in MSCKF

2020-07-16  本文已影响0人  轻骑兵1390

1. IMU state vector

{x}_{I}= \begin{bmatrix} ^I_G{q} & ^G{p} & ^G{V} & {b}_{g} & {b}_{a} \end{bmatrix}^{T}

2. The continuous-time motion dynamics of the IMU

^I_G\dot{q}^{T} = \frac{1}{2}\Omega(^I{w}(t)) \cdot \space ^I_G{q}(t) \tag{1}

^G{\dot{p}(t)} = \space^G{v}(t) \tag{2}

^G{\dot{v}(t)} = \space^G{a}(t) \tag{3}

\dot{b}_g(t) = n_{wg}(t) \tag{4}

\dot{b}_a(t) = n_{wa}(t) \tag{5}

3. Error state

\tilde{x}_{I}= \begin{bmatrix} ^I\tilde{\theta} & ^G\tilde{p} & ^G\tilde{V} & \tilde{b}_{g} & \tilde{b}_{a} \end{bmatrix}^{T}

4. Error Propagation

4.1 Orientation

From time step l to l+1, the estimated rotation matrix is
\hat{R}_{l+1|l} = \space^{I_{l+1}}_{I_{l}}\hat{R} \cdot \hat{R}_{l|l} \tag{7}
where

We define the error state \theta by

^{I_{l+1}}_{I_l}{R} \approx(I_3-[\tilde{\theta}_\times]) \cdot \space^{I_{l+1}}_{I_l}\hat{R} \tag{8}
where ^{I_{l+1}}_{G}{R} = \space^{I_{l+1}}_{I_l}{R} \cdot \space^{I_{l}}_{G}{R},
From the above functions, (7) and (8), we obtain the following expression for the linearized error propagation:
\begin{aligned} ^{I} \tilde{\boldsymbol{\theta}}_{\ell+1 \mid \ell} &\simeq \space^{I_{\ell+1}}_{I_{\ell}} \hat{\mathbf{R}} \cdot^{I} \tilde{\boldsymbol{\theta}}_{\ell \mid \ell}+\tilde{\boldsymbol{\theta}}_{\Delta \ell}\\ &\simeq \hat{\mathbf{R}}_{\ell+1 \mid \ell} \hat{\mathbf{R}}_{\ell \mid \ell}^{T} \cdot^{I} \tilde{\boldsymbol{\theta}}_{\ell \mid \ell}+\tilde{\boldsymbol{\theta}}_{\Delta \ell} \end{aligned} \tag{9}
The function is represented by equation (15) in msckf2.0 and its detail is shown in The Detail of The Error State in MSCKF.

4.2 Velocity

The velocity propation equation is
^G\mathbf{v}_{l+1|l} = ^G\mathbf{v}_{l|l} + \int_{t_l}^{t_{l+1}}{\space^G\mathbf{a}_\tau d\tau} \tag{10}
where \tau represent the integral of time and ^G\mathbf{a} is the acceleration with respect to global frame.
^G\mathbf{v}_{l+1|l} = ^G\mathbf{v}_{l|l} + \int_{t_l}^{t_{l+1}}{\left( \space^G_{I_\tau} \mathbf{R}\cdot \space^{I_\tau}\mathbf{a}_m + \space^G\mathbf{g} \right) d\tau} \tag{11}
where \space^{I_\tau}\mathbf{a}_m is imu measurement in body frame at time \tau. \space^G_{I_\tau}\mathbf{R}\cdot \space^{I_\tau}\mathbf{a}_m compute the measurement with repsect to global frame. \space^G_{I_\tau} \mathbf{R}\cdot \space^{I_\tau}\mathbf{a}_m + \space^G\mathbf{g} add gravity, where the imu measurement contains a negative gravity (-\mathbf{g}) as following:
\mathbf{a}_m = \space^I_G\mathbf{R}(\space^G\mathbf{a}-\space^G\mathbf{g})+\mathbf{b}_\mathbf{a}+\mathbf{n}_\mathbf{a} \tag{12}
where \mathbf{b}_\mathbf{a} is bias and \mathbf{n}_\mathbf{a} is noise.

We define s_l = \int_{t_l}^{t_{l+1}}\space_{I_\tau}^{I_l}\mathbf{R} \cdot \space^{I_\tau}\mathbf{a}_m d\tau and rebuild the velocity propagation as following:
^G\mathbf{v}_{l+1|l} = ^G\mathbf{v}_{l|l} + \space^G\mathbf{g} \Delta t + \mathbf{R}^T_{l|l}\mathbf{s}_l \tag{13}

Finally the error state of velocity is represented as following:
^G \tilde{\mathbf{v}}_{l+1|l} \simeq -\hat{\mathbf{R}}_{l|l}^{T} \cdot [\hat{s}_l]_\times \space^I\tilde{\theta}_{l|l} + \space^G\tilde{\mathbf{v}}_{l|l} + \hat{\mathbf{R}}^T_{l|l}\tilde{s}_l \tag{14}
where \tilde s only depends on the IMU noise. The detail of function is shown in The Detail of The Error State in MSCKF.

4.3 Pose
The position of IMU propagation is:
\begin{aligned} ^G \mathbf{p}_{l+1|l} &= \space^G \mathbf{p}_{l|l} + \int_{t_l}^{t_{l+1}}\space^G \mathbf{v}_\tau d\tau \\ &= \space^G \mathbf{p}_{l|l} + \space^G \mathbf{v}_{l|l} \cdot \Delta t + \frac{1}{2}\space^G g \Delta t^2 + \mathbf{R}_{l|l}^T \mathbf{y}_l \end{aligned} \tag{15}
where \mathbf{y}_l =\int_{t_{l}}^{t_{l}+1} \int_{t_{l}}^{s} I_{\tau} \hat{\mathbf{R}}\space^{I_{\tau}} \mathbf{a}_{m} d \tau d s. And proceeding to error-state model, we obtain:
^G\tilde{p}_{l+1|l} \simeq -\hat{\mathbf{R}}_{l|l}^T \cdot [\hat{\mathbf{y}}_l]_\times \space^I\tilde{\theta}_{l|l}+\space^G\mathbf{\tilde{v}}_{l|l}\Delta t + \space^G\tilde{\mathbf{p}}_{l|l} + \tilde{\mathbf{R}}_{l|l}^T\tilde{\mathbf{y}}_l \tag{16}
By combining (9), (14) and (16), the error propagation function in MSCKF is writen as following:
\underbrace{\begin{bmatrix} ^I \tilde{\boldsymbol{\theta}}_{l+1|l} \\ ^G {\tilde{\mathbf{p}}_{l+1|l}} \\ ^G {\tilde{\mathbf{V}}_{l+1|l}} \end{bmatrix}}_{\tilde{\mathbf{x}}_{I_{l+1|l}}}= \underbrace{\begin{bmatrix} \hat{\mathbf{R}}_{l+1|l} \hat{\mathbf{R}}_{l|l}^{T} & \mathbf{0}_{3} & \mathbf{0}_{3} \\ -\hat{\mathbf{R}}_{l|l}^{T} [\hat{\mathbf{y}}_{l}]_\times & \mathbf{I}_{3} & \Delta t \mathbf{I}_{3} \\ -\hat{\mathbf{R}}_{l|l}^{T} [\hat{\mathbf{s}}_{l}]_\times & \mathbf{0}_{3} & \mathbf{I}_{3} \end{bmatrix}}_{\mathbf{\Phi}_{I_{l}}} \underbrace{\begin{bmatrix} ^I \tilde{\boldsymbol{\theta}}_{l|l} \\ ^G{\tilde{\mathbf{p}}}_{l|l} \\ ^G{\tilde{\mathbf{v}}}_{l|l} \end{bmatrix}}_{\tilde{\mathbf{x}}_{I_{\ell \mid \ell}}}+ \underbrace{\begin{bmatrix} \tilde{\boldsymbol{\theta}}_{\Delta \ell} \\ \hat{\mathbf{R}}_{l|l}^{T} \tilde{\mathbf{y}}_l \\ \hat{\mathbf{R}}_{l|l}^{T} \tilde{\mathbf{s}}_{l} \end{bmatrix}}_{\mathbf{w}_{l}} \tag{17}
\hat{\mathbf{s}}_l and \hat{\mathbf{y}}_l can be writen by:
\begin{aligned} \begin{array}{l} \hat{\mathbf{s}}_{l}=\hat{\mathbf{R}}_{l|l}({ }^{G} \hat{\mathbf{v}}_{l+1|l}-{ }^{G} \hat{\mathbf{v}}_{l|l}-{ }^{G} {g} \Delta t) \\ \hat{\mathbf{y}}_l=\hat{\mathbf{R}}_{l|l}({ }^{G} \hat{\mathbf{p}}_{l+1|l}-{ }^{G} \hat{\mathbf{p}}_{l|l}-{ }^{G} \hat{\mathbf{v}}_{l|l} \Delta t-\frac{1}{2} \space^G g\Delta t^{2}) \end{array} \end{aligned}

上一篇 下一篇

猜你喜欢

热点阅读