2180 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			2180 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Plaintext
		
	
	
| #LyX 2.3 created this file. For more info see http://www.lyx.org/
 | |
| \lyxformat 544
 | |
| \begin_document
 | |
| \begin_header
 | |
| \save_transient_properties true
 | |
| \origin unavailable
 | |
| \textclass article
 | |
| \use_default_options true
 | |
| \maintain_unincluded_children false
 | |
| \language english
 | |
| \language_package default
 | |
| \inputencoding auto
 | |
| \fontencoding global
 | |
| \font_roman "default" "default"
 | |
| \font_sans "default" "default"
 | |
| \font_typewriter "default" "default"
 | |
| \font_math "auto" "auto"
 | |
| \font_default_family default
 | |
| \use_non_tex_fonts false
 | |
| \font_sc false
 | |
| \font_osf false
 | |
| \font_sf_scale 100 100
 | |
| \font_tt_scale 100 100
 | |
| \use_microtype false
 | |
| \use_dash_ligatures true
 | |
| \graphics default
 | |
| \default_output_format default
 | |
| \output_sync 0
 | |
| \bibtex_command default
 | |
| \index_command default
 | |
| \paperfontsize 11
 | |
| \spacing single
 | |
| \use_hyperref false
 | |
| \papersize default
 | |
| \use_geometry true
 | |
| \use_package amsmath 1
 | |
| \use_package amssymb 1
 | |
| \use_package cancel 1
 | |
| \use_package esint 1
 | |
| \use_package mathdots 1
 | |
| \use_package mathtools 1
 | |
| \use_package mhchem 1
 | |
| \use_package stackrel 1
 | |
| \use_package stmaryrd 1
 | |
| \use_package undertilde 1
 | |
| \cite_engine basic
 | |
| \cite_engine_type default
 | |
| \biblio_style plain
 | |
| \use_bibtopic false
 | |
| \use_indices false
 | |
| \paperorientation portrait
 | |
| \suppress_date false
 | |
| \justification true
 | |
| \use_refstyle 1
 | |
| \use_minted 0
 | |
| \index Index
 | |
| \shortcut idx
 | |
| \color #008000
 | |
| \end_index
 | |
| \leftmargin 3cm
 | |
| \topmargin 3cm
 | |
| \rightmargin 3cm
 | |
| \bottommargin 3cm
 | |
| \secnumdepth 3
 | |
| \tocdepth 3
 | |
| \paragraph_separation indent
 | |
| \paragraph_indentation default
 | |
| \is_math_indent 0
 | |
| \math_numbering_side default
 | |
| \quotes_style english
 | |
| \dynamic_quotes 0
 | |
| \papercolumns 1
 | |
| \papersides 1
 | |
| \paperpagestyle default
 | |
| \tracking_changes false
 | |
| \output_changes false
 | |
| \html_math_output 0
 | |
| \html_css_as_file 0
 | |
| \html_be_strict false
 | |
| \end_header
 | |
| 
 | |
| \begin_body
 | |
| 
 | |
| \begin_layout Title
 | |
| The New IMU Factor
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Author
 | |
| Frank Dellaert & Varun Agrawal
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset CommandInset include
 | |
| LatexCommand include
 | |
| filename "macros.lyx"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset FormulaMacro
 | |
| \renewcommand{\sothree}{\mathfrak{so(3)}}
 | |
| {\mathfrak{so(3)}}
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset FormulaMacro
 | |
| \newcommand{\Rnine}{\mathfrak{\mathbb{R}^{9}}}
 | |
| {\mathfrak{\mathbb{R}^{9}}}
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset FormulaMacro
 | |
| \newcommand{\Rninethree}{\mathfrak{\mathbb{R}^{9\times3}}}
 | |
| {\mathfrak{\mathbb{R}^{9\times3}}}
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset FormulaMacro
 | |
| \newcommand{\Rninesix}{\mathfrak{\mathbb{R}^{9\times6}}}
 | |
| {\mathfrak{\mathbb{R}^{9\times6}}}
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset FormulaMacro
 | |
| \newcommand{\Rninenine}{\mathfrak{\mathbb{R}^{9\times9}}}
 | |
| {\mathfrak{\mathbb{R}^{9\times9}}}
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| IMU Factor
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| The IMU factor has 2 variants:
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| ImuFactor is a 5-way factor between the previous pose and velocity, the
 | |
|  current pose and velocity, and the current IMU bias.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| ImuFactor2 is a 3-way factor between the previous NavState, the current
 | |
|  NavState and the current IMU bias.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Both variants take a PreintegratedMeasurements object which encodes all
 | |
|  the IMU measurements between the previous timestep and the current timestep.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| There are also 2 variants of this class:
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| Manifold Preintegration: This version keeps track of the incremental NavState
 | |
|  
 | |
| \begin_inset Formula $\Delta X_{ij}$
 | |
| \end_inset
 | |
| 
 | |
|  with respect to the previous NavState, on the NavState manifold itself.
 | |
|  It also keeps track of the 
 | |
| \begin_inset Formula $\Rninesix$
 | |
| \end_inset
 | |
| 
 | |
|  Jacobian of 
 | |
| \begin_inset Formula $\Delta X_{ij}$
 | |
| \end_inset
 | |
| 
 | |
|  w.r.t.
 | |
|  the bias.
 | |
|  This corresponds to Forster et.
 | |
|  al.
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| key "Forster15rss"
 | |
| literal "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| Tangent Preintegration: This version keeps track of the incremental NavState
 | |
|  in the NavState tangent space instead.
 | |
|  This is a 
 | |
| \begin_inset Formula $\Rnine$
 | |
| \end_inset
 | |
| 
 | |
|  vector 
 | |
| \emph on
 | |
| preintegrated_
 | |
| \emph default
 | |
| .
 | |
|  It also keeps track of the 
 | |
| \begin_inset Formula $\Rninesix$
 | |
| \end_inset
 | |
| 
 | |
|  jacobian of the 
 | |
| \emph on
 | |
| preintegrated_
 | |
| \emph default
 | |
|  w.r.t.
 | |
|  the bias.
 | |
|  
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| The main function of a factor is to calculate an error.
 | |
|  This is done exactly the same in both variants: 
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| e(X_{i},X_{j})=X_{j}\ominus\widehat{X_{j}}\label{eq:imu-factor-error}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where the predicted NavState 
 | |
| \begin_inset Formula $\widehat{X_{j}}$
 | |
| \end_inset
 | |
| 
 | |
|  at time 
 | |
| \begin_inset Formula $t_{j}$
 | |
| \end_inset
 | |
| 
 | |
|  is a function of the NavState 
 | |
| \begin_inset Formula $X_{i}$
 | |
| \end_inset
 | |
| 
 | |
|  at time 
 | |
| \begin_inset Formula $t_{i}$
 | |
| \end_inset
 | |
| 
 | |
|  and the preintegrated measurements 
 | |
| \begin_inset Formula $PIM$
 | |
| \end_inset
 | |
| 
 | |
| :
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \widehat{X_{j}}=f(X_{i},PIM)
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| The noise model associated with this factor is assumed to be zero-mean Gaussian
 | |
|  with a 
 | |
| \begin_inset Formula $9\times9$
 | |
| \end_inset
 | |
| 
 | |
|  covariance matrix 
 | |
| \begin_inset Formula $\Sigma_{ij}$
 | |
| \end_inset
 | |
| 
 | |
| , which is defined in the tangent space 
 | |
| \begin_inset Formula $T_{X_{j}}\mathcal{N}$
 | |
| \end_inset
 | |
| 
 | |
|  of the NavState manifold at the NavState 
 | |
| \begin_inset Formula $X_{j}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  This (discrete-time) covariance matrix is computed in the preintegrated
 | |
|  measurement class, of which there are two variants as discussed above.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Combined IMU Factor
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| The IMU factor above requires that bias drift over time be modeled as a
 | |
|  separate stochastic process (using a BetweenFactor for example), a crucial
 | |
|  aspect given that the preintegrated measurements depend on these bias values
 | |
|  and are thus correlated.
 | |
|  For this reason, we provide another type of IMU factor which we term the
 | |
|  Combined IMU Factor.
 | |
|  This factor similarly has 2 variants:
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| CombinedImuFactor is a 6-way factor between the previous pose, velocity
 | |
