参考:
标定源码:GitHub - rpng/kalibr_allan: IMU Allan standard deviation charts for use with Kalibr and inertial kalman filters.
注意:kalibr_allan内部只有一个ros包(bagconvert),并且编译需要安装matlab2018a。
安装参考博客:
[1]. 【Ubuntu】安装 Matlab2018a详细教程_1-Walker的博客-CSDN博客_matlab2018a

matlab文件,放到性能好的电脑下运行,windows也可,就可以快一点标定出结果。

具体对应的是ROS里面的 Sensor_msg/IMU 结构体数据
目前 :在装了ros的条件下,Matlab2018a能够正常编译上述kalibr源码。
并且需要进入到bagconvert包的 cmake/FindMatlab.cmake 文件,把62行代码改为如下:
find_program(MATLAB_EXE_PATH matlab PATHS /usr/local/MATLAB/R2018a/bin)原来的路径不是matlab的路径,会找不到,编译失败。
输入2中制作的rosbag包即可输出一个mat文件
只需要运行以下命令:
rosrun bagconvert bagconvert imu.bag(存储IMU数据的bag文件) imu0(IMU话题名)
这里注意的一个细节,后面的话题名(一般的话题名都带有反斜杠)一定要去掉前面的斜杠,因为bagconvert的内部程序,m.getTopic()获得的话题名没有那个反斜杠,在判断 m.getTopic() == 我们输入的话题名,这一个环节就会不能运行正确的程序而导致最终的输出mat文件非常小,1kb都不到。
这里最好在性能好的cpu上运行,能快一点。
(1)灵活修改 SCRIPT_allan_matparallel.m 文件中以下的内容
(2)运行 SCRIPT_allan_matparallel.m 文件
运行了12分钟,生成了上面的红框框mat文件
(3)修改 SCRIPT_process_results.m 文件,如下图,为(2)中生成的文件
,
(4)运行 SCRIPT_process_results.m 文件
最终得到如下两图:
![]()
具体数值的意义见1中的分析。