IMU-CAM联合标定测试(只依靠数据集)

参考论文:

[1]  Paul Furgale, Joern Rehder, Roland Siegwart (2013). Unified Temporal and Spatial Calibration for Multi-Sensor Systems. In Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Tokyo, Japan.

[2] Paul Furgale, T D Barfoot, G Sibley (2012). Continuous-Time Batch Estimation Using Temporal Basis Functions. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), pp. 2088–2095, St. Paul, MN.

参考博客(参考,但是不完全参考,因为这些博客都是老版本的kalibr版本了):

手机上的SLAM(7):Kalibr相机+IMU离线标定 - 知乎 (zhihu.com)  [3]  

利用Kalibr标定Camera-IMU外参_cjn_的博客-CSDN博客    [4]


以上参考博客,有重要的几个问题没有交代清楚,以及kalibr更新了之后不很多原有的步骤不同了,导致在后续的标定过程中出现了特别深的坑,在此记录一下,2022年10月23号晚上22:30


一. 下载kalibr源码

需要ros环境,但是目前因为ros自带的python编译器是python2,个人暂时没有花时间去了解如何改成python3(有知道的小伙伴可以告诉我咋改),python3基本安装完成就可以运行,python2的话还得改许多代码(但是单纯仅仅标定IMU和单目相机的外参来说,改的地方还不算多(这都不算事,主要花了一天时间调试,编译花了许久,就将就python2凑合着用吧!))

官方网址:GitHub - ethz-asl/kalibr: The Kalibr visual-inertial calibration toolbox

注意:上述进去的源码还不一定是我们需要的源码;我们注意到上述源码有以下几项内容:

针对自己的ubuntu版本选择不同文件,点进去,查看对应源码的地址,我这里是ubuntu16.04;打开后,出现了ubuntu16.04需要安装的依赖,以及编译步骤等等;

这个文件先保存,后续操作步骤全部按照这个文件运行,一切以官方步骤为准;直接跳转到29行,就出现了我们ubuntu16.04版本下的代码链接:

点进去,下载即可;


二. 安装kalibr中途的问题

下载文件之后,一步一步严格按照那个文件操作进行安装,官方步骤基本不会出现什么很难解决的问题,基本就是缺包的问题,我这里列出一个最有可能缺的包:SuitSparse;关于这个包的解决方案,大家最有可能搜到的解决方案如下链接:

Camera-IMU标定工具Kalibr的编译_Small potatoes的博客-CSDN博客

但是请大家看我们下载的kalibr包目录:

 我丝毫没有看到所说的suitesparse文件夹,所以,大部分博客搜到的问题还是遇到老的问题罢了,都2022了,问题早已更新了。出现找不到包这种错误,一定就是去下载这个包,

我下载的是下面这个包:

https://codeload.github.com/DrTimothyAldenDavis/SuiteSparse/zip/refs/heads/master

正常按照readme文件进行编译安装即可,不过最后一步sudo make install要用

sudo make install INSTALL=\usr\local

即必须指定安装路径,不然这个包没法安装到系统文件路径,然后就也还是找不到这个包;

NOTE:我这里突然发现了另外一个suitsparse包,比上面那个包占用内存小许多,但是还没有试验过,还不知道这个包能不能用,有研究的小伙伴可以告诉我一下行不行,以及怎么用:https://github.com/ethz-asl/suitesparse

然后其余的包缺少什么就去装什么就行,正常跟着官方文档走基本不会有大错。

 三. 安装kalibr之后的标定步骤

3.1 下载或者制作数据集

我们这里仅仅想通过数据集,标定,IMU和相机的,外参。

Euroc提供了相应数据集:Downloads · ethz-asl/kalibr Wiki · GitHub

以下的红色框框就是我们需要的几个文件,我们要是想自己标定自己的设备,就得制作这几个文件,但是目前我手头没设备,只能用数据集练练手。以下具体内容参考[4]

1. .bag文件,具体内部的数据格式自己下载后用rosbag info xx.bag或者echo或者play等等自己查看,里面包含两个相机的数据和一个IMU数据;咱就是说,就算里面有任意多个相机数据,任意多个IMU数据,咱都能依次把 任意一组IMU-Camera外参标定出来,因为后续的标定是通过话题名提取出数据的,提取对应的话题名即可。

2. imu的yaml文件,里面就是加速度陀螺仪的 高斯白噪声方差,bias方差,以及陀螺仪话题名,这些单独通过kalibr工具标定,后续补充一种我自己常用的。

3. 相机的yaml文件,主要是相机的内参,畸变系数,这里也可以试试kalibr标定。

4. april的yaml文件,其实就是这里联合标定用的标定板的一些信息。

这里先给出Euroc MAV的真值外参 Rbc(把相机坐标,变换到,body坐标)

 [0.0148655429818, -0.999880929698, 0.00414029679422,

0.999557249008, 0.0149672133247, 0.025715529948,

-0.0257744366974, 0.00375618835797, 0.999660727178]

真值Pbc:

[-0.0216401454975,-0.064676986768, 0.00981073058949]

 


3.2 运行代码

这里通过[3]知道了 camera和imu联合标定时的可执行文件以下文件

kalibr-noetic-devel/aslam_offline_calibration/kalibr/python/kalibr_calibrate_imu_camera

 然后运行以下代码:

注意,下面就是那四个文件的路径,这里是python文件的 关键字传参语法,--bag 和 --bag-from-to 等等就是参数,具体谁在前谁在后都没关系,5  45  代表只取 5~45s之间的数据,当然可要可不要。

rosrun kalibr kalibr_calibrate_imu_camera 
--bag /home/zjj/Data/EuRoC/IMU_CAM_Calib/imu_april.bag 
--bag-from-to 5 45 
--cams /home/zjj/Data/EuRoC/IMU_CAM_Calib/cam_april-camchain.yaml 
--imu /home/zjj/Data/EuRoC/IMU_CAM_Calib/imu_adis16448.yaml 
--target /home/zjj/Data/EuRoC/IMU_CAM_Calib/april_6x6_80x80cm.yaml

 之后如果你的ros是python3,那么什么问题都不会有;如果是python2,那么就得依次去解决兼容性问题,这里我估计也就改了7到8个地方吧,python2兼容python3还是挺好改的,自己去改吧,根据错的地方,ctrl+c必应一下一大堆python2兼容python3的操作。

 四. 标定结果分析(这里带分析,还看得不是特别懂)

Tcb:

T_ci: (imu0 to cam0):
[[ 0.01490708 0.9996032 -0.02390014 0.06448343]
[-0.99988602 0.01496002 0.00203792 -0.01970523]
[ 0.00239466 0.02386703 0.99971227 -0.0049854 ]
[ 0. 0. 0. 1.]]

把这里的求逆,基本和上面Rbc和Pbc的真值吻合,虽然有一点点区别,但是给vins当作初值就已经够用了。

还估计出了时间偏移 timeoffset:

timeshift cam0 to imu0: [s] (t_imu = t_cam + shift)
-0.000137717430147

再贴一张看起来高大上的图吧:虽然看不太懂,但是在(0,0)附近。有懂得多的小伙伴可以分享下为什么会有那么多红点,这些难道是特征点的重投影误差咩~~~?

 


目前数据集基本测试完成,下面开始买实物了orz~~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值