|  and IMU bias and the current pose, velocity and IMU bias.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| CombinedImuFactor2 is a 4-way factor between the previous NavState and IMU
 | |
|  bias and the current NavState and IMU bias.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Since the Combined IMU Factor has a larger state variable due to the inclusion
 | |
|  of IMU biases, the noise model associated with this factor is assumed to
 | |
|  be a zero mean Gaussian with a 
 | |
| \begin_inset Formula $15\times15$
 | |
| \end_inset
 | |
| 
 | |
|  covariance matrix 
 | |
| \begin_inset Formula $\Sigma$
 | |
| \end_inset
 | |
| 
 | |
| , similarly defined on the tangent space of the NavState manifold.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Covariance Matrices
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| For IMU preintegration, it is important to propagate the uncertainty accurately
 | |
|  as well.
 | |
|  As such, we detail the various covariance matrices used in the preintegration
 | |
|  step.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Itemize
 | |
| Gyroscope Covariance 
 | |
| \begin_inset Formula $Q_{\omega}$
 | |
| \end_inset
 | |
| 
 | |
| : Measurement uncertainty of the gyroscope.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Itemize
 | |
| Gyroscope Bias Covariance 
 | |
| \begin_inset Formula $Q_{\Delta b^{\omega}}$
 | |
| \end_inset
 | |
| 
 | |
|  : The covariance associated with the gyroscope bias random walk.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Itemize
 | |
| Accelerometer Covariance 
 | |
| \begin_inset Formula $Q_{acc}$
 | |
| \end_inset
 | |
| 
 | |
|  : Measurement uncertainty of the accelerometer.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Itemize
 | |
| Accelerometer Bias Covariance 
 | |
| \begin_inset Formula $Q_{\Delta b^{acc}}$
 | |
| \end_inset
 | |
| 
 | |
|  : The covariance associated with the accelerometer bias random walk.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Itemize
 | |
| Integration Covariance 
 | |
| \begin_inset Formula $Q_{int}$
 | |
| \end_inset
 | |
| 
 | |
|  : This is the uncertainty due to modeling errors in the integration from
 | |
|  acceleration to velocity and position.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Itemize
 | |
| Initial Bias Estimate Covariance 
 | |
| \begin_inset Formula $Q_{init}$
 | |
| \end_inset
 | |
| 
 | |
|  : This is the uncertainty associated with the estimation of the bias (since
 | |
|  we jointly estimate the bias as well).
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Navigation States
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Let us assume a setup where frames with image and/or laser measurements
 | |
|  are processed at some fairly low rate, e.g., 10 Hz.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We define the state of the vehicle at those times as attitude, position,
 | |
|  and velocity.
 | |
|  These three quantities are jointly referred to as a NavState 
 | |
| \begin_inset Formula $X_{b}^{n}\define\left\{ R_{b}^{n},P_{b}^{n},V_{b}^{n}\right\} $
 | |
| \end_inset
 | |
| 
 | |
| , where the superscript 
 | |
| \begin_inset Formula $n$
 | |
| \end_inset
 | |
| 
 | |
|  denotes the 
 | |
| \emph on
 | |
| navigation frame
 | |
| \emph default
 | |
| , and 
 | |
| \begin_inset Formula $b$
 | |
| \end_inset
 | |
| 
 | |
|  the 
 | |
| \emph on
 | |
| body frame
 | |
| \emph default
 | |
| .
 | |
|  For simplicity, we drop these indices below where clear from context.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Vector Fields and Differential Equations
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We need a way to describe the evolution of a NavState over time.
 | |
|  The NavState lives in a 9-dimensional manifold 
 | |
| \begin_inset Formula $M$
 | |
| \end_inset
 | |
| 
 | |
| , defined by the orthonormality constraints on 
 | |
| \begin_inset Formula $\Rone$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  For a NavState 
 | |
| \begin_inset Formula $X$
 | |
| \end_inset
 | |
| 
 | |
|  evolving over time we can write down a differential equation
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \dot{X}(t)=F(t,X)\label{eq:diffeqM}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \begin_inset Formula $F$
 | |
| \end_inset
 | |
| 
 | |
|  is a time-varying 
 | |
| \series bold
 | |
| vector field
 | |
| \series default
 | |
|  on 
 | |
| \begin_inset Formula $M$
 | |
| \end_inset
 | |
| 
 | |
| , defined as a mapping from 
 | |
| \begin_inset Formula $\Rone\times M$
 | |
| \end_inset
 | |
| 
 | |
|  to tangent vectors at 
 | |
| \begin_inset Formula $X$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  A 
 | |
| \series bold
 | |
| tangent vector
 | |
| \series default
 | |
|  at 
 | |
| \begin_inset Formula $X$
 | |
| \end_inset
 | |
| 
 | |
|  is defined as the derivative of a trajectory at 
 | |
| \begin_inset Formula $X$
 | |
| \end_inset
 | |
| 
 | |
| , and for the NavState manifold this will be a triplet 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \left[\dot{R}(t,X),\dot{P}(t,X),\dot{V}(t,X)\right]\in\sothree\times\Rthree\times\Rthree
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where we use square brackets to indicate a tangent vector.
 | |
|  The space of all tangent vectors at 
 | |
| \begin_inset Formula $X$
 | |
| \end_inset
 | |
| 
 | |
|  is denoted by 
 | |
| \family roman
 | |
| \series medium
 | |
| \shape up
 | |
| \size normal
 | |
| \emph off
 | |
| \bar no
 | |
| \strikeout off
 | |
| \uuline off
 | |
| \uwave off
 | |
| \noun off
 | |
| \color none
 | |
| 
 | |
| \begin_inset Formula $T_{X}M$
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \family default
 | |
| \series default
 | |
| \shape default
 | |
| \size default
 | |
| \emph default
 | |
| \bar default
 | |
| \strikeout default
 | |
| \uuline default
 | |
| \uwave default
 | |
| \noun default
 | |
| \color inherit
 | |
| , and hence 
 | |
| \begin_inset Formula $F(t,X)\in T_{X}M$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  For example, if the state evolves along a constant velocity trajectory
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| X(t)=\left\{ R_{0},P_{0}+V_{0}t,V_{0}\right\} 
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| then the differential equation describing the trajectory is
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \dot{X}(t)=\left[0_{3x3},V_{0},0_{3x1}\right],\,\,\,\,\,X(0)=\left\{ R_{0},P_{0},V_{0}\right\} 
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Valid vector fields on a NavState manifold are special, in that the attitude
 | |
|  and velocity derivatives can be arbitrary functions of X and t, but the
 | |
|  derivative of position is constrained to be equal to the current velocity
 | |
|  
 | |
| \begin_inset Formula $V(t)$
 | |
| \end_inset
 | |
| 
 | |
| : 
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \dot{X}(t)=\left[\dot{R}(X,t),V(t),\dot{V}(X,t)\right]\label{eq:validField}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Suppose we are given the 
 | |
| \series bold
 | |
| body angular velocity
 | |
| \series default
 | |
|  
 | |
| \begin_inset Formula $\omega^{b}(t)$
 | |
| \end_inset
 | |
| 
 | |
|  and non-gravity 
 | |
| \series bold
 | |
| acceleration
 | |
| \series default
 | |
|  
 | |
| \begin_inset Formula $a^{b}(t)$
 | |
| \end_inset
 | |
| 
 | |
|  in the body frame.
 | |
