kalibr_allan
的使用流程
- 本篇博客不含有编译的过程,只是记录一下流程备忘。一共三篇分别记录
imu_utils
,kalibr_allan
和imu_tk
的使用过程,本篇是02篇kalibr_allan
。 - IMU需要标定的参数主要是确定性误差和随机误差,确定性误差主要标定bias,scale和misalignment,随机误差主要标定noise和random walk,
kalibr_allan
是用于求取随机误差的开源工具。
使用步骤 step-by-step
-
连接
IMU
到录制bag
数据都参考01篇imu_utils
的使用流程一和二。 -
利用
kalibr_allan
提供的bag
转换工具,将bag
数据转换为matlab
的mat
数据,进入之前录制bag
的文件夹,确认之前录制的bag
名称。利用命令$ rosbag info xx.bag
来查看话题,如图所示。
-
使用命令
$ rosrun bagconvert bagconvert xx.bag/imu0
,该命令的解释是$ rosrun bagconvert bagconvert [bag名字] [topic名字]
,这里如果topic
输入不正确,可能会得到一个177kb
的错误mat
文件,一定保证topic
正确,如上图中我录制的bag
的topic
就不是/imu0
。 -
报错处理,在转换bag数据的时候,报出了一个错误
*** Error in `/home/jqf/catkin_ws/devel/lib/bagconvert/bagconvert': free(): invalid pointer: 0x00000000020a41a8 ***
但是最后确实生成了mat文件,并且有一定大小。 -
我们用命令进入
$ roscd bagconvert/
然后修改src
里面的main.cpp
,在最后的return
语句前面加一句输出ROS_INFO("The kalibr_allan is finished!");
然后重新编译工作空间$ catkin_make
测试报错是否只是在结束matlab
程序时的内存问题。 -
果然,如图所示只是在退出程序时出现了内存的错误,而新加入的那句已经输出了,就先不深究这个问题。
-
使用
kalibr_allan
内部提供的matlab
脚本来绘制allan
方差曲线,并提取相应的系数。这一步骤参考这篇即可,写得很详细 [1]。
参考
[1] $南山种豆$
, CSDN博客,VIO标定IMU随机误差:Allan方差法