Back to rankings

gaowenliang/imu_utils

C++gaowenliang.github.io/imu_utils

A ROS package tool to analyze the IMU performance.

imuallangyrocalibration
Star Growth
Stars
1.7k
Forks
503
Weekly Growth
Issues
34
5001k1.5k
Feb 2018Nov 2020Sep 2023Jul 2026
README

imu_utils

A ROS package tool to analyze the IMU performance. C++ version of Allan Variance Tool. The figures are drawn by Matlab, in scripts.

Actually, just analyze the Allan Variance for the IMU data. Collect the data while the IMU is Stationary, with a two hours duration.

refrence

Refrence technical report: Allan Variance: Noise Analysis for Gyroscopes, vectornav gyroscope and An introduction to inertial navigation.

Woodman, O.J., 2007. An introduction to inertial navigation (No. UCAM-CL-TR-696). University of Cambridge, Computer Laboratory.

Refrence Matlab code: GyroAllan

IMU Noise Values

Parameter YAML element Symbol Units
Gyroscope "white noise" gyr_n
Accelerometer "white noise" acc_n
Gyroscope "bias Instability" gyr_w
Accelerometer "bias Instability" acc_w
  • White noise is at tau=1;

  • Bias Instability is around the minimum;

(according to technical report: Allan Variance: Noise Analysis for Gyroscopes)

sample test

  • blue : Vi-Sensor, ADIS16448, 200Hz
  • red : 3dm-Gx4, 500Hz
  • green : DJI-A3, 400Hz
  • black : DJI-N3, 400Hz
  • circle : xsens-MTI-100, 100Hz

How to build and run?

to build

sudo apt-get install libdw-dev
  • put the ROS package imu_utils into your workspace src folder, usually named catkin_ws;

  • cd to your workspace, build with catkin_make;

to run

  • collect the data while the IMU is Stationary, with a two hours duration;

  • (or) play rosbag dataset;

 rosbag play -r 200 imu_A3.bag
  • roslaunch the rosnode;
roslaunch imu_utils A3.launch

Be careful of your roslaunch file:

<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/djiros/imu"/>
        <param name="imu_name" type="string" value= "A3"/>
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <param name="max_time_min" type="int" value= "120"/>
        <param name="max_cluster" type="int" value= "100"/>
    </node>
</launch>

sample output:

type: IMU
name: A3
Gyr:
   unit: " rad/s"
   avg-axis:
      gyr_n: 1.0351286977809465e-04
      gyr_w: 2.9438676109223402e-05
   x-axis:
      gyr_n: 1.0312669892959053e-04
      gyr_w: 3.3765827874234673e-05
   y-axis:
      gyr_n: 1.0787155789128671e-04
      gyr_w: 3.1970693666470835e-05
   z-axis:
      gyr_n: 9.9540352513406743e-05
      gyr_w: 2.2579506786964707e-05
Acc:
   unit: " m/s^2"
   avg-axis:
      acc_n: 1.3985049290745563e-03
      acc_w: 6.3249251509920116e-04
   x-axis:
      acc_n: 1.1687799474421937e-03
      acc_w: 5.3044554054317266e-04
   y-axis:
      acc_n: 1.2050535351630543e-03
      acc_w: 6.0281218607825414e-04
   z-axis:
      acc_n: 1.8216813046184213e-03
      acc_w: 7.6421981867617645e-04

dataset

DJI A3: 400Hz

Download link: 百度网盘

DJI A3: 400Hz

Download link: 百度网盘

ADIS16448: 200Hz

Download link:百度网盘

3dM-GX4: 500Hz

Download link:百度网盘

xsens-MTI-100: 100Hz

Download link:百度网盘

Related repositories
ethz-asl/kalibr

The Kalibr visual-inertial calibration toolbox

C++Othercameracalibration
5.6k1.6k
but0n/Avem

🚁 轻量级无人机飞控-[Drone]-[STM32]-[PID]-[BLDC]

CMIT Licensedronesfreertos
2.8k584
RobustFieldAutonomyLab/LeGO-LOAM

LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain

C++BSD 3-Clause "New" or "Revised" Licenseloamiros
2.7k1.2k
avem-labs/Avem

🚁 轻量级无人机飞控-[Drone]-[STM32]-[PID]-[BLDC]

CMIT Licensedronesfreertos
2.2k520
koide3/glim

GLIM: versatile and extensible point cloud-based 3D localization and mapping framework

C++MIT Licenseslam3d
koide3.github.io/glim/
1.7k262
Aceinna/gnss-ins-sim

Open-source GNSS + inertial navigation, sensor fusion simulator. Motion trajectory generator, sensor models, and navigation

PythonPyPIMIT Licenseinertial-navigation-systemsgnss
1.5k375
nickrehm/dRehmFlight

Teensy/Arduino flight controller and stabilization for small-scale VTOL vehicles

C++GNU General Public License v3.0vtolteensy
1.4k317
vectr-ucla/direct_lidar_odometry

[IEEE RA-L & ICRA'22] A lightweight and computationally-efficient frontend LiDAR odometry solution with consistent and accurate localization.

C++MIT Licenseroboticsslam
1k218
SlimeVR/SlimeVR-Server

Server app for SlimeVR ecosystem

FluentApache License 2.0imuimu-sensor
slimevr.dev
1k245
vectr-ucla/direct_lidar_inertial_odometry

[IEEE ICRA'23] A new lightweight LiDAR-inertial odometry algorithm with a novel coarse-to-fine approach in constructing continuous-time trajectories for precise motion correction.

C++MIT License3d-mappingimu
1k251