https://github.com/ethz-asl/kalibrpython
1.安装git
Kalibr 提供两种使用方式。第一种为CDE下直接使用,做者将所需的库文件打包好,省去了配置dependency的步骤,能够直接从github
https://github.com/ethz-asl/kalibr/wiki/downloads工具
下载, 注意须要科学浏览。ui
下载以后直接用spa
./cde-exec+命令 便可使用对应的工具。code
例如若是咱们想使用kalibr内的kalibr_calibrate_cameras功能,blog
使用terminal
./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
便可。get
可是此方法不能使用其中的某些功能,例如咱们想使用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部分转换成四元数。以后进行处理。
到此就将联合标定简单介绍完了。