【学习记录】IMU内参标定:Allan方差与代码

本文仅用于记录自己学习IMU内参标定过程中的一些总结。

参考

关于IMU参数:
死磕陀螺仪之(一)陀螺仪参数意义以及工程转换

关于Allan方差:
多传感器融合定位理论基础(三):惯性器件误差分析
IMU噪声参数辨识-艾伦方差

代码:imu_utils

https://github.com/gaowenliang/imu_utils

使用方法:

1. 录制rosbag数据
启动imu的节点发布imu数据,并用rosbag进行录制。录制过程中保证IMU静止不动。
录制时间建议>2h,否则辨识的不准确。数据量还行,我100hz的IMU录制给2小时只有不到300M。

2. 下载代码并编译
按照imu_utils的文档,下载 imu_utils 和作者依赖的代码 codes_utils,并一同放在同一个workspace下,进行编译。
自己编译时,遇到了如下两个错误:

“backward.hpp” No such file…
解决方法:修改头文件 “backward.hpp” -> “code_utils/backward”。详见 issue11

/usr/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0’
解决方法:修改bashrc,不激活anaconda,然后删掉build路径,重新编译。详见:解决libapr-1.so.0:对‘uuid_generate@UUID_1.0’未定义的引用

3. 修改配置文件
修改任意一个launch文件,主要修改:1. imu topic的名称;2. 持续时间(可以看代码中这个变量是干什么的,具体是时间戳达到这个值(单位为分钟)后,把接收到的数据进行分析。所以如果设定的时间比实际录制的长,则无法进入后续分析部分)在这里插入图片描述
4. 运行
首先打开标定launch,再播放录制的rosbag数据,可以用-r参数加速;

rosbag play -r 200 xxx.bag
roslaunch imu_utils A3.launch

5. 输出结果
最终标定结果在命令行以及data/路径生成yaml文件。

如果想绘制Allan曲线,可以运行scripts/draw_allan.m这个matlab脚本,运行时将所有路径的文件名替换成launch配置文件的"imu_name"参数即可。输出结果如下:
在这里插入图片描述

小结

整个过程还算顺利,一天搞定。感觉并不难,所有工具都做的不错。

猜你喜欢

转载自blog.csdn.net/tfb760/article/details/129142242