-
Notifications
You must be signed in to change notification settings - Fork 120
Home
Xivo is a filtering-based visual-inertial odometry (VIO) system. At its core, Xivo is an Extended Kalman Filter (EKF) with additional image processing and mapping capabilities. A diagram of its components is shown below.
IMU measurements are implemented as model inputs. EKF State Prediction
occurs whenever a new IMU measurement is acquired, typically at a frequency of hundreds of Hz. Pixel coordinates of tracked features are sensor measurements. EKF Measurement Prediction
, Image Processing
, and EKF Measurement Update
occur whenever a new RGB image is acquired, typically at a frequency of dozens of Hz. Mapping
searches for loop closures and solves the bundle adjustment problem in the background.
Please see Filter Equations for a detailed description.
Xivo is implemented in C++ in an object-oriented paradigm. A list of objects is shown below. Major components, shown in blue boxes, are singletons. The map is a collection of Feature
and Group
(past poses at times RGB images were taken) objects created by the MemoryManager
and accessible through the Graph
.
Each Group
contains pointers to all the features that were visible in the RGB image at that time. One group, designated the Reference Group
(a.k.a. Gauge Group
), is fixed -- the filter estimates positions and orientations relative to relative to the Reference Group
until all features the Reference Group
points to are no longer visible. When all features the Reference Group
points to are no longer visible, the group with visible features and the smallest covariance is the new reference group.