ov_msckf namespace

Extended Kalman Filter estimator.


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:

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.


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.