|  We know (from 
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| key "Murray94book"
 | |
| literal "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| ) that the derivative of 
 | |
| \begin_inset Formula $R$
 | |
| \end_inset
 | |
| 
 | |
|  can be written as 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \dot{R}(X,t)=R(t)\Skew{\omega^{b}(t)}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \begin_inset Formula $\Skew{\theta}\in so(3)$
 | |
| \end_inset
 | |
| 
 | |
|  is the skew-symmetric matrix corresponding to 
 | |
| \begin_inset Formula $\theta$
 | |
| \end_inset
 | |
| 
 | |
| , and hence the resulting exact vector field is 
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \dot{X}(t)=\left[\dot{R}(X,t),V(t),\dot{V}(X,t)\right]=\left[R(t)\Skew{\omega^{b}(t)},V(t),g+R(t)a^{b}(t)\right]\label{eq:bodyField}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Local Coordinates
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Optimization on manifolds relies crucially on the concept of 
 | |
| \series bold
 | |
| local coordinates
 | |
| \series default
 | |
| .
 | |
|  For example, when optimizing over the rotations 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
|  starting from an initial estimate 
 | |
| \begin_inset Formula $R_{0}$
 | |
| \end_inset
 | |
| 
 | |
| , we define a local map 
 | |
| \begin_inset Formula $\Phi_{R_{0}}$
 | |
| \end_inset
 | |
| 
 | |
|  from 
 | |
| \begin_inset Formula $\theta\in\Rthree$
 | |
| \end_inset
 | |
| 
 | |
|  to a neighborhood of 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
|  centered around 
 | |
| \begin_inset Formula $R_{0}$
 | |
| \end_inset
 | |
| 
 | |
| , 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \Phi_{R_{0}}(\theta)=R_{0}\exp\left(\Skew{\theta}\right)
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \begin_inset Formula $\exp$
 | |
| \end_inset
 | |
| 
 | |
|  is the matrix exponential, given by
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \exp\left(\Skew{\theta}\right)=\sum_{k=0}^{\infty}\frac{1}{k!}\Skew{\theta}^{k}\label{eq:expm}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| which for 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
|  can be efficiently computed in closed form.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| The local coordinates 
 | |
| \begin_inset Formula $\theta$
 | |
| \end_inset
 | |
| 
 | |
|  are isomorphic to tangent vectors at 
 | |
| \emph on
 | |
| 
 | |
| \begin_inset Formula $R_{0}$
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \emph default
 | |
| .
 | |
|  To see this, define 
 | |
| \begin_inset Formula $\theta=\omega t$
 | |
| \end_inset
 | |
| 
 | |
|  and note that 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \frac{d\Phi_{R_{0}}\left(\omega t\right)}{dt}\biggr\vert_{t=0}=\frac{dR_{0}\exp\left(\Skew{\omega t}\right)}{dt}\biggr\vert_{t=0}=R_{0}\Skew{\omega t}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Hence, the 3-vector 
 | |
| \begin_inset Formula $\omega$
 | |
| \end_inset
 | |
| 
 | |
|  defines a direction of travel on the 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
|  manifold, but does so in the local coordinate frame define by 
 | |
| \begin_inset Formula $R_{0}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| A similar story holds in 
 | |
| \begin_inset Formula $\SEthree$
 | |
| \end_inset
 | |
| 
 | |
| : we define local coordinates 
 | |
| \begin_inset Formula $\xi=\left[\omega t,vt\right]\in\Rsix$
 | |
| \end_inset
 | |
| 
 | |
|  and a mapping 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \Phi_{T_{0}}(\xi)=T_{0}\exp\xihat
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \begin_inset Formula $\xihat\in\sethree$
 | |
| \end_inset
 | |
| 
 | |
|  is defined as 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \xihat=\left[\begin{array}{cc}
 | |
| \Skew{\omega} & v\\
 | |
| 0 & 0
 | |
| \end{array}\right]t
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| and the 6-vectors 
 | |
| \begin_inset Formula $\xi$
 | |
| \end_inset
 | |
| 
 | |
|  are mapped to tangent vectors 
 | |
| \begin_inset Formula $T_{0}\xihat$
 | |
| \end_inset
 | |
| 
 | |
|  at 
 | |
| \begin_inset Formula $T_{0}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Derivative of The Local Coordinate Mapping
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| For the local coordinate mapping 
 | |
| \family roman
 | |
| \series medium
 | |
| \shape up
 | |
| \size normal
 | |
| \emph off
 | |
| \bar no
 | |
| \strikeout off
 | |
| \uuline off
 | |
| \uwave off
 | |
| \noun off
 | |
| \color none
 | |
| 
 | |
| \begin_inset Formula $\Phi_{R_{0}}\left(\theta\right)$
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \family default
 | |
| \series default
 | |
| \shape default
 | |
| \size default
 | |
| \emph default
 | |
| \bar default
 | |
| \strikeout default
 | |
| \uuline default
 | |
| \uwave default
 | |
| \noun default
 | |
| \color inherit
 | |
|  in 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
|  we can define a 
 | |
| \begin_inset Formula $3\times3$
 | |
| \end_inset
 | |
| 
 | |
|  
 | |
| \family roman
 | |
| \series medium
 | |
| \shape up
 | |
| \size normal
 | |
| \emph off
 | |
| \bar no
 | |
| \strikeout off
 | |
| \uuline off
 | |
| \uwave off
 | |
| \noun off
 | |
| \color none
 | |
| Jacobian 
 | |
| \begin_inset Formula $H(\theta)$
 | |
| \end_inset
 | |
| 
 | |
|  that models the effect of an incremental change 
 | |
| \begin_inset Formula $\delta$
 | |
| \end_inset
 | |
| 
 | |
|  to the local coordinates:
 | |
| \family default
 | |
| \series default
 | |
| \shape default
 | |
| \size default
 | |
| \emph default
 | |
| \bar default
 | |
| \strikeout default
 | |
| \uuline default
 | |
| \uwave default
 | |
| \noun default
 | |
| \color inherit
 | |
| 
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \Phi_{R_{0}}\left(\theta+\delta\right)\approx\Phi_{R_{0}}\left(\theta\right)\,\exp\left(\Skew{H(\theta)\delta}\right)=\Phi_{\Phi_{R_{0}}\left(\theta\right)}\left(H(\theta)\delta\right)\label{eq:push_exp}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| This Jacobian depends only on 
 | |
| \begin_inset Formula $\theta$
 | |
| \end_inset
 | |
| 
 | |
|  and, for the case of 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
| , is given by a formula similar to the matrix exponential map, 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| H(\theta)=\sum_{k=0}^{\infty}\frac{(-1)^{k}}{(k+1)!}\Skew{\theta}^{k}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| which can also be computed in closed form.
 | |
|  In particular, 
 | |
| \begin_inset Formula $H(0)=I_{3\times3}$
 | |
| \end_inset
 | |
| 
 | |
|  at the base 
 | |
| \begin_inset Formula $R_{0}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Numerical Integration in Local Coordinates
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Inspired by the paper 
 | |
| \begin_inset Quotes eld
 | |
| \end_inset
 | |
| 
 | |
| Lie Group Methods
 | |
| \begin_inset Quotes erd
 | |
| \end_inset
 | |
| 
 | |
|  by Iserles et al.
 | |
|  
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| key "Iserles00an"
 | |
| literal "true"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| , when we have a differential equation on 
 | |
| \begin_inset Formula $\SOthree$
 | |
| \end_inset
 | |
| 
 | |
| ,
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \dot{R}(t)=F(R,t),\,\,\,\,R(0)=R_{0}\label{eq:diffSo3}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| we can transfer it to a differential equation in the 3-dimensional local
 | |
|  coordinate space.
 | |
|  To do so, we model the solution to 
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand eqref
 | |
| reference "eq:diffSo3"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
|  as
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| R(t)=\Phi_{R_{0}}(\theta(t))
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| To find an expression for 
 | |
| \begin_inset Formula $\dot{\theta}(t)$
 | |
| \end_inset
 | |
| 
 | |
| , create a trajectory 
 | |
| \begin_inset Formula $\gamma(\delta)$
 | |
| \end_inset
 | |
| 
 | |
|  that passes through 
 | |
| \begin_inset Formula $R(t)$
 | |
| \end_inset
 | |
| 
 | |
|  for 
 | |
| \begin_inset Formula $\delta=0$
 | |
| \end_inset
 | |
| 
 | |
| , and moves 
 | |
| \begin_inset Formula $\theta(t)$
 | |
| \end_inset
 | |
| 
 | |
|  along the direction 
 | |
| \begin_inset Formula $\dot{\theta}(t)$
 | |
| \end_inset
 | |
| 
 | |
| : 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \gamma(\delta)=R(t+\delta)=\Phi_{R_{0}}\left(\theta(t)+\dot{\theta}(t)\delta\right)\approx\Phi_{R(t)}\left(H(\theta)\dot{\theta}(t)\delta\right)
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Taking the derivative for 
 | |
| \begin_inset Formula $\delta=0$
 | |
| \end_inset
 | |
| 
 | |
|  we obtain
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \dot{R}(t)=\frac{d\gamma(\delta)}{d\delta}\biggr\vert_{\delta=0}=\frac{d\Phi_{R(t)}\left(H(\theta)\dot{\theta}(t)\delta\right)}{d\delta}\biggr\vert_{\delta=0}=R(t)\Skew{H(\theta)\dot{\theta}(t)}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Comparing this to 
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand eqref
 | |
| reference "eq:diffSo3"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
|  we obtain a differential equation for 
 | |
| \begin_inset Formula $\theta(t)$
 | |
| \end_inset
 | |
| 
 | |
| :
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \dot{\theta}(t)=H(\theta)^{-1}\left\{ R(t)^{T}F(R,t)\right\} \check{},\,\,\,\,\theta(0)=0_{3\times1}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| In other words, the vector field 
 | |
| \begin_inset Formula $F(R,t)$
 | |
| \end_inset
 | |
| 
 | |
|  is rotated to the local frame, the inverse hat operator is applied to get
 | |
|  a 3-vector, which is then corrected by 
 | |
| \begin_inset Formula $H(\theta)^{-1}$
 | |
| \end_inset
 | |
| 
 | |
|  away from 
 | |
| \begin_inset Formula $\theta=0$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Retractions
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Note that the use of the exponential map in local coordinate mappings is
 | |
|  not obligatory, even in the context of Lie groups.
 | |
|  Often it is computationally expedient to use mappings that are easier to
 | |
|  compute, but yet induce the same tangent vector at 
 | |
| \begin_inset Formula $T_{0}.$
 | |
| \end_inset
 | |
| 
 | |
|  Mappings that satisfy this constraint are collectively known as 
 | |
| \series bold
 | |
| retractions
 | |
| \series default
 | |
| .
 | |
|  For example, for 
 | |
| \begin_inset Formula $\SEthree$
 | |
| \end_inset
 | |
| 
 | |
|  one could use the retraction 
 | |
| \begin_inset Formula $\mathcal{R}_{T_{0}}:\Rsix\rightarrow\SEthree$
 | |
| \end_inset
 | |
| 
 | |
|  
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \mathcal{R}_{T_{0}}\left(\xi\right)=T_{0}\left\{ \exp\left(\Skew{\omega t}\right),vt\right\} =\left\{ \Phi_{R_{0}}\left(\omega t\right),P_{0}+R_{0}vt\right\} 
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| This trajectory describes a linear path in position while the frame rotates,
 | |
|  as opposed to the helical path traced out by the exponential map.
 | |
|  The tangent vector at 
 | |
| \begin_inset Formula $T_{0}$
 | |
| \end_inset
 | |
| 
 | |
|  can be computed as
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \frac{d\mathcal{R}_{T_{0}}\left(\xi\right)}{dt}\biggr\vert_{t=0}=\left[R_{0}\Skew{\omega},R_{0}v\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| which is identical to the one induced by 
 | |
| \family roman
 | |
| \series medium
 | |
| \shape up
 | |
| \size normal
 | |
| \emph off
 | |
| \bar no
 | |
| \strikeout off
 | |
| \uuline off
 | |
| \uwave off
 | |
| \noun off
 | |
| \color none
 | |
| 
 | |
| \begin_inset Formula $\Phi_{T_{0}}(\xi)=T_{0}\exp\xihat$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| The NavState manifold is not a Lie group like 
 | |
| \begin_inset Formula $\SEthree$
 | |
| \end_inset
 | |
| 
 | |
| , but we can easily define a retraction that behaves similarly to the one
 | |
|  for 
 | |
| \begin_inset Formula $\SEthree$
 | |
| \end_inset
 | |
| 
 | |
| , while treating velocities the same way as positions:
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \mathcal{R}_{X_{0}}(\zeta)=\left\{ \Phi_{R_{0}}\left(\omega t\right),P_{0}+R_{0}vt,V_{0}+R_{0}at\right\} 
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Here 
 | |
| \begin_inset Formula $\zeta=\left[\omega t,vt,at\right]$
 | |
| \end_inset
 | |
| 
 | |
|  is a 9-vector, with respectively angular, position, and velocity components.
 | |
|  The tangent vector at 
 | |
| \begin_inset Formula $X_{0}$
 | |
| \end_inset
 | |
| 
 | |
|  is
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \frac{d\mathcal{R}_{X_{0}}(\zeta)}{dt}\biggr\vert_{t=0}=\left[R_{0}\Skew{\omega},R_{0}v,R_{0}a\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| and the isomorphism between 
 | |
| \begin_inset Formula $\Rnine$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $T_{X_{0}}M$
 | |
| \end_inset
 | |
| 
 | |
|  is 
 | |
| \begin_inset Formula $\zeta\rightarrow\left[R_{0}\Skew{\omega t},R_{0}vt,R_{0}at\right]$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Integration in Local Coordinates
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We now proceed exactly as before to describe the evolution of the NavState
 | |
|  in local coordinates.
 | |
|  Let us model the solution of the differential equation 
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand eqref
 | |
| reference "eq:diffeqM"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
|  as a trajectory 
 | |
| \begin_inset Formula $\zeta(t)=\left[\theta(t),p(t),v(t)\right]$
 | |
| \end_inset
 | |
| 
 | |
| , with 
 | |
| \begin_inset Formula $\zeta(0)=0$
 | |
| \end_inset
 | |
| 
 | |
| , in the local coordinate frame anchored at 
 | |
| \begin_inset Formula $X_{0}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  Note that this trajectory evolves away from 
 | |
| \begin_inset Formula $X_{0}$
 | |
| \end_inset
 | |
| 
 | |
| , and we use the symbols 
 | |
| \begin_inset Formula $\theta$
 | |
| \end_inset
 | |
| 
 | |
| , 
 | |
| \begin_inset Formula $p$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $v$
 | |
| \end_inset
 | |
| 
 | |
|  to indicate that these are integrated rather than differential quantities.
 | |
|  With that, we have 
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| X(t)=\mathcal{R}_{X_{0}}(\zeta(t))=\left\{ \Phi_{R_{0}}\left(\theta(t)\right),P_{0}+R_{0}p(t),V_{0}+R_{0}v(t)\right\} \label{eq:scheme1}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| We can create a trajectory 
 | |
| \begin_inset Formula $\gamma(\delta)$
 | |
| \end_inset
 | |
| 
 | |
|  that passes through 
 | |
| \begin_inset Formula $X(t)$
 | |
| \end_inset
 | |
| 
 | |
|  for 
 | |
| \begin_inset Formula $\delta=0$
 | |
| \end_inset
 | |
| 
 | |
|  
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \gamma(\delta)=X(t+\delta)=\left\{ \Phi_{R_{0}}\left(\theta(t)+\dot{\theta}(t)\delta\right),P_{0}+R_{0}\left\{ p(t)+\dot{p}(t)\delta\right\} ,V_{0}+R_{0}\left\{ v(t)+\dot{v}(t)\delta\right\} \right\} 
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| and taking the derivative for 
 | |
| \begin_inset Formula $\delta=0$
 | |
| \end_inset
 | |
| 
 | |
|  we obtain
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \dot{X}(t)=\frac{d\gamma(\delta)}{d\delta}\biggr\vert_{\delta=0}=\left[R(t)\Skew{H(\theta)\dot{\theta}(t)},R_{0}\,\dot{p}(t),R_{0}\,\dot{v}(t)\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Comparing that with the vector field 
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand eqref
 | |
| reference "eq:bodyField"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| , we have exact integration iff 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \left[R(t)\Skew{H(\theta)\dot{\theta}(t)},R_{0}\,\dot{p}(t),R_{0}\,\dot{v}(t)\right]=\left[R(t)\Skew{\omega^{b}(t)},V(t),g+R(t)a^{b}(t)\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Or, as another way to state this, if we solve the differential equations
 | |
|  for 
 | |
| \begin_inset Formula $\theta(t)$
 | |
| \end_inset
 | |
| 
 | |
| , 
 | |
| \begin_inset Formula $p(t)$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $v(t)$
 | |
| \end_inset
 | |
| 
 | |
|  such that
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray*}
 | |
| \dot{\theta}(t) & = & H(\theta)^{-1}\,\omega^{b}(t)\\
 | |
| \dot{p}(t) & = & R_{0}^{T}\,V_{0}+v(t)\\
 | |
| \dot{v}(t) & = & R_{0}^{T}\,g+R_{b}^{0}(t)a^{b}(t)
 | |
| \end{eqnarray*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \family roman
 | |
| \series medium
 | |
| \shape up
 | |
| \size normal
 | |
| \emph off
 | |
| \bar no
 | |
| \strikeout off
 | |
| \uuline off
 | |
| \uwave off
 | |
| \noun off
 | |
| \color none
 | |
| 
 | |
| \begin_inset Formula $R_{b}^{0}(t)=R_{0}^{T}R(t)$
 | |
| \end_inset
 | |
| 
 | |
|  is the rotation of the body frame with respect to 
 | |
| \begin_inset Formula $R_{0}$
 | |
| \end_inset
 | |
| 
 | |
| , and we have used 
 | |
| \begin_inset Formula $V(t)=V_{0}+R_{0}v(t)$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Application: The New IMU Factor
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| In the IMU factor, we need to predict the NavState 
 | |
| \begin_inset Formula $X_{j}$
 | |
| \end_inset
 | |
| 
 | |
|  from the current NavState 
 | |
| \begin_inset Formula $X_{i}$
 | |
| \end_inset
 | |
| 
 | |
|  and the IMU measurements in-between.
 | |
|  The above scheme suffers from a problem, which is that 
 | |
| \begin_inset Formula $X_{i}$
 | |
| \end_inset
 | |
| 
 | |
|  needs to be known in order to compensate properly for the initial velocity
 | |
|  and rotated gravity vector.
 | |
|  Hence, the idea of Lupton
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| key "Lupton12tro"
 | |
| literal "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
|  was to split up 
 | |
| \begin_inset Formula $v(t)$
 | |
| \end_inset
 | |
| 
 | |
|  into a gravity-induced part and an accelerometer part
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| v(t)=v_{g}(t)+v_{a}(t)
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| evolving as
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray*}
 | |
| \dot{v}_{g}(t) & = & R_{i}^{T}\,g\\
 | |
| \dot{v}_{a}(t) & = & R_{b}^{i}(t)a^{b}(t)
 | |
| \end{eqnarray*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| The solution for the first equation is simply 
 | |
| \begin_inset Formula $v_{g}(t)=R_{i}^{T}gt$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  Similarly, we split the position 
 | |
| \begin_inset Formula $p(t)$
 | |
| \end_inset
 | |
| 
 | |
|  up in three parts 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| p(t)=p_{i}(t)+p_{g}(t)+p_{v}(t)
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| evolving as
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray*}
 | |
| \dot{p}_{i}(t) & = & R_{i}^{T}\,V_{i}\\
 | |
| \dot{p}_{g}(t) & = & v_{g}(t)=R_{i}^{T}gt\\
 | |
| \dot{p}_{v}(t) & = & v_{a}(t)
 | |
| \end{eqnarray*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Here the solutions for the two first equations are simply 
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray*}
 | |
| p_{i}(t) & = & R_{i}^{T}V_{i}t\\
 | |
| p_{g}(t) & = & R_{i}^{T}\frac{gt^{2}}{2}
 | |
| \end{eqnarray*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| The recipe for the IMU factor is then, in summary:
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| Solve the ordinary differential equations
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray*}
 | |
| \dot{\theta}(t) & = & H(\theta(t))^{-1}\,\omega^{b}(t)\\
 | |
| \dot{p}_{v}(t) & = & v_{a}(t)\\
 | |
| \dot{v}_{a}(t) & = & R_{b}^{i}(t)a^{b}(t)
 | |
| \end{eqnarray*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| starting from zero, up to time 
 | |
| \begin_inset Formula $t_{ij}$
 | |
| \end_inset
 | |
| 
 | |
| , where 
 | |
| \begin_inset Formula $R_{b}^{i}(t)=\exp\Skew{\theta(t)}$
 | |
| \end_inset
 | |
| 
 | |
|  at all times.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| Form the local coordinate vector as
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \zeta(t_{ij})=\left[\theta(t_{ij}),p(t_{ij}),v(t_{ij})\right]=\left[\theta(t_{ij}),R_{i}^{T}V_{i}t_{ij}+R_{i}^{T}\frac{gt_{ij}^{2}}{2}+p_{v}(t_{ij}),R_{i}^{T}gt_{ij}+v_{a}(t_{ij})\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Enumerate
 | |
| Predict the NavState 
 | |
| \begin_inset Formula $X_{j}$
 | |
| \end_inset
 | |
| 
 | |
|  at time 
 | |
| \begin_inset Formula $t_{j}$
 | |
| \end_inset
 | |
| 
 | |
|  from
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| X_{j}=\mathcal{R}_{X_{i}}(\zeta(t_{ij}))=\left\{ \Phi_{R_{0}}\left(\theta(t_{ij})\right),P_{i}+V_{i}t_{ij}+\frac{gt_{ij}^{2}}{2}+R_{i}\,p_{v}(t_{ij}),V_{i}+gt_{ij}+R_{i}\,v_{a}(t_{ij})\right\} 
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Note that the predicted NavState 
 | |
| \begin_inset Formula $X_{j}$
 | |
| \end_inset
 | |
| 
 | |
|  depends on 
 | |
| \begin_inset Formula $X_{i}$
 | |
| \end_inset
 | |
| 
 | |
| , but the integrated quantities 
 | |
| \begin_inset Formula $\theta(t)$
 | |
| \end_inset
 | |
| 
 | |
| ,
 | |
| \begin_inset Formula $p_{v}(t)$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $v_{a}(t)$
 | |
| \end_inset
 | |
| 
 | |
|  do not.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| A Simple Euler Scheme
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| To solve the differential equation we can use a simple Euler scheme:
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray}
 | |
| \theta_{k+1}=\theta_{k}+\dot{\theta}(t_{k})\Delta_{t} & = & \theta_{k}+H(\theta_{k})^{-1}\,\omega_{k}^{b}\Delta_{t}\label{eq:euler_theta-1}\\
 | |
| p_{k+1}=p_{k}+\dot{p}_{v}(t_{k})\Delta_{t} & = & p_{k}+v_{k}\Delta_{t}\label{eq:euler_p-1}\\
 | |
| v_{k+1}=v_{k}+\dot{v}_{a}(t_{k})\Delta_{t} & = & v_{k}+\exp\left(\Skew{\theta_{k}}\right)a_{k}^{b}\Delta_{t}\label{eq:euler_v-1}
 | |
| \end{eqnarray}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \begin_inset Formula $\theta_{k}\define\theta(t_{k})$
 | |
| \end_inset
 | |
| 
 | |
| , 
 | |
| \begin_inset Formula $p_{k}\define p_{v}(t_{k})$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $v_{k}\define v_{a}(t_{k})$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  However, the position propagation can be done more accurately, by using
 | |
|  exact integration of the zero-order hold acceleration 
 | |
| \begin_inset Formula $a_{k}^{b}$
 | |
| \end_inset
 | |
| 
 | |
| :
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray}
 | |
| \theta_{k+1} & = & \theta_{k}+H(\theta_{k})^{-1}\,\omega_{k}^{b}\Delta_{t}\label{eq:euler_theta}\\
 | |
| p_{k+1} & = & p_{k}+v_{k}\Delta_{t}+R_{k}a_{k}^{b}\frac{\Delta_{t}^{2}}{2}\label{eq:euler_p}\\
 | |
| v_{k+1} & = & v_{k}+R_{k}a_{k}^{b}\Delta_{t}\label{eq:euler_v}
 | |
| \end{eqnarray}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where we defined the rotation matrix 
 | |
| \begin_inset Formula $R_{k}=\exp\left(\Skew{\theta_{k}}\right)$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Noise Modeling
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Given the above solutions to the differential equations, we add noise modeling
 | |
|  to account for the various sources of error in the system 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray}
 | |
| \theta_{k+1} & = & \theta_{k}+H(\theta_{k})^{-1}\,(\omega_{k}^{b}+\epsilon_{k}^{\omega}-b_{k}^{\omega}-\epsilon_{init}^{\omega})\Delta_{t}\nonumber \\
 | |
| p_{k+1} & = & p_{k}+v_{k}\Delta_{t}+R_{k}(a_{k}^{b}+\epsilon_{k}^{a}-b_{k}^{a}-\epsilon_{init}^{a})\frac{\Delta_{t}^{2}}{2}+\epsilon_{k}^{int}\label{eq:preintegration}\\
 | |
| v_{k+1} & = & v_{k}+R_{k}(a_{k}^{b}+\epsilon_{k}^{a}-b_{k}^{a}-\epsilon_{init}^{a})\Delta_{t}\nonumber \\
 | |
| b_{k+1}^{a} & = & b_{k}^{a}+\epsilon_{k}^{b^{a}}\nonumber \\
 | |
| b_{k+1}^{\omega} & = & b_{k}^{\omega}+\epsilon_{k}^{b^{\omega}}\nonumber 
 | |
| \end{eqnarray}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| which we can write compactly as,
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \begin{eqnarray}
 | |
| \theta_{k+1} & = & f_{\theta}(\theta_{k},b_{k}^{w},\epsilon_{k}^{\omega},\epsilon_{init}^{b^{\omega}})\label{eq:compact-preintegration}\\
 | |
| p_{k+1} & = & f_{p}(p_{k},v_{k},\theta_{k},b_{k}^{a},\epsilon_{k}^{a},\epsilon_{init}^{a},\epsilon_{k}^{int})\nonumber \\
 | |
| v_{k+1} & = & f_{v}(v_{k,}\theta_{k,}b_{k}^{a},\epsilon_{k}^{a},\epsilon_{init}^{a})\nonumber \\
 | |
| b_{k+1}^{a} & = & f_{b^{a}}(b_{k}^{a},\epsilon_{k}^{b^{a}})\nonumber \\
 | |
| b_{k+1}^{\omega} & = & f_{b^{\omega}}(b_{k}^{\omega},\epsilon_{k}^{b^{\omega}})\nonumber 
 | |
| \end{eqnarray}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Noise Propagation in IMU Factor
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We wish to compute the ImuFactor covariance matrix 
 | |
| \begin_inset Formula $\Sigma_{ij}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  Even when we assume uncorrelated noise on 
 | |
| \begin_inset Formula $\omega^{b}$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $a^{b}$
 | |
| \end_inset
 | |
| 
 | |
| , the noise on the final computed quantities will have a non-trivial covariance
 | |
|  structure, because the intermediate quantities 
 | |
| \begin_inset Formula $\theta_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $v_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  appear in multiple places.
 | |
|  To model the noise propagation, let us define the preintegrated navigation
 | |
|  state 
 | |
| \begin_inset Formula $\zeta_{k}=[\theta_{k},p_{k},v_{k}]$
 | |
| \end_inset
 | |
| 
 | |
| , as a 9D vector on tangent space at and rewrite Eqns.
 | |
|  (
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand ref
 | |
| reference "eq:euler_theta"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| -
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand ref
 | |
| reference "eq:euler_v"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| ) as the non-linear function 
 | |
| \begin_inset Formula $f$
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \zeta_{k+1}=f\left(\zeta_{k},a_{k}^{b},\omega_{k}^{b}\right)
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| Then the noise on 
 | |
| \begin_inset Formula $\zeta_{k+1}$
 | |
| \end_inset
 | |
| 
 | |
|  propagates as
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \Sigma_{k+1}=A_{k}\Sigma_{k}A_{k}^{T}+B_{k}\Sigma_{\eta}^{ad}B_{k}^{T}+C_{k}\Sigma_{\eta}^{gd}C_{k}^{T}\label{eq:prop}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where 
 | |
| \begin_inset Formula $A_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  is the 
 | |
| \begin_inset Formula $9\times9$
 | |
| \end_inset
 | |
| 
 | |
|  partial derivative of 
 | |
| \begin_inset Formula $f$
 | |
| \end_inset
 | |
| 
 | |
|  wrpt 
 | |
| \begin_inset Formula $\zeta$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $B_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $C_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  the respective 
 | |
| \begin_inset Formula $9\times3$
 | |
| \end_inset
 | |
| 
 | |
|  partial derivatives with respect to the measured quantities 
 | |
| \begin_inset Formula $a^{b}$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $\omega^{b}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  Note that 
 | |
| \begin_inset Formula $\Sigma_{k},$
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \begin_inset Formula $\Sigma_{\eta}^{ad}$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $\Sigma_{\eta}^{gd}$
 | |
| \end_inset
 | |
| 
 | |
|  are discrete time covariances with 
 | |
| \begin_inset Formula $\Sigma_{\eta}^{ad}$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $\Sigma_{\eta}^{gd}$
 | |
| \end_inset
 | |
| 
 | |
| divided by 
 | |
| \begin_inset Formula $\Delta_{t}$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  Please see the section on Covariance Discretization
 | |
| \begin_inset CommandInset ref
 | |
| LatexCommand vpageref
 | |
| reference "subsec:Covariance-Discretization"
 | |
| plural "false"
 | |
| caps "false"
 | |
| noprefix "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We start with the noise propagation on 
 | |
| \begin_inset Formula $\theta$
 | |
| \end_inset
 | |
| 
 | |
| , which is independent of the other quantities.
 | |
|  Taking the derivative, we have
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \deriv{\theta_{k+1}}{\theta_{k}}=I_{3\times3}+\deriv{H(\theta_{k})^{-1}\omega_{k}^{b}}{\theta_{k}}\Delta_{t}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| It can be shown that for small 
 | |
| \begin_inset Formula $\theta_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  we have 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \deriv{H(\theta_{k})^{-1}\omega_{k}^{b}}{\theta_{k}}\approx-\frac{1}{2}\Skew{\omega_{k}^{b}}\mbox{ and hence }\deriv{\theta_{k+1}}{\theta_{k}}=I_{3\times3}-\frac{\Delta_{t}}{2}\Skew{\omega_{k}^{b}}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| For the derivatives of 
 | |
| \begin_inset Formula $p_{k+1}$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $v_{k+1}$
 | |
| \end_inset
 | |
| 
 | |
|  we need the derivative
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \deriv{R_{k}a_{k}^{b}}{\theta_{k}}=R_{k}\Skew{-a_{k}^{b}}\deriv{R_{k}}{\theta_{k}}=R_{k}\Skew{-a_{k}^{b}}H(\theta_{k})
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| where we used 
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| \deriv{\left(Ra\right)}R\approx R\Skew{-a}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| and the fact that the dependence of the rotation 
 | |
| \begin_inset Formula $R_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  on 
 | |
| \begin_inset Formula $\theta_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  is the already computed 
 | |
| \begin_inset Formula $H(\theta_{k})$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Putting all this together, we finally obtain
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| A_{k}\approx\left[\begin{array}{ccc}
 | |
| I_{3\times3}-\frac{\Delta_{t}}{2}\Skew{\omega_{k}^{b}} & 0_{3\times3} & 0_{3\times3}\\
 | |
| R_{k}\Skew{-a_{k}^{b}}H(\theta_{k})\frac{\Delta_{t}}{2}^{2} & I_{3\times3} & I_{3\times3}\Delta_{t}\\
 | |
| R_{k}\Skew{-a_{k}^{b}}H(\theta_{k})\Delta_{t} & 0_{3\times3} & I_{3\times3}
 | |
| \end{array}\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| The other partial derivatives are simply
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| B_{k}=\left[\begin{array}{c}
 | |
| 0_{3\times3}\\
 | |
| R_{k}\frac{\Delta_{t}}{2}^{2}\\
 | |
| R_{k}\Delta_{t}
 | |
| \end{array}\right],\,\,\,\,C_{k}=\left[\begin{array}{c}
 | |
| H(\theta_{k})^{-1}\Delta_{t}\\
 | |
| 0_{3\times3}\\
 | |
| 0_{3\times3}
 | |
| \end{array}\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Noise Propagation in Combined IMU Factor
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We can similarly account for bias drift over time, as is commonly seen in
 | |
|  commercial grade IMUs.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We expand the state vector as 
 | |
| \begin_inset Formula $\zeta_{k}=[\theta_{k},p_{k},v_{k},b_{k}^{a},b_{k}^{\omega}]$
 | |
| \end_inset
 | |
| 
 | |
|  to include the bias terms and define the augmented noise vector 
 | |
| \begin_inset Formula $\epsilon=[\epsilon_{k}^{\omega},\epsilon_{k}^{a},\epsilon_{k}^{b^{a}},\epsilon_{k}^{b^{\omega}},\epsilon_{k}^{int},\epsilon_{init}^{b^{a}},\epsilon_{init}^{b^{\omega}}]$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  This gives the noise propagation equation as
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \begin{equation}
 | |
| \Sigma_{k+1}=F_{k}\Sigma_{k}F_{k}^{T}+G_{k}Q_{k}G_{k}^{T}\label{eq:prop-combined}
 | |
| \end{equation}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| where 
 | |
| \begin_inset Formula $F_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  is the 
 | |
| \begin_inset Formula $15\times15$
 | |
| \end_inset
 | |
| 
 | |
|  derivative of 
 | |
| \begin_inset Formula $f$
 | |
| \end_inset
 | |
| 
 | |
|  wrpt this new 
 | |
| \begin_inset Formula $\zeta$
 | |
| \end_inset
 | |
| 
 | |
| , and 
 | |
| \begin_inset Formula $G_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  is the 
 | |
| \begin_inset Formula $15\times21$
 | |
| \end_inset
 | |
| 
 | |
|  matrix for first order uncertainty propagation.
 | |
|  
 | |
| \begin_inset Formula $Q_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  defines the uncertainty of 
 | |
| \begin_inset Formula $\eta$
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
|  The top-left 
 | |
| \begin_inset Formula $9\times9$
 | |
| \end_inset
 | |
| 
 | |
|  of 
 | |
| \begin_inset Formula $F_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  is the same as 
 | |
| \begin_inset Formula $A_{k}$
 | |
| \end_inset
 | |
| 
 | |
| , thus we only have the jacobians wrpt the biases left to account for.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Conveniently, the jacobians of the pose and velocity wrpt the biases are
 | |
|  already computed in the 
 | |
| \emph on
 | |
| ImuFactor 
 | |
| \emph default
 | |
| derivation as matrices 
 | |
| \begin_inset Formula $B_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset Formula $C_{k}$
 | |
| \end_inset
 | |
| 
 | |
| , while they are identity matrices wrpt the biases themselves.
 | |
|  Thus, we can easily plug-in the values from the previous section to give
 | |
|  us the final result
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| F_{k}\approx\left[\begin{array}{ccccc}
 | |
| I_{3\times3}-\frac{\Delta_{t}}{2}\Skew{\omega_{k}^{b}} & 0_{3\times3} & 0_{3\times3} & 0_{3\times3} & H(\theta_{k})^{-1}\Delta_{t}\\
 | |
| R_{k}\Skew{-a_{k}^{b}}H(\theta_{k})\frac{\Delta_{t}}{2}^{2} & I_{3\times3} & I_{3\times3}\Delta_{t} & R_{k}\frac{\Delta_{t}}{2}^{2} & 0_{3\times3}\\
 | |
| R_{k}\Skew{-a_{k}^{b}}H(\theta_{k})\Delta_{t} & 0_{3\times3} & I_{3\times3} & R_{k}\Delta_{t} & 0_{3\times3}\\
 | |
| 0_{3\times3} & 0_{3\times3} & 0_{3\times3} & I_{3\times3} & 0_{3\times3}\\
 | |
| 0_{3\times3} & 0_{3\times3} & 0_{3\times3} & 0_{3\times3} & I_{3\times3}
 | |
| \end{array}\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| Similarly for 
 | |
| \begin_inset Formula $Q_{k},$
 | |
| \end_inset
 | |
| 
 | |
| we get
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| Q_{k}=\left[\begin{array}{ccccccc}
 | |
| \Sigma^{\omega}\\
 | |
|  & \Sigma^{a}\\
 | |
|  &  & \Sigma^{b^{a}}\\
 | |
|  &  &  & \Sigma^{b^{\omega}}\\
 | |
|  &  &  &  & \Sigma^{int}\\
 | |
|  &  &  &  &  & \Sigma^{init_{11}} & \Sigma^{init_{12}}\\
 | |
|  &  &  &  &  & \Sigma^{init_{21}} & \Sigma^{init_{22}}
 | |
| \end{array}\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| and for 
 | |
| \begin_inset Formula $G_{k}$
 | |
| \end_inset
 | |
| 
 | |
|  we get
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| G_{k}=\left[\begin{array}{ccccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}} & \deriv{\theta}{\epsilon^{a}} & \deriv{\theta}{\epsilon^{b^{a}}} & \deriv{\theta}{\epsilon^{b^{\omega}}} & \deriv{\theta}{\epsilon^{int}} & \deriv{\theta}{\epsilon_{init}^{b^{a}}} & \deriv{\theta}{\epsilon_{init}^{b^{\omega}}}\\
 | |
| \deriv p{\epsilon^{\omega}} & \deriv p{\epsilon^{a}} & \deriv p{\epsilon^{b^{a}}} & \deriv p{\epsilon^{b^{\omega}}} & \deriv p{\epsilon^{int}} & \deriv p{\epsilon_{init}^{b^{a}}} & \deriv p{\epsilon_{init}^{b^{\omega}}}\\
 | |
| \deriv v{\epsilon^{\omega}} & \deriv v{\epsilon^{a}} & \deriv v{\epsilon^{b^{a}}} & \deriv v{\epsilon^{b^{\omega}}} & \deriv v{\epsilon^{int}} & \deriv v{\epsilon_{init}^{b^{a}}} & \deriv v{\epsilon_{init}^{b^{\omega}}}\\
 | |
| \deriv{b^{a}}{\epsilon^{\omega}} & \deriv{b^{a}}{\epsilon^{a}} & \deriv{b^{a}}{\epsilon^{b^{a}}} & \deriv{b^{a}}{\epsilon^{b^{\omega}}} & \deriv{b^{a}}{\epsilon^{int}} & \deriv{b^{a}}{\epsilon_{init}^{b^{a}}} & \deriv{b^{a}}{\epsilon_{init}^{b^{\omega}}}\\
 | |
| \deriv{b^{\omega}}{\epsilon^{\omega}} & \deriv{b^{\omega}}{\epsilon^{a}} & \deriv{b^{\omega}}{\epsilon^{b^{a}}} & \deriv{b^{\omega}}{\epsilon^{b^{\omega}}} & \deriv{b^{\omega}}{\epsilon^{int}} & \deriv{b^{\omega}}{\epsilon_{init}^{b^{a}}} & \deriv{b^{\omega}}{\epsilon_{init}^{b^{\omega}}}
 | |
| \end{array}\right]=\left[\begin{array}{ccccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}} & 0 & 0 & 0 & 0 & 0 & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\\
 | |
| 0 & \deriv p{\epsilon^{a}} & 0 & 0 & \deriv p{\epsilon^{int}} & \deriv p{\eta_{init}^{b^{a}}} & 0\\
 | |
| 0 & \deriv v{\epsilon^{a}} & 0 & 0 & 0 & \deriv v{\eta_{init}^{b^{a}}} & 0\\
 | |
| 0 & 0 & I_{3\times3} & 0 & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & I_{3\times3} & 0 & 0 & 0
 | |
| \end{array}\right]
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| We can perform the block-wise computation of 
 | |
| \begin_inset Formula $G_{k}Q_{k}G_{k}^{T}$
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| G_{k}Q_{k}G_{k}^{T}=\left[\begin{array}{ccccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}} & 0 & 0 & 0 & 0 & 0 & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\\
 | |
| 0 & \deriv p{\epsilon^{a}} & 0 & 0 & \deriv p{\epsilon^{int}} & \deriv p{\eta_{init}^{b^{a}}} & 0\\
 | |
| 0 & \deriv v{\epsilon^{a}} & 0 & 0 & 0 & \deriv v{\eta_{init}^{b^{a}}} & 0\\
 | |
| 0 & 0 & I_{3\times3} & 0 & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & I_{3\times3} & 0 & 0 & 0
 | |
| \end{array}\right]\left[\begin{array}{ccccccc}
 | |
| \Sigma^{\omega}\\
 | |
|  & \Sigma^{a}\\
 | |
|  &  & \Sigma^{b^{a}}\\
 | |
|  &  &  & \Sigma^{b^{\omega}}\\
 | |
|  &  &  &  & \Sigma^{int}\\
 | |
|  &  &  &  &  & \Sigma^{init_{11}} & \Sigma^{init_{12}}\\
 | |
|  &  &  &  &  & \Sigma^{init_{21}} & \Sigma^{init_{22}}
 | |
| \end{array}\right]G_{k}^{T}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \[
 | |
| G_{k}Q_{k}G_{k}^{T}=\left[\begin{array}{ccccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}}\Sigma^{\omega} & 0 & 0 & 0 & 0 & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{21}} & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{22}}\\
 | |
| 0 & \deriv p{\epsilon^{a}}\Sigma^{a} & 0 & 0 & \deriv p{\epsilon^{int}}\Sigma^{int} & \deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{11}} & \deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\\
 | |
| 0 & \deriv v{\epsilon^{a}}\Sigma^{a} & 0 & 0 & 0 & \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{11}} & \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\\
 | |
| 0 & 0 & \Sigma^{b^{a}} & 0 & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & \Sigma^{b^{\omega}} & 0 & 0 & 0
 | |
| \end{array}\right]G_{k}^{T}
 | |
