jnz/INSLIB

Open Source Inertial Navigation Library

What it solves

INSLIB provides a portable, high-precision solution for 3D navigation state estimation. It solves the problem of accurately tracking a vehicle's position, orientation, and velocity by fusing data from multiple sensors—such as IMUs, GNSS/GPS, barometers, and magnetometers—while handling real-world challenges like sensor latency, noise, and GNSS outages.

How it works

The library uses a set of Kalman filters (specifically robust UDU/Bierman-Thornton square-root filtering) to fuse measurements from various sources. It is written in pure C11 for maximum portability and efficiency on embedded microcontrollers, avoiding heap allocation and OS dependencies. To ensure accuracy, it includes tools for sensor calibration (bias, scale, and misalignment) and a method for estimating GNSS latency by cross-correlating vertical velocity data.

Who it’s for

  • Robotics and UAV developers: Those building drones, autonomous vehicles, or aerospace systems requiring precise real-time tracking.
  • Embedded systems engineers: Developers needing a lightweight, WCET-friendly navigation library for bare-metal targets.
  • Data analysts: Researchers post-processing recorded flight or driving data to analyze navigation performance.

Highlights

  • Aerospace-grade reliability: Features over 90% test coverage with MC/DC testing and strict requirements traceability.
  • Embedded optimized: No heap or OS dependencies, using 32-bit floats to avoid the need for 64-bit double precision hardware.
  • Robust sensor fusion: Supports a wide array of inputs including Galileo HAS, RTK GNSS, magnetometers, and zero-velocity/rotation updates.
  • Comprehensive tooling: Includes Python-based GUIs for post-processing, live data visualization, and sensor calibration.

Related

  • Project
  • Project
  • Project
  • Project