VIO 中 IMU 的标定流程 (2/3) - kalibr_allan 使用备忘

kalibr_allan的使用流程

  • 本篇博客不含有编译的过程,只是记录一下流程备忘。一共三篇分别记录imu_utilskalibr_allanimu_tk的使用过程,本篇是02kalibr_allan
  • IMU需要标定的参数主要是确定性误差随机误差,确定性误差主要标定biasscalemisalignment,随机误差主要标定noiserandom walkkalibr_allan是用于求取随机误差的开源工具。

使用步骤 step-by-step

  • 连接IMU到录制bag数据都参考01imu_utils的使用流程一和二。

  • 利用kalibr_allan提供的bag转换工具,将bag数据转换为matlabmat数据,进入之前录制bag的文件夹,确认之前录制的bag名称。利用命令$ rosbag info xx.bag来查看话题,如图所示。
    VIO 中 IMU 的标定流程 (2/3) - kalibr_allan 使用备忘_第1张图片

  • 使用命令$ rosrun bagconvert bagconvert xx.bag/imu0,该命令的解释是$ rosrun bagconvert bagconvert [bag名字] [topic名字],这里如果topic输入不正确,可能会得到一个177kb的错误mat文件,一定保证topic正确,如上图中我录制的bagtopic就不是/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程序时的内存问题。

  • 果然,如图所示只是在退出程序时出现了内存的错误,而新加入的那句已经输出了,就先不深究这个问题。VIO 中 IMU 的标定流程 (2/3) - kalibr_allan 使用备忘_第2张图片

  • 使用kalibr_allan内部提供的matlab脚本来绘制allan方差曲线,并提取相应的系数。这一步骤参考这篇即可,写得很详细 [1]

参考

[1] $南山种豆$, CSDN博客,VIO标定IMU随机误差:Allan方差法

你可能感兴趣的:(AR增强现实,imu标定,SLAM,ROS)