VIO 中 IMU 的标定流程 (1/3) - imu_utils 使用备忘
imu_utils
的使用流程
- 本篇博客不含有编译的过程,只是记录一下流程备忘。一共三篇分别记录
imu_utils
,kalibr_allan
和imu_tk
的使用过程,本篇是01篇imu_utils
。 - IMU需要标定的参数主要是确定性误差和随机误差,确定性误差主要标定bias,scale和misalignment,随机误差主要标定noise和random walk,
imu_utils
是用于求取随机误差的开源工具。
使用步骤 step-by-step
一、连接IMU
到电脑
- 输入命令
$ ls /dev/ttyUSB*
- 一般只有一个USB连接的话,输出
/dev/ttyUSB0
则连接正确,串口已识别。
二、录制 ROS_bag
-
打开一个
terminal
,打开ROS
主节点:$ roscore
-
打开一个
terminal
,进入所对应IMU提供的SDK的包内查看节点,我们使用了Xsens
提供的官方ROS
驱动,输入命令$ roscd xsens_driver/launch
,查看文件$ ls
-
launch
下有一个文件xsens_driver.launch
,打开查看文件内容,输入命令$ gedit xsens_driver.launch
,一般不需要修改,如果打开节点遇到timeout
问题,可以适当将timeout default
改大一点。 -
打开节点,输入命令
$ roslanuch xsens_driver.launch
,看到输出没有报错,节点启动成功。 -
打开一个
terminal
,输入命令$ rostopic list
查看所有话题,正常情况下会看到6个话题:/imu/data
/imu/mag
/imu_data_str
/rosout
/rosout_agg
/velocity
-
查看输出数据,输入命令
$ rostopic echo /imu/data
,看到节点正确输出IMU
数据即可。 -
为存放
bag
数据新建一个文件夹,位置随意,并进入这个文件夹打开一个terminal
,输入命令$ rosbag record /imut/data -o test_imu_2020
,这时输出命令类似如下。 -
查看文件夹,会看到
test_imu_2020_20xx-xx-xx-xx-xx-xx.bag.active
这个文件,就是正在录制的bag
,静止不动,录制两个小时以上,录制完毕后ctrl + C
停止即可。
三、使用imu_utils
计算allan
方差
-
打开一个
terminal
,进入之前编译好的imu_utils
文件夹下xsens.launch
文件查看相关设置$ gedit xsens.launch
。 -
这里有一个
max_time_min
表示使用bag
数据的最大时长,单位是分钟,默认是120
分钟,程序会在最大时间截断读取数据,然后终端下输入命令roslaunch imu_utils xsens.launch
,先放着不要执行。 -
之前录制
bag
的终端不要关闭,由于我们在编译imu_utils
时肯定会加载环境变量,因此在任何终端都可以调用ROS
下的函数,在bag
包存放的路径下使用rosbag
提供的快速回放命令,rosbag play -r 200 test_imu_2020_20xx-xx-xx-xx-xx-xx.bag
,也不要执行,先放着。 -
这一步是关键,在执行上上步
roslaunch imu_utils xsens.launch
之后,程序会进入等待话题的状态。 -
尽快执行
rosbag play -r 200 test_imu_2020_20xx-xx-xx-xx-xx-xx.bag
,程序进入bag
读取,并计算allan
方差。当bag
包加速回放完毕后,执行launch
的窗口仍然会显示wait for imu data.
,等待一段时间计算,计算完毕后会显示计算结果。 -
显示
done
之后,在catkin_ws/src/imu_utils/data
这个文件夹下会出现一系列的data
文件,打开xsens_imu_param.yaml
这个文件,会看到计算出来的噪声和随机游走的系数值。
四、绘制allan方差曲线
- 在
/catkin_ws/src/imu_utils/scripts
这个文件夹,有一些matlab
的脚本,用于绘制allan
方差曲线。需要修改data
文件存放的路径和名字,但这些脚本没有提供计算函数,只是绘图,根据5个斜率值 [1] 可以从曲线计算出yaml
文件对应的项目。 -
Matlab
中具体的参数读取参考这个博主即可,写得很好 [2]。
参考资料
[1] 厉宽宽, 陈允芳, 程敏, et al. MEMS-IMU随机误差的Allan方差分析[J]. 全球定位系统, 2016, 41(006):102-106.
[2] waihekor,****博客, IMU噪声参数辨识-艾伦方差