| \]
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \begin{multline*}
 | |
| G_{k}Q_{k}G_{k}^{T}=\left[\begin{array}{ccccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}}\Sigma^{\omega} & 0 & 0 & 0 & 0 & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{21}} & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{22}}\\
 | |
| 0 & \deriv p{\epsilon^{a}}\Sigma^{a} & 0 & 0 & \deriv p{\epsilon^{int}}\Sigma^{int} & \deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{11}} & \deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\\
 | |
| 0 & \deriv v{\epsilon^{a}}\Sigma^{a} & 0 & 0 & 0 & \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{11}} & \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\\
 | |
| 0 & 0 & \Sigma^{b^{a}} & 0 & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & \Sigma^{b^{\omega}} & 0 & 0 & 0
 | |
| \end{array}\right]\\
 | |
| \left[\begin{array}{ccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}}^{T} & 0 & 0 & 0 & 0\\
 | |
| 0 & \deriv p{\epsilon^{a}}^{T} & \deriv v{\epsilon^{a}}^{T} & 0 & 0\\
 | |
| 0 & 0 & 0 & I_{3\times3} & 0\\
 | |
| 0 & 0 & 0 & 0 & I_{3\times3}\\
 | |
| 0 & \deriv p{\epsilon^{int}}^{T} & 0 & 0 & 0\\
 | |
