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 版
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
安装 code_utils 和 imu_utils
在安装完 Ceres 之后我们需要获取 code_utils 和 imu_utils 两个功能包,用于IMU 数据的误差标定分析。这两个功能包我们都有提供 opencv3 和 opencv4 环境 下修改后的版本,由于原版在编译时会遇到一些报错,基于这些报错我们对功能包源码进行了一定修改,使得这两个功能包在我们的环境下能直接编译成功。 在编译时需注意,imu_utils 包时依赖于 code_utils 的,所以我们需要先编译code_utils 功能包,之后再编译 imu_utils。这里我们可以采用单独编译的方式, 具体编译指令如下。
# 创建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 名及标定时长三个参数
roslaunch imu_utils A3.launch (找到刚才编译的code_utils和imu_utils)
rosbag play -r 200 imu.bag (找到你录制bag的文件夹)
编译code_utils 报错
错误提示表明在构建ROS工程 code_utils
时,CMake找不到名为 Ceres
的包。这可能是由于你的系统中没有安装 Ceres
或者 Ceres
的CMake配置文件未在CMake的搜索路径中。所以,重新安装一下Ceres
包