ROS 摄像头矫正 camera_calibration

(注:正常情况下不了解实际工作原理可以直接执行绿色标记的指令即可完成矫正)

1.首先回顾摄像头Package 安装教程

安装ROS 摄像头驱动

/*我安装的是uvc_camera. 由于对ROS不熟悉,目前只知道cd到/opt/ros/hydro/share目录下,将uvc_camera 的package 下载下来

i.e: git clone https://github.com/ktossell/camera_umd.git 具体见另外一篇教程

采用$rosrun uvc_camera uvc_camera_node 即可打开摄像头,

采用$rostopic list & rosservice list ,分别查看发布的消息和服务*/ //这个方法在indigo下行不通。

在indigo下,用(step1)$sudo apt-get install ros-indigo-uvc-camera 可以安装此驱动(indigo/share下可以看到对应的uvc-camera 文件夹)

,还有个安装链接可以参考,不过我没有测试过https://defendtheplanet.net/2014/11/05/using-ros-indigo-webcam-by-the-uvc_camera-usb-video-class-package/ 。

运行此驱动采用:$rosrun uvc_camera uvc_camera_node 即可

用rostopic list和rosservice list 可以查看该驱动发布的topic和service,

默认情况下是 :/image_raw 和 /set_image_info 

注意这里的topic和service和后面矫正包订阅的并不一样,所以运行驱动的时候要重新映射

(step2)  $rosrun uvc_camera uvc_camera_node image_raw:=/camera/image_raw set_camera_info:=/camera/set_camera_info

2.camera_calibration 包的使用(http://wiki.ros.org/camera_calibration)

   教程http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration

  a) 得到依赖项,编译驱动 (不执行也可通过)

$ rosdep install camera_calibration
$ rosmake camera_calibration

  b)运行calibration 节点

step3:
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera

 ( 需要根据自己的板子的实际方格的大小设置 参数8*6 和 0.108)

矫正窗口打开(在这里借用人家的窗口)

ROS 摄像头矫正 camera_calibration_第1张图片

调整矫正板

矫正板在视野的上下左右位置

X 轴:视野左右

Y 轴:视野上下

Size 条:前后 和倾斜

矫正板充满整个视野

矫正板倾斜着处于上下左右的位置

每一步都要保证矫正板在视野内被点亮

ROS 摄像头矫正 camera_calibration_第2张图片

当你移动矫正板,你可以看到X轴等的变化,当CALIBRATE按钮亮起时,表示有足够数据用于矫正,点此按钮看下矫正效果

ROS 摄像头矫正 camera_calibration_第3张图片

矫正结果会在中端和上图中显示

评价标准:

连续成功的校准将导致实际校正图像边缘连续出现。

校准失败通常会导致空白或未被承认的图像,不保持直线边缘的图像。

矫正成功后,点comment生成.yml文件

3.关于重新映射service 和topic 的解释

http://wiki.ros.org/Remapping%20Arguments  什么是重新映射remap

http://answers.ros.org/question/195217/ros-hydro-cannot-commit-gscam-camera-calibration-set_camera_info-not-under-camera/        //问题提出:发布的消息和矫正包订阅的名称不匹配

http://question1973.rssing.com/chan-34075800/all_p2.html    //  矫正过程的其他问题汇总

http://question1973.rssing.com/browser.php?indx=34075800&item=33    //如何重新映射remap 问题解决方案


你可能感兴趣的:(ROS)