| 0 & \deriv p{\eta_{init}^{b^{a}}}^{T} & \deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| \deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & 0 & 0 & 0 & 0
 | |
| \end{array}\right]
 | |
| \end{multline*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \begin{multline*}
 | |
| =\\
 | |
| \left[\begin{array}{ccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}}\Sigma^{\omega}\deriv{\theta}{\epsilon^{\omega}}^{T}+\deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{22}}\deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{21}}\deriv p{\eta_{init}^{b^{a}}}^{T} & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{21}}\deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| \deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & \deriv p{\epsilon^{a}}\Sigma^{a}\deriv p{\epsilon^{a}}^{T}+\deriv p{\epsilon^{int}}\Sigma^{int}\deriv p{\epsilon^{int}}^{T}\\
 | |
|  & +\deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv p{\eta_{init}^{b^{a}}}^{T} & \deriv p{\epsilon^{a}}\Sigma^{a}\deriv v{\epsilon^{a}}^{T}+\deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & \deriv v{\epsilon^{a}}\Sigma^{a}\deriv p{\epsilon^{a}}^{T}+\deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv p{\eta_{init}^{b^{a}}}^{T} & \deriv v{\epsilon^{a}}\Sigma^{a}\deriv v{\epsilon^{a}}^{T}+\deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| 0 & 0 & 0 & \Sigma^{b^{a}} & 0\\
 | |
