IMU标定

安装 Ceres

首先安装依赖 libdw-dev,在小车系统终端执行以下命令:

sudo apt-get install libdw-dev

然后需要进行 Ceres 库的安装,首先安装 Ceres 库所需的依赖项。

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

Ceres 的编译安装

https://github.com/ceres-solver/ceres-solver/tree/2.0.0 获取到 Ceres2.0.0 版

image-20231212164409243

mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.0.0
make -j3
make test
sudo make install
bin/simple_bundle_adjuster ../ceres-solver-2.0.0/data/problem-16-22106-pre.txt

image-20231212164257045

安装 code_utils 和 imu_utils

在安装完 Ceres 之后我们需要获取 code_utils 和 imu_utils 两个功能包,用于IMU 数据的误差标定分析。这两个功能包我们都有提供 opencv3 和 opencv4 环境 下修改后的版本,由于原版在编译时会遇到一些报错,基于这些报错我们对功能包源码进行了一定修改,使得这两个功能包在我们的环境下能直接编译成功。 在编译时需注意,imu_utils 包时依赖于 code_utils 的,所以我们需要先编译code_utils 功能包,之后再编译 imu_utils。这里我们可以采用单独编译的方式, 具体编译指令如下。

image-20231212163952903

# 创建workspace,将功能包放入src目录内,然后编译
catkin_make -DCATKIN_WHITELIST_PACKAGES=code_utils 
catkin_make -DCATKIN_WHITELIST_PACKAGES=imu_utils
#运行功能包
roslaunch fdilink_ahrs ahrs_data.launch
# 录制一小时
timeout 1h rosbag record -O imu_biaoding.bag /imu

录制bag

按照录制时间和imu发布的话题进行修改,我这里是1h,imu话题是/imu

timeout 1h rosbag record -O imu_biaoding.bag /imu

修改标定参数

打开imu_utils 功能包中的任意launch 文件(所有launch 文件本质是一样的),根据实际情况修改其中的话题名,IMU 名及标定时长三个参数

image-20231212204046267

roslaunch imu_utils A3.launch (找到刚才编译的code_utils和imu_utils) 
rosbag play -r 200 imu.bag (找到你录制bag的文件夹)

编译code_utils 报错

Snipaste_12-12_16-23

错误提示表明在构建ROS工程 code_utils 时,CMake找不到名为 Ceres 的包。这可能是由于你的系统中没有安装 Ceres 或者 Ceres 的CMake配置文件未在CMake的搜索路径中。所以,重新安装一下Ceres

image-20231212204444286

Snipaste_12-12_20-35

最后修改:2023 年 12 月 12 日
如果觉得我的文章对你有用,请随意赞赏