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.
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
sudo apt-get install libsuitesparse-dev
# Ceres
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver && mkdir build && cd build && cmake .. && make -j32
sudo make install
sudo apt-get install libdw-dev
Get realsense-ros
Change rs_t265.launch:
<arg name="unite_imu_method" default="linear_interpolation"/>
And then:
roslaunch realsense2_camera rs_t265.launch
source /opt/ros/noetic/setup.bash && catkin build
source /opt/ros/noetic/setup.bash && catkin build && source devel/setup.bash && roslaunch realsense2_camera rs_t265.launch
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
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
)
- blue : Vi-Sensor, ADIS16448,
200Hz
- red : 3dm-Gx4,
500Hz
- green : DJI-A3,
400Hz
- black : DJI-N3,
400Hz
- circle : xsens-MTI-100,
100Hz
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
;
-
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>
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
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:百度网盘