| 0 & 0 & 0 & 0 & \Sigma^{b^{\omega}}
 | |
| \end{array}\right]
 | |
| \end{multline*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| which we can break into 3 matrices for clarity, representing the main diagonal
 | |
|  and off-diagonal elements
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset Formula 
 | |
| \begin{multline*}
 | |
| =\\
 | |
| \left[\begin{array}{ccccc}
 | |
| \deriv{\theta}{\epsilon^{\omega}}\Sigma^{\omega}\deriv{\theta}{\epsilon^{\omega}}^{T} & 0 & 0 & 0 & 0\\
 | |
| 0 & \deriv p{\epsilon^{a}}\Sigma^{a}\deriv p{\epsilon^{a}}^{T} & 0 & 0 & 0\\
 | |
| 0 & 0 & \deriv v{\epsilon^{a}}\Sigma^{a}\deriv v{\epsilon^{a}}^{T} & 0 & 0\\
 | |
| 0 & 0 & 0 & \Sigma^{b^{a}} & 0\\
 | |
| 0 & 0 & 0 & 0 & \Sigma^{b^{\omega}}
 | |
| \end{array}\right]+\\
 | |
| \left[\begin{array}{ccccc}
 | |
| \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{22}}\deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & 0 & 0 & 0 & 0\\
 | |
| 0 & \deriv p{\epsilon^{int}}\Sigma^{int}\deriv p{\epsilon^{int}}^{T}+\deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv p{\eta_{init}^{b^{a}}}^{T} & 0 & 0 & 0\\
 | |
| 0 & 0 & \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| 0 & 0 & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & 0 & 0
 | |
| \end{array}\right]+\\
 | |
