该篇参考港科大的github: https://github.com/gaowenliang/imu_utils
https://blog.csdn.net/fang794735225/article/details/92804030
- 安装依赖项
sudo apt-get install libdw-dev
- 下载imu_utils和code_utils
imu_utils下载地址为:https://github.com/gaowenliang/imu_utils
code_utils下载地址为: https://github.com/gaowenliang/code_utils
也有整合成一个仓库的:https://gitcode.net/mirrors/gaowenliang/imu_utils?utm_source=csdn_github_accelerator
在编译之前我们先注意三个问题,避免入坑
(1)全局安装ceres库,code_imu依赖ceres。
(2)不要同时把imu_utils和code_utils一起放到src下进行编译。
由于imu_utils 依赖 code_utils,所以先把code_utils放在工作空间的src下面,进行编译。然后再将imu_utils放到src下面,再编译。
否则会报如下错误:
Could not find a package configuration file provided by "code_utils" with
any of the following names:
code_utilsConfig.cmake
code_utils-config.cmake
Add the installation prefix of "code_utils" to CMAKE_PREFIX_PATH or set
"code_utils_DIR" to a directory containing one of the above files. If "code_utils" provides a separate development package
or SDK, be sure it has been installed.
(3)编译报错:
code_utils-master/src/sumpixel_test.cpp:2:24: fatal error: backward.hpp:No such file or directory
填坑: 在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"为 #include “code_utils/backward.hpp”,再编译。
- 编译
把code_utils放在工作空间的src下面,然后编译。
cd catkin_ws
catkin_make
编译成功以后,再把imu_utils放到工作空间的src下面,进行编译。
cd catkin_ws
catkin_make
4.录制imu.bag
让IMU静止不动两个小时,录制IMU的bag.
cd MYNT-EYE-D-SDK
source wrappers/ros/devel/setup.bash
roslaunch mynteye_wrapper_d display.launch
rosbag record /mynteye/imu/data_raw -O imu.bag
两个小时以后按Ctrl+C完成录制。
- 标定IMU
rosbag play -r 200 imu_utils/imu.bag (这里要写你录制的包的路径)
cd imu_ws
source ./devel/setup.bash
roslaunch imu_utils mynt_imu.launch
注意这里的launch文件,我用的是小觅相机,所以imu.launch的内容为:
<launch>
<node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
<param name="imu_topic" type="string" value= "/mynteye/imu/data_raw"/> #imu topic的名字
<param name="imu_name" type="string" value= "mynteye"/>
<param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
<param name="max_time_min" type="int" value= "120"/> #标定的时长
<param name="max_cluster" type="int" value= "100"/>
</node>
</launch>
运行完之后,会在imu_utils/data文件夹下生产多个txt文件。
利用MATLAB和这几个txt文件便可以画出了Allan方差图
sudo /usr/local/MATLAB/R2016b/bin/matlab #需要用sudo,不然一直卡在启动界面
打开draw_allan.m,并对里面的文件路径进行修改,便可画出Allan方差图了。
错误解决方案:
wait for imu data.
- 首先检查launch文件中的
imu_topic
是否与bag包中的topic一致。两种方法查看bag包中的topic name:
1.1 rosbag play XXXX.bag; 然后另开一个终端 rostopic list,检查输出的topic name;
1.2 rosbag info XXXX.bag; 会直接给出bag包里的信息,包括包的时长等信息; - 根据时长信息修改launch文件里的
max_time_min
参数值