MIT-SPARK/Kimera-VIO

Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.

Kimera‑VIO – Open‑source Visual‑Inertial Odometry

What it is – Kimera‑VIO is a C++ library that fuses stereo (or mono) camera images with IMU measurements to estimate a robot’s 6‑DoF pose in real time. It builds on factor‑graph optimization (GTSAM) and provides a full pipeline: front‑end feature tracking, IMU pre‑integration, backend optimization, optional loop‑closure detection, and 3‑D mesh generation.

Why it matters – Accurate state estimation is a core building block for autonomous robots, drones, AR/VR headsets, and any system that needs to know where it is while moving. Kimera‑VIO delivers metric‑scale odometry without relying on GPS and can run on a single laptop (Ubuntu 20.04) or inside a ROS workspace.


Key capabilities

Feature Details
Stereo + IMU (or Mono + IMU) Uses two cameras for metric scale; can fall back to a single camera.
Factor‑graph backend Optimizes poses with GTSAM, supporting the on‑manifold pre‑integration theory for fast, accurate VIO.
Structural regularities (optional) Exploits planar/line constraints to improve accuracy (ICRA 2019 paper).
Loop‑closure & pose‑graph optimization Disabled by default; enable with -lcd flag to close loops and run global pose‑graph optimization.
3‑D mesh output Generates a dense mesh of the environment as the robot moves.
ROS wrapper Separate repository (Kimera‑VIO‑ROS) lets you run the pipeline as ROS nodes.
Extensive logging & debugging tools Console stats, visualizer, and unit tests help developers profile performance.

Getting started (high‑level)

  1. Install dependencies – GTSAM ≥ 4.1, OpenCV ≥ 3.4, OpenGV, glog/gflags, DBoW2, Kimera‑RPGO, ANMS. A Docker image is provided for a one‑click setup.
  2. Build – Follow docs/kimera_vio_install.md (CMake + make). If you use ROS, clone Kimera‑VIO‑ROS into a catkin workspace and build together.
  3. Run on a dataset – The repo ships scripts for the EuRoC MAV benchmark. Example:
    ./scripts/stereoVIOEuroc.bash -p ~/Euroc/V1_01_easy   # basic run
    ./scripts/stereoVIOEuroc.bash -p ~/Euroc/V1_01_easy -lcd   # with loop closure
    
    Use -r to enable structural regularities.
  4. Inspect results – The visualizer shows live pose, point cloud, and mesh; logs are saved under output_logs/.

Typical use cases

  • Research – Benchmark VIO algorithms on EuRoC or custom datasets; experiment with loop‑closure or regularity constraints.
  • Robotics development – Integrate into a drone or ground robot for on‑board state estimation (via the ROS wrapper).
  • Mapping – Produce metric‑scale 3‑D meshes of indoor environments while moving.

License

Kimera‑VIO is released under the permissive BSD license, allowing commercial and academic use.


Quick reference links

  • PaperKimera: an Open‑Source Library for Real‑Time Metric‑Semantic Localization and Mapping (ICRA 2020) – https://arxiv.org/abs/1910.02490
  • Documentation – Installation, parameters, debugging, and development guides are in the docs/ folder.
  • Build status – Continuous‑integration badge at the top of the README.
  • Docker image – See the installation notes for a pre‑built container.

Related

  • Project
  • Project
  • Project
  • Project
  • Project