| \left[\begin{array}{ccccc}
 | |
| 0 & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{21}}\deriv p{\eta_{init}^{b^{a}}}^{T} & \deriv{\theta}{\eta_{init}^{b^{\omega}}}\Sigma^{init_{21}}\deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| \deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & 0 & \deriv p{\epsilon^{a}}\Sigma^{a}\deriv v{\epsilon^{a}}^{T}+\deriv p{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv v{\eta_{init}^{b^{a}}}^{T} & 0 & 0\\
 | |
| \deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{12}}\deriv{\theta}{\eta_{init}^{b^{\omega}}}^{T} & \deriv v{\epsilon^{a}}\Sigma^{a}\deriv p{\epsilon^{a}}^{T}+\deriv v{\eta_{init}^{b^{a}}}\Sigma^{init_{11}}\deriv p{\eta_{init}^{b^{a}}}^{T} & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & 0 & 0\\
 | |
| 0 & 0 & 0 & 0 & 0
 | |
| \end{array}\right]
 | |
| \end{multline*}
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Subsubsection*
 | |
| Covariance Discretization
 | |
| \begin_inset CommandInset label
 | |
| LatexCommand label
 | |
| name "subsec:Covariance-Discretization"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| So far, all the covariances are assumed to be continuous since the state
 | |
