Open Source Robotics

A curated collection of high-quality open source robotics projects, tools, and software to propel the robotics community forward.

Visual-Inertial Odometry

  • Also called: VIO, visual-inertial navigation
  • Category: State estimation & navigation › Localisation
  • Tags: state-estimation, odometry, imu, computer-vision, drones

Estimating a robot's position, orientation and velocity by fusing camera images with IMU measurements; the IMU fills gaps between frames and makes metric scale observable.

Definition

Visual-inertial odometry (VIO) estimates the motion of a camera rigidly mounted together with an inertial measurement unit (IMU). The camera tracks visual features or image intensities across frames, which constrains rotation and the direction of translation well but drifts slowly and, with a single camera, cannot recover metric scale. The IMU measures angular velocity and specific force at a much higher rate; integrating it gives short-term motion and makes the gravity direction and metric scale observable, but on its own the integration error grows quickly. Combining the two gives an estimate that is more accurate and more robust than either sensor alone, and VIO is a standard state estimator on drones, AR headsets and many legged robots.

Systems differ along two lines. Filter-based methods, such as the multi-state constraint Kalman filter (MSCKF) of Mourikis and Roumeliotis (2007) and ROVIO, propagate the state with the IMU and update it with visual measurements. Optimization-based methods, such as OKVIS and VINS-Mono, solve a sliding-window nonlinear least-squares problem over recent keyframes, usually with IMU preintegration factors between them. Either kind can be tightly coupled, using feature observations directly in the estimator, or loosely coupled, fusing a pose computed separately by a vision pipeline. Feature-based front ends track corners or descriptors; direct methods work on pixel intensities.

VIO is still odometry. Position and yaw about the gravity axis are unobservable, so they drift without loop closure or an external reference, while roll and pitch stay bounded because the IMU senses gravity. Accuracy depends heavily on calibration (camera intrinsics, camera-IMU extrinsics and the time offset between the two sensors) and on initialization, which must estimate gravity, scale, velocity and biases. Fast motion causes motion blur and large feature displacements, low texture and poor lighting starve the front end, and motion at constant velocity leaves scale and biases weakly observable. The visual odometry entry covers the camera-only case; VIO differs by treating the IMU as a full measurement inside the estimator rather than an optional aid.

Why it matters

VIO gives a light, inexpensive and power-efficient sensor pair a metric, high-rate pose estimate without GPS or external motion capture. Agile drones, mobile AR devices and many field robots rely on it, and its failure modes (drift, scale error and loss of tracking during fast motion) set limits on how aggressively such robots can move.

Key applications

  • Drone flight without GPS, indoors, under tree canopy and near structures
  • Head and device tracking for augmented and virtual reality
  • State estimation for legged robots and handheld mapping devices
  • Front end for visual-inertial SLAM systems
  • Navigation for aerial vehicles and landers where satellite positioning is unavailable

In practice

A team building an autonomous racing quadrotor mounts a global-shutter stereo camera and an IMU on the same rigid plate, then calibrates camera intrinsics, camera-IMU extrinsics and the time offset with a calibration target and a tool such as Kalibr. On the vehicle, a sliding-window estimator tracks features at camera rate and integrates the IMU between frames, publishing pose and velocity to the controller at IMU rate. During fast turns, motion blur shortens feature tracks and the position estimate drifts over the course, so the team fuses detections of the race gates, whose approximate positions are known, to correct the accumulated drift. They log the estimator's bias and feature-count outputs on every flight, since a falling feature count is usually the first sign of a coming failure.

Common misconceptions

  • VIO gives an absolute position — it is odometry: position and heading drift over distance unless corrected by loop closure, a map or an external reference
  • Adding an IMU fixes every failure of visual odometry — the IMU bridges short gaps, but long periods without trackable features still cause drift and can break initialization
  • Any camera and IMU can be combined without care — accurate extrinsic calibration and time synchronization often decide whether the estimator works or diverges

Who should know this

  • State estimation and SLAM engineers
  • Drone and aerial robotics developers
  • AR and VR tracking engineers
  • Legged and mobile robot navigation engineers

Related technologies

  • VINS-Mono
  • OKVIS
  • MSCKF
  • ROVIO
  • ORB-SLAM3
  • Kalibr

Related terms

  • Visual Odometry
  • IMU
  • IMU Preintegration
  • Tightly Coupled Sensor Fusion
  • Sensor Fusion
  • SLAM

Related projects

  • ArduPilot: World's most trusted open-source autopilot for drones, planes, rovers, and submarines
  • PX4 Autopilot: Open-source flight control software for drones and other unmanned vehicles
  • OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
  • OpenCat: An open-source Arduino and Raspberry Pi-based quadruped robot pet framework
  • QGroundControl: Cross-platform ground control station for mission planning and drone flight monitoring
  • FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO

This website requires JavaScript to function properly. Please enable JavaScript to explore our collection of open source robotics projects.