Visual-inertial odometry (VIO) is the step up from optical flow: instead of velocity only, you get a full 3D pose — position and orientation relative to where you started — which is enough for position hold, local-frame missions, and obstacle-aware flight, with no external infrastructure. The price is a companion computer, real calibration, and an order of magnitude more hardware cost.

This is part of the GPS-denied navigation series: six solutions compared. See also the GPS-denied overview and Vision-Based UAV Navigation.

How it works

One or two cameras track visual features (corners, blobs) frame to frame — visual odometry. An IMU (accelerometer + gyro at hundreds of Hz) is fused with the vision: it bridges fast motion that blurs images, bridges brief feature loss, and recovers metric scale for monocular setups. The fusion runs either as a filter (MSCKF — OpenVINS) or as sliding-window nonlinear optimization (VINS-Fusion). Output is a full 3D pose and velocity relative to the starting point.

PX4: a companion computer runs ROS; a ROS node reads the camera and publishes nav_msgs/Odometry to /mavros/odometry/out, and EKF2 fuses it via EKF2_EV_CTRL (horizontal/vertical position, velocity, yaw fusion), EKF2_HGT_REF = Vision, and EKF2_EV_DELAY (timestamp alignment — needs empirical tuning). Verify in QGroundControl’s MAVLink Inspector for ODOMETRY / VISION_POSITION_ESTIMATE messages, component ID 197 (MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY).

ArduPilot: external navigation via VISO_TYPE = 3 (VOXL) with EK3_SRC1_POSXY/VELXY/POSZ/VELZ/YAW = 6 (ExternalNav). Source switching (GPS outdoors / ExternalNav indoors) uses RC6_OPTION = 90.

Two caveats from the official PX4 guide: cameras are vibration-sensitive — soft mounting (isolation foam) is recommended. And running vision position and GPS together is “really difficult, because when they disagree it will confuse the EKF” — pick one.

DIY space: hardware and software

Hardware / softwareWhat it isPrice (verified)
Intel RealSense T265Dual fisheye + IMU, on-board 6DoF VIO on a Movidius Myriad 2 VPU; PX4’s reference VIO camera. Discontinued Feb 2022, still widely used secondhand~$200 at discontinuation; current street price unverified
Luxonis OAK-D Pro WStereo pair + 12 MP RGB + IMU, 4 TOPS on-device AI/depth. A stereo-depth/AI camera, not a turnkey VIO sensor — the estimator still runs on the host€717.70
Raspberry Pi 5 + Pi Camera + IMUCheapest from-scratch VIO rig; documented example uses OpenVINS with AprilGrid calibrationBundle price unverified; parts bought separately
OpenVINSGPL-3.0, MSCKF filter-based VIO, mono/stereo, online camera-IMU calibrationFree / open source
VINS-FusionGPL-3.0, HKUST, optimization-based sliding-window estimator, mono/stereo + IMUFree / open source
ModalAI VOXL 2QRB5165 8-core, 15 TOPS, 16 g; flight controller + companion computer on one board; runs VIO, SLAM, obstacle avoidance$1,399.99 board only; $1,499.99 dev kit
ModalAI VOXL 2 MiniSame QRB5165 in 11 g, 42×42 mm$1,349.99 board only

The cost cliff, from ModalAI’s James Strawson on the PX4 forum: “If you care about costs → optical flow. VOXL 2 computer + tracking ~$1,600.”

The mount matters as much as the camera: VIO needs a soft-mounted, precisely located camera with known extrinsics. See Mounting the Sensors for GPS-Denied Flight.

Designer: Pi 5 case, live 3D view, print estimate
Pi 5 case: the companion computer that runs the VIO estimator

Commercial and industrial use

Skydio X10: six navigation cameras in trinocular layout (32 MP, 200° FOV each), NVIDIA Jetson Orin, 360° obstacle avoidance, NightSense (visible/IR illumination for zero-light autonomy), flies in GPS- and comms-denied settings. Public safety, utilities, inspection, defense. Price by quote, not published; NDAA-compliant, on the Blue UAS Cleared List.

ModalAI Starling (275 g) / Sparrow (175 g): VOXL 2-based micro-drones built for GPS-denied autonomy and mapping, used in DoD programs.

Warehouse / indoor logistics: a 2026 Sensors paper benchmarking six lidar/LIO systems in an operational warehouse found the best lidar-inertial system cut trajectory error to about a third of the onboard VIO — VIO works in warehouses, but LIO currently beats it there.

Strengths and limits

Strengths: full 3D pose + velocity (not just velocity like flow); works anywhere with visual features — indoors, under bridges, urban canyons, warehouses; no external infrastructure; enables local-frame missions and waypoint flight; stereo or IMU fusion gives true metric scale.

Limits: drift accumulates without loop closure — VIO alone is odometry, not SLAM; needs light and texture (dark, blank walls, open water defeat it; Skydio’s NightSense exists precisely because of this); vibration-sensitive (soft-mount required); compute-hungry — Pi-class hardware is marginal for heavier estimators; calibration burden is real (camera-IMU extrinsics, time sync); monocular setups have scale ambiguity until the IMU observes enough motion; EKF2_EV_DELAY mistuning shows up as drift or flyaways.

Failure modes: feature loss during aggressive maneuvers (motion blur), low-texture/low-light scenes, vibration-induced tracking loss, GPS/vision disagreement confusing the EKF if both are fused, and latency/timesync errors between companion computer and flight controller.

How it compares

  • Optical flow gives velocity only, for tens of dollars and zero companion computer. VIO gives full 3D pose, for $1,400+ of compute plus calibration. Both die on textureless/dark scenes.
  • Lidar SLAM works in the dark and gives a map; VIO is lighter, cheaper, and passive (emits nothing an adversary can detect). In warehouses, current benchmarks put LIO ahead of VIO on accuracy.
  • UWB positioning is absolute and drift-free but needs installed anchors. VIO needs nothing installed — and drifts.
  • Terrain matching bounds the error VIO accumulates: VIO tracks smooth short-term motion, map matching periodically corrects the drift. Fielded systems pair them.
  • Dead reckoning is what VIO replaces: the IMU alone drifts in seconds; VIO’s camera corrections stretch that to minutes and missions.

Sources

MTSUAV

Plugins built by store owners, for store owners.

© 2026 MTSUAV — Independent Drone Research

Hands-on. Never theoretical.