双目相机与IMU camera IMU 联合标定工具箱使用方法——Kalibr

https://github.com/ethz-asl/kalibr

1.安装

Kalibr 提供两种使用方式。第一种为CDE下直接使用,作者将所需的库文件打包好,省去了配置dependency的步骤,可以直接从

https://github.com/ethz-asl/kalibr/wiki/downloads

下载, 注意需要科学浏览。

下载之后直接用

./cde-exec+命令 即可使用对应的工具。

例如如果我们想使用kalibr内的kalibr_calibrate_cameras功能,

使用

./ced-exec kalibr_calibrate_cameras --target april_6x6.yaml --bag static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw

即可。

但是此方法不能使用其中的某些功能,例如我们想使用calibration validator,在CDE环境下是无法使用的。

所以作者建议我们build from source。

根据https://github.com/ethz-asl/kalibr/wiki/installation的part B中的描述进行安装。

在安装过程中,可能会遇到wget相关的错误,比如说在安装到suitesparse库的时候,对应的cmakelists中会通过wget 下载压缩包,若无法下载则整个kalibr都无法成功安装,那么我们需要进行一番修改。

当然你也可以自己编写cmakelists,不过个人觉得有点麻烦。

首先打开对应的cmakelists。

找到DOWNLOAD_COMMAND那一行,添加host agent 信息,将语句替换类似如下

DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${VERSION}.tar.gz" --user-agent="Mozilla/5.0 (Ubuntu;U; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0"

即可,若terminal提示无法解析你的host agent部分,可以将此行注释掉,因为文件已经下载,加入一行

DOWNLOAD_COMMAND wget "https://www.baidu.com"

即可进行下面的步骤。

到了这里应该没有问题了,等待半个小时左右即可build完毕。

 

ps: 在非CDE环境下使用需要注意python版本为2.7时可以正常使用。使用anaconda或者其他python版本的需要将python版本切换。

 

2.开始标定

Kalibr不仅提供了IMU以及camera的联合标定工具箱,也提供了camera标定工具箱。

在此我们先使用camera标定工具对相机进行标定。

首先我们需要制作标定板,在此推荐使用april tag,可以使用kalibr自带工具自定义生成不同大小的标定板,命令如下

kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]

将生成的pdf打印出来,置于平稳,光照充足的地方,注意要保持平整。

Kalibr作者推荐将camera固定,然后移动标定板,这样可以提高标定的稳定性,但是鉴于我使用场景受限,我使用的是晃动camera方法。

之后就可以开始录制bag了,使用

rosbag record /cam0/image_raw /cam1/image_raw /imu0

标定时注意激活所有的轴,即可录制包含三个topic的rosbag了。

注意录制过程中camera不要距离标定板太近,否则会出现无法初始化focal length的错误。

Kalibr是一个十分强大的工具箱,提供了很多工具。我们可以使用calibration validator进行标定的验证,原理是对重投影误差进行量化分析。大家可以自行验证。工具使用上一步骤的camera标定结果以及标定板的yaml文件,具体命令如下:

kalibr_camera_validator --cam camchain.yaml --target target.yaml

若对相机标定结果满意我们可以继续进行camera以及imu的联合标定步骤,此步使用了如下信息:

1. 标定板yaml

2. 相机标定结果yaml

3. imu内参yaml

4. 前面使用的对应bag

有了如上材料即可进行联合标定,具体如下

kalibr_calibrate_imu_camera --target aprilgrid6x4.yaml --cam camchain-2017-06-14-09-13-29.yaml --imu imu.yaml --bag 2017-06-14-09-13-29.bag --bag-from-to 5 45

最后的--bag_from_to是选取地5-45s的bag数据,去除了拾取防止设备产生的抖动部分影响。我们建议进行多组标定之后将标定结果进行最佳无偏估计,不建议对R部分直接取平均值,可以将多组数据的R部分转换成四元数。之后进行处理。

到此就将联合标定简单介绍完了。

 

转载于:https://www.cnblogs.com/SongHaoran/p/6912042.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
双目相机IMU联合标定是一种常见的技术,用于将双目相机和惯性测量单元(IMU)的数据进行融合,以提高视觉定位和导航的精度和鲁棒性。标定的目的是确定相机IMU之间的相对姿态关系和传感器参数。 标定过程通常包括以下步骤: 1. 数据采集:使用已知的参考物体或地标,采集双目相机IMU的数据。这些数据应涵盖不同姿态和运动条件下的场景。 2. 相机标定使用标定板或标定物体,对双目相机进行内外参数标定。通过拍摄标定图像,可以计算出相机的内部参数(如焦距、畸变参数等)和外部参数(相机的位姿)。 3. IMU标定:将IMU放置在已知的姿态下(例如平放、倾斜等),记录其输出的加速度和角速度数据。通过分析这些数据,可以得到IMU的零偏、尺度因子等参数。 4. 联合标定:将双目相机IMU的数据进行时间对齐,并使用标定板或地标来匹配相机图像和IMU数据。通过解算相机IMU之间的转换矩阵和平移向量,可以获得它们之间的相对姿态关系。 5. 验证与优化:使用额外的测试数据集来验证标定结果的精度和鲁棒性。如果有必要,可以进行进一步的优化和调整。 需要注意的是,双目相机IMU联合标定是一个复杂的过程,需要一定的专业知识和技术背景。在实际应用中,也可能需要考虑误差模型、噪声补偿和滤波等问题,以提高标定结果的可靠性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值