Introduction
Formal Description
NavToolkit is designed to estimate a set of time-varying values \(\mathbf{x}\) given a set of observations \(\mathbf{z}\) which contain information about \(\mathbf{x}\). Let \(\mathbf{x}_k\) be the Mx1 vector representing the value of \(\mathbf{x}\) at time \(t_k\) and \(\mathbf{z}_k\) be the Nx1 set of observations collected at \(t_k\). Then NavToolkit assumes that the way \(\mathbf{x}\) changes from one time epoch to the next is well-modeled by
where \(\mathbf{g}\) is the discrete-time propagation function, and \(\mathbf{w}\) is a white Gaussian noise source. It also assumes that the observations are related to the state vector \(\mathbf{x}\) by
where \(\mathbf{h}\) is the measurement model function, and \(\mathbf{v}\) is a white Gaussian noise source.
Estimators that are able to estimate problems modeled as above are known as filters. NavToolkit’s goal is to build filters that estimate \(\mathbf{x}\) at \(t_k\) (\(\mathbf{x}_{k})\) given the measurement at \(t_k\) (\(\mathbf{z}_{k}\)) along with all prior received measurements (\(\mathbf{z}_{k-1},\ldots)\). As measurements come in, we can continually refine our estimate of \(\mathbf{x}\) using the new information, calculating a new estimate of \(\mathbf{x}_{k+1}\) when the measurement \(\mathbf{z}_{k+1}\) is received, and so forth. The primary task a user of NavToolkit must complete is defining and describing \(\mathbf{g},\mathbf{w},\mathbf{h}\), and \(\mathbf{v}\) for their particular problem of interest.
In the special case of a linear model, these equations can be rewritten as:
where \(\mathbf{\Phi}_{k-1}\) is the Jacobian matrix of \(\mathbf{g}(\mathbf{x}_{k-1})\), and the covariance of \(\mathbf{w}_{k}\) is \(\mathbf{Qd}_{k}\) (the discrete-time process noise covariance matrix), defined as \(\mathbf{Qd}_{k}= E[\mathbf{w}_{k} \mathbf{w}_{k}^{T} ]\).
where \(\mathbf{H}_{k}\) is the Jacobian matrix of \(\mathbf{h}(\mathbf{x}_{k})\), and the covariance of \(\mathbf{v}_{k}\) is \(\mathbf{R}_{k}\) (the measurement noise covariance matrix), defined as \(\mathbf{R}_{k}= E[\mathbf{v}_{k} \mathbf{v}_{k}^{T} ]\).
Targeted Problems
NavToolkit aims to be flexible enough to solve a large portion of real-world complimentary navigation problems, including:
Classic GPS/INS fusion.
Problems with highly non-linear \(\mathbf{h}\) functions, solved via Monte-Carlo methods.
Simultaneous Localization and Mapping (SLAM) problems, including live state insertion, deletion, and maintenance.
Post-processed non-causal solutions, including forward/backward smoothing.
Both inertial-present (error state) and inertial-free (direct state) sensor fusion approaches.