Awesome
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 | <img src="https://latex.codecogs.com/svg.latex?{%5Csigma_g}"> | <img src="https://latex.codecogs.com/svg.latex?{%5Cfrac%7Brad%7D%7Bs%7D%5Cfrac%7B1%7D%7B%5Csqrt%7BHz%7D%7D}"> |
Accelerometer "white noise" | acc_n | <img src="https://latex.codecogs.com/svg.latex?{%5Csigma_a}"> | <img src="https://latex.codecogs.com/svg.latex?{%5Cfrac%7Bm%7D%7Bs^2%7D%5Cfrac%7B1%7D%7B%5Csqrt%7BHz%7D%7D}"> |
Gyroscope "bias Instability" | gyr_w | <img src="https://latex.codecogs.com/svg.latex?{%5Csigma_b_g}"> | <img src="http://latex.codecogs.com/svg.latex?\frac{rad}{s}&space;\sqrt{Hz}" title="\frac{rad}{s} \sqrt{Hz}" /> |
Accelerometer "bias Instability" | acc_w | <img src="https://latex.codecogs.com/svg.latex?{%5Csigma_b_a}"> | <img src="http://latex.codecogs.com/svg.latex?\frac{m}{s^2}&space;\sqrt{Hz}" title="\frac{m}{s^2} \sqrt{Hz}" /> |
-
White noise is at tau=1;
-
Bias Instability is around the minimum;
(according to technical report: Allan Variance: Noise Analysis for Gyroscopes
)
sample test
<img src="figure/gyr.jpg"> <img src="figure/acc.jpg">- 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
-
download required
code_utils
; -
put the ROS package
imu_utils
andcode_utils
into your workspace, usually namedcatkin_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:百度网盘