IEEE/ION PLANS 2023, Monterey, CA
The views expressed in this article are those of the author and do not necessarily reflect the official policy or position of the United States Government, Department of Defense, United States Air Force or Air University.
Distribution A: Authorized for public release. Distribution is unlimited. Case No. 2023-0277.
https://rpubs.com/friendly/test-newcommands https://quarto.org/docs/authoring/markdown-basics.html#equations
https://stackoverflow.com/questions/41362012/how-to-insert-font-awesome-icons-in-mathjax
Font-Awesome will only work for html type output
\[ \newcommand{\dvec}[1]{\dot{\vec{#1}}} \newcommand{\ddvec}[1]{\ddot{\vec{#1}}} \newcommand{\mat}[1]{\mathbf{#1}} \newcommand{\earth}{{\oplus}} \newcommand{\ext}{\text{ext}} \newcommand{\faPlane}{\class{fa fa-plane}{}} \newcommand{\plane}{\class{fa fa-plane}{}} \newcommand{\sensor}{\text{Sensor}} \]
\[ \vec{x}= \begin{bmatrix} \smash[b]{\underbrace{\begin{matrix} \delta \vec{p} & \delta \vec{v} & \delta \vec{\epsilon} & \vec{b}_a & \vec{b}_g\end{matrix}}_{\text{Pinson 15}}} & \smash[b]{\underbrace{\begin{matrix}\delta h_a & \delta a\end{matrix}}_{\text{Baro}}} & S_\text{fogm} & S_\text{bias} \end{bmatrix} \]
\[ z = h(\vec{x}) + v \] \[ h(\vec{x}) = |B_\mathrm{a}| + |B_\text{earth}| + {\color{gray}|B_\text{Plane}}| + S_\text{fogm} + S_\text{bias} \]
Discrete time dynamics at time index \(k+1\) the state vector \(\vec{x}_{k+1}\) is \[ \vec{x}_{k+1} = {\Phi}_k \vec{x}_k + {B}_k \vec{u}_k + \vec{w}_k \]
A measurement \(\vec{z}\) is \[ \vec{z}_k = {H}_k \vec{x}_k + \vec{v}_k \]
\({H}\) is connection between state \(\vec{x}\) and measurement \(\vec{z}\)
\(\vec{v}\sim\mathcal{N}(0,{R})\) is the noise process of the measurement with covariance \({R}\)
The state \(\vec{x}_{k}\) has a mean \(\hat{\vec{x}}_{k}\) and covariance \({P}_{k}\) which propagates forward in time (with no other information) like: \[ \begin{aligned} \hat{\vec{x}}_{k+1}^- & = {\Phi}_k \hat{\vec{x}}_{k} + \cancelto{0}{{B}\vec{u}_k} \\ {P}_{k+1}^- & = {\Phi}_k {P}_{k} {\Phi}_k^T + {Q}_k \end{aligned} \] When a measurement \(\vec{z}\) is made, we can update the propagated state vector \[ \begin{aligned} \hat{\vec{x}}_{k} &= \hat{\vec{x}}_{k}^- + {K}_k (\vec{z}_k - {H}_k \hat{\vec{x}}_{k}^-)\\ {P}_k &= ({I} -{K}_k {H}_k ) {P}_{k}^- \\ {K}_k &= {P}_{k}^- {H}_k^T( {H}_k {P}_{k}^- {H}_k^T + {R}_k )^{-1} \end{aligned} \]
The map-matching measurement processor is non-linear. Two primary approaches have been used for MagNav:
Generalize the state dynamics and measurement \[ \begin{aligned} \dvec{x} & = \vec{f}(\vec{x}, \vec{u}_d, t) + \vec{u}(t) \\ \vec{z} & = \vec{h}(\vec{x}, t) + \vec{v}(t) \end{aligned} \]
Write the state \(\vec{x}\) in terms of some \(\vec{x}^*(t)\) and a deviation from it \(\Delta\vec{x}(t)\) \[ \vec{x}(t) = \vec{x}^*(t) + \Delta\vec{x}(t) \]
\[ \begin{aligned} \dvec{x}^* + \Delta\dvec{x} & = \vec{f}(\vec{x}^* + \Delta\vec{x}, \vec{u}_d, t) + \vec{u}(t) \\ \vec{z} & = \vec{h}(\vec{x}^* +\Delta\vec{x}, t) + \vec{v}(t) \end{aligned} \]
\(\Delta\vec{x}\) is small and use Taylor series (so many Taylor series) \[ \begin{aligned} \dvec{x}^* + \Delta\dvec{x} & \approx \vec{f}(\vec{x}^*, \vec{u}_d, t) + \left[ \frac{\partial \vec{f}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*} \cdot \Delta\vec{x} + \vec{u}(t) \\ \vec{z} & \approx \vec{h}(\vec{x}^*, t) + \left[ \frac{\partial \vec{h}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*} \cdot \Delta\vec{x} + \vec{v}(t) \end{aligned} \] If \(\vec{x}^*\) is just a single known trajectory, then this is just the Linearized Kalman filter.
If \(\vec{x}^*\) is our trajectory estimate, then this is the Extended Kalman filter.
\[ \begin{aligned} \dvec{x}^* + \Delta\dvec{x} & \approx \vec{f}(\vec{x}^*, \vec{u}_d, t) + \left[ \frac{\partial \vec{f}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*} \cdot \Delta\vec{x} + \vec{u}(t) \\ \vec{z} & \approx \vec{h}(\vec{x}^*, t) + \left[ \frac{\partial \vec{h}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*} \cdot \Delta\vec{x} + \vec{v}(t) \end{aligned} \] Becomes \[ \begin{aligned} \dvec{x}^* + \Delta\dvec{x} & \approx \vec{f}(\vec{x}^*, \vec{u}_d, t) + \mat{F} \cdot \Delta\vec{x} + \vec{u}(t) \\ \vec{z} & \approx \vec{h}(\vec{x}^*, t) + \mat{H} \cdot \Delta\vec{x} + \vec{v}(t) \end{aligned} \] with \[ \mat{F} = \left[ \frac{\partial \vec{f}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*},\ \mat{H} = \left[ \frac{\partial \vec{h}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*} \]
Write the linearized measurement as \[ \vec{z} - \vec{h}(\vec{x}^*) = \mat{H} \Delta \vec{x} + \vec{v} \] The incremental estimate update at time \(t_k\) is \[ \Delta\hat{\vec{x}}_k = \Delta\hat{\vec{x}}_k^- + \mat{K}_k \left[ \vec{z}_k - \vec{h}(\vec{x}^*_k) - \mat{H}_k \Delta\hat{\vec{x}}_k^- \right] \] Write the estimate of what the measurement should be \[ \hat{\vec{z}}^-_k = \vec{h}(\vec{x}^*_k) + \mat{H}_k \Delta\hat{\vec{x}}_k^- \] And then \[ \underbrace{\vec{x}^*_k + \Delta\hat{\vec{x}}_k}_{\textstyle\hat{\vec{x}}_k} = \underbrace{\vec{x}^*_k + \Delta\hat{\vec{x}}_k^-}_{\textstyle\hat{\vec{x}}_k^-} + \mat{K}_k \left[ \vec{z}_k - \hat{\vec{z}}^-_k \right] \]
(Titterton and Weston 2004), (Raquet 2021)
Pinson 9-state model for INS is: \[ \vec{x} = \begin{bmatrix} \delta x_n \\ \delta x_e \\ \delta x_d \\ \delta v_n \\ \delta v_e \\ \delta v_d \\ \delta\epsilon_n \\ \delta\epsilon_e \\ \delta\epsilon_d \\ \end{bmatrix} = \begin{bmatrix} \delta\vec{x} \\ \delta\vec{v} \\ \delta\vec{\epsilon} \\ \end{bmatrix} \]
Where:
and \[ \dvec{x} = \mat{F} \vec{x} \]
\[ \begin{bmatrix} \delta\dvec{x} \\ \delta\dvec{v} \\ \delta\dvec{\epsilon} \end{bmatrix} = \begin{bmatrix} F_{xx} & F_{xv} & F_{x\epsilon} \\ F_{vx} & F_{vv} & F_{v\epsilon} \\ F_{\epsilon x} & F_{\epsilon v} & F_{\epsilon \epsilon} \\ \end{bmatrix} \begin{bmatrix} \delta \vec{x} \\ \delta \vec{v} \\ \delta \vec{\epsilon} \\ \end{bmatrix} \] We are working in geodetic coordinates so the elements of \(\mat{F}\) depend upon Earth specifc parameters to account for Coriolis force.
Variable | Description | Value/Units |
---|---|---|
\(\phi\) | latitude | radian |
\(v_n\) | north velocity | meter/second |
\(v_e\) | east velocity | meter/second |
\(v_d\) | down velocity | meter/second |
\(f_n\) | north specific force | meter/second/second |
\(f_e\) | east specific force | meter/second/second |
\(f_d\) | down specific force | meter/second/second |
\(R_\earth\) | Earth radius | 635300 meter |
\(\Omega_\earth\) | Earth rotation rate | 7.2921151467e-5/second |
\[ F_{xx} = \begin{bmatrix} 0 & 0 & -\frac{v_n}{R_\earth^2}\\ \frac{v_e \tan \phi}{R_\earth\cos \phi} & 0 & \frac{v_e}{R_\earth^2 \cos\phi} \\ 0 & 0 & 0 \\ \end{bmatrix} \]
\[ F_{xv} = \begin{bmatrix} \frac{1}{R_\earth} & 0 & 0\\ 0 & \frac{1}{R_\earth\cos\phi} & 0 \\ 0 & 0 & -1 \\ \end{bmatrix} \]
\[ F_{x\epsilon} = \mat{0}_{3\times 3} \]
\[ F_{vx} = \begin{bmatrix} v_e \left( 2\Omega_\earth\cos\phi + \frac{v_e}{R_\earth\cos^2\phi} \right) & 0 & \frac{v_e^2\tan\phi - v_n v_d}{R_\earth^2}\\ 2\Omega_\earth \left(v_n \cos\phi - v_d \sin\phi\right) + \frac{v_n v_e}{R_\earth \cos^2\phi} & 0 & \frac{-v_e (v_n\tan\phi +v_d)}{R_\earth^2}\\ 2\Omega_\earth v_e \sin \phi & 0 & \frac{v_n^2 + v_e^2}{R_\earth} \\ \end{bmatrix} \]
\[ F_{vv} = \begin{bmatrix} \frac{v_d}{R_\earth} & -2 \left( \Omega_\earth \sin\phi + \frac{v_e\tan\phi}{R_\earth} \right) & \frac{v_n}{R_\earth} \\ 2\Omega_\earth\sin\phi + \frac{v_e\tan\phi}{R_\earth} & \frac{v_n\tan\phi+v_d}{R_\earth} & 2\Omega_\earth \cos\phi + \frac{v_e}{R_\earth} \\ -\frac{2v_n}{R_\earth} & -2 \left( \Omega_\earth \cos\phi + \frac{v_e}{R_\earth} \right) & 0 \\ \end{bmatrix} \]
\[ F_{v\epsilon} = \begin{bmatrix} 0 & -f_d & f_e \\ f_d & 0 & -f_n \\ -f_e & f_n & 0 \end{bmatrix} \]
\[ F_{\epsilon x} = \begin{bmatrix} -\Omega_\earth \sin\phi & 0 & -\frac{v_e}{R_\earth} \\ 0 & 0 & \frac{v_n}{R_\earth^2} \\ -\Omega_\earth \cos\phi - \frac{v_e}{R_\earth \cos^2\phi} & 0 & \frac{v_e\tan\phi}{R_\earth^2} \end{bmatrix} \]
\[ F_{\epsilon v } = \begin{bmatrix} 0 & 1/R_\earth & 0 \\ -1/R_\earth & 0 & 0 \\ 0 & \frac{\tan\phi}{R_\earth} & 0 \\ \end{bmatrix} \]
\[ F_{\epsilon\epsilon} = \begin{bmatrix} 0 & -\Omega_\earth\sin\phi + \frac{v_e}{R_\earth\tan\phi} & v_n/R_\earth \\ \Omega_\earth\sin\phi + \frac{v_e\tan\phi}{R_\earth} & 0 & \Omega_\earth\cos\phi + v_e/R_\earth \\ -v_n/R_\earth & -\Omega\cos\phi -v_e/R_\earth & 0 \\ \end{bmatrix} \]
\[ \vec{x} = \begin{bmatrix} \delta x_n \\ \delta x_e \\ \delta x_d \\ \delta v_n \\ \delta v_e \\ \delta v_d \\ \delta\epsilon_n \\ \delta\epsilon_e \\ \delta\epsilon_d \\ b_{a_x} \\ b_{a_y} \\ b_{a_z} \\ b_{g_x} \\ b_{g_y} \\ b_{g_z} \\ \end{bmatrix} = \begin{bmatrix} \delta\vec{x} \\ \delta\vec{v} \\ \delta\vec{\epsilon} \\ \vec{b_a}\\ \vec{b_g}\\ \end{bmatrix} \]
\[ \begin{bmatrix} \delta\dvec{x} \\ \delta\dvec{v} \\ \delta\dvec{\epsilon} \\ \dvec{b_a}\\ \dvec{b_g}\\ \end{bmatrix} = \begin{bmatrix} F_{xx} & F_{xv} & 0 & 0 & 0\\ F_{vx} & F_{vv} & F_{v\epsilon} & \mat{C}_b^n & 0 \\ F_{\epsilon x} & F_{\epsilon v} & F_{\epsilon \epsilon} & 0 & -\mat{C}_b^n \\ 0 & 0 & 0 & F_{aa} & 0 \\ 0 & 0 & 0 & 0 & F_{gg} \\ \end{bmatrix} \begin{bmatrix} \delta \vec{x} \\ \delta \vec{v} \\ \delta \vec{\epsilon} \\ \vec{b}_a\\ \vec{b}_g\\ \end{bmatrix} \]
\[ F_{aa} = \begin{bmatrix} -1/\tau_a & 0 & 0 \\ 0 & -1/\tau_a & 0 \\ 0 & 0 & -1/\tau_a\\ \end{bmatrix},\ F_{gg} = \begin{bmatrix} -1/\tau_g & 0 & 0 \\ 0 & -1/\tau_g & 0 \\ 0 & 0 & -1/\tau_g\\ \end{bmatrix} \] and \(\mat{C}_b^n\) is the direction cosine matrix that rotates from body to NED frame.
Results in an 18-component state vector \[ \begin{bmatrix} \delta \vec{x} & \delta \vec{v} & \delta \vec{\epsilon} & \vec{b}_a & \vec{b}_g & \delta h_a & \delta a & S \end{bmatrix} \]
\[ \begin{bmatrix} \delta\dvec{x} \\ \delta\dvec{v} \\ \delta\dvec{\epsilon} \\ \dvec{b}_a\\ \dvec{b}_g\\ \dot{h_a}\\ \dot{\delta_a}\\ \dot{S} \end{bmatrix} = \begin{bmatrix} F_{xx} & F_{xv} & 0 & 0 & 0 & F_{xb} & 0 \\ F_{vx} & F_{vv} & F_{v\epsilon} & \mat{C}_b^n & 0 & F_{vb} & 0 \\ F_{\epsilon x} & F_{\epsilon v} & F_{\epsilon \epsilon} & 0 & -\mat{C}_b^n & 0 & 0 \\ 0 & 0 & 0 & F_{aa} & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & F_{gg} &0 & 0 \\ F_{bp} & 0 & 0 & 0 & 0 & F_{bb} & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & F_{ss} \\ \end{bmatrix} \begin{bmatrix} \delta \vec{x} \\ \delta \vec{v} \\ \delta \vec{\epsilon} \\ \vec{b}_a\\ \vec{b}_g\\ \delta h_a \\ \delta a \\ S \end{bmatrix} \]
Barometer aiding: \[ \mat{F}_{xb} = \begin{bmatrix} 0 & 0 \\ 0 & 0 \\ k_1 & 0 \end{bmatrix},\ \mat{F}_{vb} = \begin{bmatrix} 0 & 0 \\ 0 & 0 \\ -k_2 & 1 \\ \end{bmatrix} \]
\[ \mat{F}_{bx} = \begin{bmatrix} 0 & 0 & 0\\ 0 & 0 & k_3 \\ \end{bmatrix},\ \mat{F}_{bb} = \begin{bmatrix} -\frac{1}{\tau_b} & 0 \\ -k_3 & 0 \\ \end{bmatrix} \]
The space weather, diurnal bias is given by: \[ \mat{F}_{ss} = \frac{1}{\tau_s} \]
The scalar sensor measures: \[ |\vec{B}_\text{total}| = |\vec{B}_\ext + \vec{B}_\text{\faPlane} | \] and \[ \vec{B}_\ext = \vec{B}_\earth+ \vec{B}_\text{anomaly} + \vec{B}_\text{disturbance} \]
\[ \begin{aligned} \vec{z} & \approx \vec{h}(\vec{x}^*, t) + \mat{H} \cdot \Delta\vec{x} + \vec{v}(t) \end{aligned} \]
\[ \mat{H} = \left[ \frac{\partial \vec{h}}{\partial \vec{x}}\right]_{\vec{x}=\vec{x}^*} \]
\[ \mat{H}(\vec{x}^*) = \begin{bmatrix} \frac{\partial h(\vec{x}^*)}{\partial x_n} \\ \frac{\partial h(\vec{x}^*)}{\partial x_e} \\ \frac{\partial h(\vec{x}^*)}{\partial x_d} \\ \mat{0}_{1x15} \end{bmatrix} \leftarrow\text{This is the gradient of the map} \] Both the map and 3D gradient of the map are needed in order to make a measurement and incorporate it.
ION/IEEE PLANS MagNav Tutorial 2023