2115 lines
46 KiB
Plaintext
2115 lines
46 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 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 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 Murray84book) 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
|
|
|
|
.
|
|
\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
|
|
\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
|