技术分享 | 带你实现IMU和双目相机的联合标定

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | 带你实现IMU和双目相机的联合标定相关的知识,希望对你有一定的参考价值。

紧接着上次我们讲解了VINS的基本原理,这次需要做的就是VINS落地之前的参数配置,我们先标定IMU和双目相机。联合标定是指,将IMU和双目相机之间的变换矩阵以及其他一些无法估计的Bias标定出来。变换矩阵对于VINS极为重要,如果精度过低,整个系统就会变得极为不鲁棒。

1.imu_utils 标定IMU的内参,可以校准IMU的高斯白噪声和随机游走误差 2.kalibr包标定相机的内外参数,相机与IMU的外参 1.imu_utils标定IMU的内参 1.1首先需要安装环境,安装ceres库 下面安装ceres的依赖 sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev sudo apt-get install libgoogle-glog-dev libgtest-dev 下载编译ceres-solver git clone https://github.com/ceres-solver/ceres-solver.git cd ceres-solver mkdir build cd build cmake .. make && sudo make install 1.2安装code_utils mkdir -p ~/kalibr_workspace/src cd ~/kalibr_workspace catkin_make sudo apt-get install libdw-dev cd kalibr_workspace/src git clone https://github.com/gaowenliang/code_utils.git cd .. catkin_make 1.3安装imu_utils cd kalibr_workspace/src git clone https://github.com/gaowenliang/imu_utils.git cd .. catkin_make

2.kalibr的安装 2.1依赖安装 2.2下载源码 这里建议新建一个工作空间 mkdir -p kalibr_ws/src git clone https://github.com/ethz-asl/Kalibr.git cd ~/kalibr_ws catkin build -DCMAKE_BUILD_TYPE=Release -j4 这里可能会出现问题 原因是kalibr只支持opencv2,提供一个非常简单的做法文件kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/aslam_helper.hpp里面,changing “CvSize”into “cv::Size”即可。 3.imu的标定 3.1录制IMU的数据集 rosbag record /marvos/imu/data -O imu_D435I.bag 网上建议录制两个小时,根据个人情况而定。 3.2标定配置文件imu.launch 文件为如下内容 3.3随后启动imu_utils 标定IMU rosbag play -r 200 imu_D435I.bag roslaunch imu_utils imu.launch 可得到如下结果: 我们并不需要使用这么多参数,只需要使用标红的地方。新建一个imu.yaml文件,具体内容如下: 4 相机标定 4.1改变相机发布频率, 话题名需要根据自己的话题名更改,降低发布频率主要是为了减小录制包的大小 rosrun topic_tools throttle messages /camera/infra1/image_raw 4.0 rosrun topic_tools throttle messages /camera/infra2/image_raw 4.0 4.2录制bag 包 rosbag record /cmaera/infra1/image_raw /camera/infra2/image_raw -O camera.bag 4.3标定 我这里使用的标定板是官方提供的标定板,并不是常见的棋盘格。大小也需要根据自己的实际大小修改,不可直接粘贴复制!

kalibr_calibrate_cameras --target april_6x6_24x24mm.yaml --bag camera.bag --bag-from-to 5 30 --models pinhole-radtan pinhole-radtan --topics /camera/infra1/image_raw /camera/infra2/image_raw 之后会得到一个标定好的yaml文件,我的是camchain.yaml,具体看你自己。这个yaml文件是为我们联合标定做准备的。 注:红色字体部分都需要根据自己的修改。 5.校准相机和IMU 把IMU和相机固定在一起录制bag 包,录制的时候需要充分激励IMU的各个轴,绕3个轴旋转和3个方向的平移。这里附上官方标定动作,需要挂梯子。 https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY 这里需要修改imu的发布频率,官方推荐为200HZ rosrun topic_tools throttle messages /camera/imu 200.0 /imu

5.1录制相机的IMU的bag包 rosbag record /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw /imu -o camera_imu.bag kalibr_calibrate_imu_camera --target april_6x6_24x24mm.yaml –bag camera_imu.bag --cam camchain.yaml --imu imu.yaml 24x24是标定板尺寸大小,红色部分需要根据自己的实际修改。

得到一个联合标定文件 其中就包括了我们需要的相机和IMU之间的相对变换矩阵。 图 1 左目和IMU之间的变换矩阵 图 2 右目和IMU之间的相对变换矩阵

好了,到此为止我们已经标定出我们需要的所有参数,后面需要做的就是把这些参数代入VINS即可。

-- End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。

阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

以上是关于技术分享 | 带你实现IMU和双目相机的联合标定的主要内容,如果未能解决你的问题,请参考以下文章

【SLAM】kalibr工具IMU和双目相机标定

Kalibr 标定双目内外参数以及 IMU 外参数

Kalibr 标定双目内外参数以及 IMU 外参数

imu和canmera标定

Matlab双目相机标定

双目相机标定以及立体测距原理及OpenCV实现