标定mynt小觅相机(仅双目)

【命令行记录】

roscore

mynt相机发布topic


Build

cd <sdk>
make ros

 #Run

source wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper mynteye.launch

#With RViz to preview

source wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper display.launch

以上命令链接https://github.com/slightech/MYNT-EYE-S-SDK/tree/master/wrappers/ros


使用rosbag记录.bag文件(录制数据子集)

rosbag record -O newbag /mynteye/left/image_raw /mynteye/right/image_raw /mynteye/left_rect/image_rect /mynteye/right_rect/image_rect

kalibr 标定 mynt双目相机

在kalibr_workspace目录下

kalibr_calibrate_cameras --target test/checkerboard_11x7_22x22cm.yaml --bag test/newbag.bag --models pinhole-equi pinhole-equi --topics /mynteye/left_rect/image_rect /mynteye/right_rect/image_rect

如果kalibr_calibrate_cameras command not found,则需要设置环境

source ~/kalibr_workspace/devel/setup.bash

设置环境参考链接为https://blog.csdn.net/snnily/article/details/73107471?utm_source=blogxgwz7

出现[ERROR] [1542119711.427210]: [TargetViewTable]: Tried to add second view to a given cameraId & timestamp. Maybe try to reduce the approximate syncing tolerance.的问题,估计该问题是record得到的bag文件中camera的时间戳不一致导致,解决方法参照该博客:双目内外参数标定

即:

ROS 提供了改变 topic 发布频率的节点throttle, (通常设备采集的频率为 20-60 hz, 这会使得标定的图像过多, 而导致计算量太大. 最好将ros topic的频率降低到4hz左右进行采集.)指令如下 :

rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0 /left

rosrun topic_tools throttle messages /mynteye/right/image_raw 4.0 /right

对左右目的ros topic降低频率后就可以制作bag了

rosbag record -O stereo_calibra.bag /left /right

标定

采集好数据集以后, 就可以用已经安装好的 Kalibr 标定双目相机了, 指令如下:

source ros_ws/kalibr/devel/setup.bash
kalibr_calibrate_cameras --bag /home/heyijia/stereo_calibra.bag --topics /left /right --models pinhole-radtan pinhole-radtan --target /home/heyijia/april_6x6_80x80cm_A0.yaml

标定成功最终会得到几个输出文件。

report-imucam-%BAGNAME%.pdf: Report in PDF format. Contains all plots for documentation.
results-imucam-%BAGNAME%.txt: Result summary as a text file.
camchain-imucam-%BAGNAME%.yaml: 这个文件是在输入文件camchain.yaml基础上增加了标定后的cam-imu信息的结果文件。我们想要的T_cam_imu矩阵就在这里。

标定结果的评定标准

因为可能存在的人为的安装问题,真实的IMU到相机的的转移矩阵可能不确定.由于没有准确的判定准则,故当前标定的结果,主要基于以下两个方面: 
* 真实的IMU坐标系和相机坐标系的转换,即相机和IMU的物理距离 
* 标定结果的稳定性上

标定的验证没有成功

验证方法:可以使用calibration validator进行标定的验证,原理是对重投影误差进行量化分析。使用上一步骤的camera标定结果以及标定板的yaml文件,具体命令如下:(参考链接)

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

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


else:

IMU和Cam标定数据采集的过程中,通常建议是camera采用20hz,imu采用200hz的频率。避免震动,避免照片模糊等,尤其是在标定开始和标定结束时。 
图像和IMU的数据都采集好以后,就可以通过以下命令来生成ROS的bag包格式。
kalibr_bagcreater --folder dataset-dir --output-bag awsome.bag

可以通过rosbag info awsome.bag来检查生成的bag包是不是合格的。

除了bag包,命令还需要的三个参数分别是–target,–cam和–imu,分别是指的采集数据过程中用到的标定板的标准,camera的内参,imu的噪声数据。这里用到的标定板,都是需要安装1比1的比例打印出来,比如从kalibr上下载的pdf是个0.8m*0.8m的标定板。当然你也可以自己制作一个标定板,比如制作一个A4大小的标定板,然后在打印的时候选择不要做缩放,通过kalibr_create_target_pdf –h查看制作的方法。camera的内参标定是比较成熟的技术,这里不做介绍。而IMU的噪声参数一般可以通过IMU器件的datasheet来获得。

假如都没有问题的话,通过运行kalibr_calibrate_imu_camera,我们就能得到pdf,txt,和yaml3个结果文件。 
我们主要关注results-imucam-%BAGNAME%.txt文件,根据这个结果来简单看看我们的标定是否有效。 
其中reprojection误差最好不要超过5个像素,T_ic/T_ci矩阵中的位移应该根据设备IMU和Camera的实际位置来,一般应该是厘米或者毫米这样的尺度的数值。


猜你喜欢

转载自blog.csdn.net/ZHAGNQ/article/details/84036776