Skip to content

SupremeLyre/imu_utils-ros2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imu_utils2

A ROS2 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 install python3-colcon-common-extensions -y
  • this project requires:

    • ros2
    • ceres-solver 2.1.0
    • opencv 4
  • clone this repo into your workspace, usually named imu_utils-ros2_ws/src;

  • cd to your workspace, build with colcon build;

i.e.

mkdir -p imu_utils-ros2_ws/src
cd imu_utils-ros2_ws/src
git clone https://github.com/supremelyre/imu_utils-ros2.git
cd ..
colcon build

to run

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

  • (or) play rosbag dataset;

 ros2 bag play -r 200 imu_A3.db3

you may need to convert your ros1 bag to ros2 one, using:

pip install rosbags-convert
rosbags-convert --src imu_A3.bag --dst imu_A3
  • ros2 launch the ros2 node;
ros2 launch 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:百度网盘

About

A ROS2 package tool to analyze the IMU performance.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 68.5%
  • MATLAB 26.1%
  • CMake 3.1%
  • Python 2.3%