Multi-IMU Fusion

Modular Python package for sensor fusion across multiple IMU types

Status
Research
Version
1.0.0
Platform
Library / CLI
License
MIT
01 · Problem

Combining orientation data from different IMU models usually needs per-device drivers, calibration and fusion code; this package puts them behind one API.

02 · Architecture

How it is put together.

Multi-IMU Fusion is a Python package for reading and fusing data from several IMUs at once. It includes drivers and auto-detection for common IMUs over I2C/SPI/UART, gyro and accelerometer calibration, Madgwick, EKF, UKF and complementary filters, and multi-rate synchronisation. Fused data can be logged to CSV/HDF5 or streamed over UDP, TCP, WebSocket or MQTT, and a PyQt5 GUI and CLI provide control and 2D/3D orientation views.

IMU driversmulti_imu_fusion/imu/Fusion coremulti_imu_fusion/core.pyFusion algorithmsmulti_imu_fusion/fusion/Calibrationmulti_imu_fusion/calibratio…Streaming and loggingmulti_imu_fusion/data/GUI and CLImulti_imu_fusion/gui/auto-detected IMUsauto-detected IMUssensor samplessensor samplesraw dataraw datafused datafused datastatestateIMU driversmulti_imu_fusion/imu/Fusion coremulti_imu_fusion/core.pyFusion algorithmsmulti_imu_fusion/fusion/Calibrationmulti_imu_fusion/calibratio…Streaming and loggingmulti_imu_fusion/data/GUI and CLImulti_imu_fusion/gui/auto-detected IMUsauto-detected IMUssensor samplessensor samplesraw dataraw datafused datafused datastatestate
FIG. 01Modules and data flows, from the repository layout and documentation.
  1. 1

    IMU drivers

    Hardware abstraction per IMU and auto-detection

    multi_imu_fusion/imu/
  2. 2

    Fusion core

    MultiIMUFusion: manages IMUs, runs fusion, exposes API

    multi_imu_fusion/core.py
  3. 3

    Fusion algorithms

    Madgwick, EKF, UKF, complementary

    multi_imu_fusion/fusion/
  4. 4

    Calibration

    Gyro and accelerometer calibration

    multi_imu_fusion/calibration/
  5. 5

    Streaming and logging

    Network streaming and file logging

    multi_imu_fusion/data/
  6. 6

    GUI and CLI

    PyQt5 GUI and command-line interface

    multi_imu_fusion/gui/
03 · Capabilities

Specification.

IMU drivers
MPU6050, BNO055, LSM9DS1, ICM20948, Xsens; plugin interface for new devices
Buses
I2C, SPI, UART with auto-detection
Fusion
Madgwick, EKF, UKF, complementary filter
Calibration
Gyroscope and accelerometer calibration routines
Streaming
UDP, TCP, WebSocket, MQTT
Logging
CSV and HDF5
Interfaces
Python API, CLI (status, list, calibrate, stream, log), PyQt5 GUI
Benchmarks
Committed benchmark result JSON files (benchmark_results/, 2025-07-06)
Runs on
Python package (pyproject.toml, name multi-imu-fusion) with CLI and optional PyQt5 GUI; needs IMU hardware
Stack
  • Python
  • NumPy
  • SciPy
  • pyserial
  • smbus2
  • spidev
  • PyQt5
  • PyQtGraph
  • PyOpenGL
  • h5py
  • pyzmq
  • paho-mqtt