小觅相机问题解决后开始进行标定的事项:
0:一定确保环境安装正常,这里出了问题就等于白给,测试环境可以参考https://blog.youkuaiyun.com/u011392872/article/details/106204419/
1:开始准备小觅相机的标定,
运行
roslaunch mynt_eye_ros_wrapper mynteye.launch
//这条语句对小觅相机是通用的,如果roslaunch失败,请检查环境变量,或者进入到小觅相机的SDK里,激活下devel/setup.bash 比如小觅标准版S:
cd MYNT-EYE-S-SDK
source ./wrappers/ros/devel/setup.bash
激活后再运行
roslaunch mynt_eye_ros_wrapper mynteye.launch
然后新建一个窗口,运行
roslaunch mynt_eye_ros_wrapper display.launch
因为是双目相机,所以有左右两个相机端口,如果需要修改相机话题发布频率,(ps:环境是基于ROS的,所以通信是使用话题的)。
可以采用以下的例子方法,
新建一个窗口输入这段代码,作用为,将摄像机流的频率降低到4 Hz左右,
rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0
rosrun topic_tools throttle messages /mynteye/right/image_raw 4.0
做好数据预处理后,就可以开始采集数据了,
这里分条块做出处理,
1.做双目相机和imu的联合标定(基于小觅相机S)
记录数据包:
rosbag record -o 3.bag /mynteye/left/image_color /mynteye/right/image_color
这里使用的是kalibr标定工具,下载安装和配置环境时一定要注意不要出错,特别是opencv的地方,版本不对,或是安装命令的执行顺序等,都会爆出一堆奇奇怪怪的错误,甚至有可能你在github的issue里都翻完几百页都找不到的奇葩错误,如果出错,
请及时回填,检查手法,1重新装填依赖包,避免依赖缺失,2卸载已经装好的kalibr,3重装opencv,4重装opencv,或在cmakelist里指定opencv的路径,
标定准备:(ps:里面的\是换行符,输入后敲回车等待下一行出现>后继续输入指令就好,效果检验可以输完执行后,按方向键↑进行回滚查看,会默认置为一行的内容)。
kalibr_calibrate_cameras \ ---------------------这里是工具名字
--bag [filename.bag] \ ---------------------这里是之前rosbag record 记录下来的包的名字
--topics [TOPIC_0 ... TOPIC_N] \ ---------------------这里是当时指定的话题名字,(对应这里的: 记录数据包:rosbag record -o 3.bag /mynteye/left/image_color /mynteye/right/image_color /mynteye/left/image_color和/mynteye/right/image_color)
--models [MODEL_0 ... MODEL_N] \ ---------------------这里是用于指定相机模型的,常见的相机模型有pinhole 和equel等等,使用小觅相机时采用pinhole和equels都可以。
--target [target.yaml] ---------------------这里是从官网下载的yaml文件,
yaml文件在这里贴一份,备注修改。
比如这里使用的语句:
kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag ImuCam_2021-02-08-09-08-41.bag --bag-from-to 5 45
先贴出yaml内容:(ps:该内容即是本文参考的博文里链接包内的文件)
下载链接https://download.youkuaiyun.com/download/qq_41949066/15117187
内容:
april_6x6.yaml //这是文件名别粘进去
#example for aprilgrid
target_type: 'aprilgrid' #gridtype
tagCols: 6 #number of apriltags
tagRows: 6 #number of apriltags
tagSize: 0.015 #size of apriltag, edge to edge [m]
tagSpacing: 0.3 #ratio of space between tags to tagSize
#example: tagSize=2m, spacing=0.5m --> tagSpacing=0.25[-]
#example for checkerboard
# targetType: 'checkerboard' #gridtype
# targetCols: 6 #number of internal chessboard corners
# targetRows: 7 #number of internal chessboard corners
# rowsMetricSize: 0.06 #size of one chessboard square [m]
# colsMetricSize: 0.06 #size of one chessboard square [m]
camchain.yaml//这是文件名别粘进去
cam0:
cam_overlaps: [1, 3]
camera_model: pinhole
distortion_coeffs: [-0.0016509958435871643, 0.02437222940989351, -0.03582816956989852,
0.019860839087717054]
distortion_model: equidistant
intrinsics: [461.487246372674, 460.1113992557959, 356.39105303227853, 231.15719697054647]
resolution: [752, 480]
rostopic: /cam0/image_raw
cam1:
T_cn_cnm1:
- [0.9999987703316401, 0.0011891090293591699, -0.0010224259962834177, -0.11016759824092018]
- [-0.0011883808160330711, 0.9999990400088897, 0.0007125533866886033, -0.0003216647632433766]
- [0.0010232723184295653, -0.0007113374790444545, 0.9999992234560721, 0.00012078907255410462]
- [0.0, 0.0, 0.0, 1.0]
cam_overlaps: [0, 3]
camera_model: pinhole
distortion_coeffs: [-0.0009362378060020789, 0.018833308358932984, -0.030558453797100132,
0.01955083559432553]
distortion_model: equidistant
intrinsics: [462.4318044040118, 461.1780497604126, 377.0119530476368, 226.49966248854923]
resolution: [752, 480]
rostopic: /cam1/image_raw
imu_adis16448.yaml//这是文件名别粘进去
rostopic: /imu0
update_rate: 200.0 #Hz
accelerometer_noise_density: 0.01 #continous
accelerometer_random_walk: 0.0002
gyroscope_noise_density: 0.005 #continous
gyroscope_random_walk: 4.0e-06
粘贴完毕,测试包链接已发。
完成后修改参数即可,需要修改的地方为april_6x6.yaml
这里根据使用的标定板进行修改,贴出翻译
april_6x6.yaml //这是文件名别粘进去
#example for aprilgrid
target_type: 标定板类型
tagCols: 6 列数
tagRows: 6 行数
tagSize: 0.015 tagSize指的是每一个格子的尺寸
tagSpacing: 0.3 标记之间的间距与标记大小的比率
测量后改写进去。
改写成功后,开始进行标定,
使用前请先激活kalibr工具:进入kalibr工作空间后
source kalibr_workspace/devel/setup.bash
然后比如使用语句进行相机和imu的联合标定:
kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag ImuCam_2021-02-08-09-08-41.bag --bag-from-to 5 45
执行完成后会生成一些文件,这些文件即是矫正相机模型时所需用到的数据,如果觉得不合适的,可以多次采集数据后进行校验处理,缩减误差。