ROS下相机标定

  官方也给出了单目的标定教程双目视觉的标定教程。本教程基于usb_cam  package 读取图像,然后使用官方例程进行标定。

1.使用usb_cam 读取图像,launch文件如下:

  1. <launch>  
  2.     <arg name="device" default="/dev/video0" />  
  3.     <node name="usb_cam_node" pkg="usb_cam" type="usb_cam_node" output="screen">  
  4.         <param name="video_device" value="$(arg device)" />  
  5.         <param name="image_width" value="640" />  
  6.         <param name="image_height" value="480" />  
  7.         <param name="framerate" value="30" />  
  8.         <param name="brightness" value="128" />  
  9.         <param name="contrast" value="128" />  
  10.         <param name="saturation " value="70" />  
  11.     </node>  
  12. </launch>  

2.检查usb_cam package发布的消息:

  1. $ rostopic list  
看是否有如下消息,并记住名称
  • /usb_cam_node/camera_info
    /usb_cam_node/image_raw
3.启动标定程序:

  1. $ rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.03 image:=/usb_cam_node/image_raw camera:=/usb_cam_node  

其中参数size 11x8 注意是字母x,他是棋盘内部角点个数,如下图所示。square为棋盘正方形边长,注意刚刚开始标定的时候,CALIBRATE按钮是灰色的。

                         

4.标定程序使用方法:

       为了得到一个好的标定结果,应该使得标定板尽量出现在摄像头视野的各个位置里:

       如标定板出现在视野中的左边,右边,上边和下边,标定板既有倾斜的,也有水平的,。

       界面中的x:表示标定板在视野中的左右位置。

                     y:表示标定板在视野中的上下位置。

                size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近。

                skew:标定板在视野中的倾斜位置。

还要有棋盘占住大部分视野的图片,如下图所示:

       按着上述方式不断移动标定板,直到CALIBRATE按钮变亮,点击该按钮就会进行标定。标定过程将持续一两分钟,并且标定界面会变成灰色,无法进行操作,耐心等待即可。

       标定完成以后,你将看到如下图所示的窗口,窗口中的图像为标定后的结果,纠正了畸变

                           

        并且,摄像机的各个参数会出现在标定程序的终端窗口中,如下:

                        

如果对标定结果满意,点击COMMIT按钮将结果保存到默认文件夹,在usb_cam窗口中可以看到如下信息,说明标定结果已经保存在相应文件夹下下次启动usb_cam节点时,会自动调用。


 关于下次打开相机仍然显示未标定的问题!

 标定完成后会生成camera.yaml的标定文件,需要将该文件添加到相机文件的配置文件中,即相机目录config/default.yaml文件。

首先将标定文件camera.yaml也放在config目录下,然后打开default.yaml文件。修改camera_infi_url后边的内容,stereo_calibration为放置

camera.yaml文件的包,后边为camera.yaml文件的路径。保存编译后在次打开相机显示已校准。

 

# ID number of camera. Use Coriander to find it.
guid: xxxxxxxxxxxxxxxx
# Mode describes the size and number of channels for the images.
video_mode: 1600x1200_mono8
# The frame_id MUST be part of your URDF to display stereo data correctly in Rviz.
frame_id: left_camera
# The location of the ROS calibration file.
camera_info_url: package://pylon_camera/config/camera.yaml
# Frames per second.
frame_rate: 30
# Try to reset the camera when opening.
reset_on_open: true
# Change from default 400Mbps Firewire.
iso_speed: 800

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值