ov_msckf namespace
Extended Kalman Filter estimator.
Contents
- Reference
This is an implementation of a Multi-State Constraint Kalman Filter (MSCKF) [32] which leverages inertial and visual feature information. We want to stress that this is not a "vanilla" implementation of the filter and instead has many more features and improvements over the original. In additional we have a modular type system which allows us to initialize and marginalizing variables out of state with ease. Please see the following documentation pages for derivation details:
- IMU Propagation Derivations — Inertial propagation derivations and details.
- Measurement Update Derivations — General state update for the different measurements.
- First-Estimate Jacobian Estimators — Background on First-Estimate Jacobians and how we use them.
- Covariance Index Internals — High level details on how the type system and covariance management works.
The key features of the system are the following:
- Sliding stochastic imu clones
- First-Estimate Jacobians to maintain consistency
- Camera intrinsics and extrinsic online calibration
- Time offset between camera and imu calibration
- Inertial intrinsic calibration (including g-sensitivity)
- Standard MSCKF features with nullspace projection
- 3d SLAM feature support (with six different representations)
- Generic simulation of trajectories through and environment (see ov_msckf::
Simulator)
We suggest those that are interested to first checkout the State and Propagator which should provide a nice introduction to the code. Both the slam and msckf features leverage the same Jacobian code, and thus we also recommend looking at the UpdaterHelper class for details on that.
Classes
- struct NoiseManager
- Struct of our imu noise parameters.
- class Propagator
- Performs the state covariance and mean propagation using imu measurements.
- class ROS1Visualizer
- Helper class that will publish results onto the ROS framework.
- class ROS2Visualizer
- Helper class that will publish results onto the ROS framework.
- class ROSVisualizerHelper
- Helper class that handles some common versions into and out of ROS formats.
- class Simulator
- Master simulator class that generated visual-inertial measurements.
- class State
- State of our filter.
- class StateHelper
- Helper which manipulates the State and its covariance.
- struct StateOptions
- Struct which stores all our filter options.
- class UpdaterHelper
- Class that has helper functions for our updaters.
- class UpdaterMSCKF
- Will compute the system for our sparse features and update the filter.
- struct UpdaterOptions
- Struct which stores general updater options.
- class UpdaterSLAM
- Will compute the system for our sparse SLAM features and update the filter.
- class UpdaterZeroVelocity
- Will try to detect and then update using zero velocity assumption.
- class VioManager
- Core class that manages the entire system.
- struct VioManagerOptions
- Struct which stores all options needed for state estimation.