|  and measurement models are considered to be continuous-time stochastic
 | |
|  processes.
 | |
|  However, we sample measurements in a discrete-time fashion, necessitating
 | |
|  the need to convert the covariances to their discrete time equivalents.
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| The IMU is modeled as a first order Gauss-Markov process, with a measurement
 | |
|  noise and a process noise.
 | |
|  Following 
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| after "Alg. 1 Page 57"
 | |
| key "Nikolic16thesis"
 | |
| literal "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
|  and 
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| after "Eqns 129-130"
 | |
| key "Trawny05report_IndirectKF"
 | |
| literal "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| , the measurement noises 
 | |
| \begin_inset Formula $[\epsilon^{a},\epsilon^{\omega},\epsilon_{init}]$
 | |
| \end_inset
 | |
| 
 | |
|  are simply scaled by 
 | |
| \begin_inset Formula $\frac{1}{\Delta t}$
 | |
| \end_inset
 | |
| 
 | |
| , and the process noises 
 | |
| \begin_inset Formula $[\epsilon^{int},\epsilon^{b^{a}},\epsilon^{b^{\omega}}]$
 | |
| \end_inset
 | |
| 
 | |
|  are scaled by 
 | |
| \begin_inset Formula $\Delta t$
 | |
| \end_inset
 | |
| 
 | |
|  where 
 | |
| \begin_inset Formula $\Delta t$
 | |
| \end_inset
 | |
| 
 | |
|  is the time interval between 2 consecutive samples.
 | |
|  For a thorough explanation of the discretization process, please refer
 | |
|  to 
 | |
| \begin_inset CommandInset citation
 | |
| LatexCommand cite
 | |
| after "Section 8.1"
 | |
| key "Simon06book"
 | |
| literal "false"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| .
 | |
| \end_layout
 | |
| 
 | |
| \begin_layout Standard
 | |
| \begin_inset CommandInset bibtex
 | |
| LatexCommand bibtex
 | |
| btprint "btPrintCited"
 | |
| bibfiles "refs"
 | |
| options "plain"
 | |
| 
 | |
| \end_inset
 | |
| 
 | |
| 
 | |
| \end_layout
 | |
| 
 | |
| \end_body
 | |
| \end_document
 |