1. 安装相应的驱动与程序包。
图像相应包 http://wiki.ros.org/camera_calibration 在gitbub下载image_pipeline : https://github.com/ros-perception/image_pipeline
安装相应的驱动
1)uvc_camera /camera_umd sudo apt-get install ros-indigo-xxxxx ( camera_umd jpeg_streamer uvc_camera )
2)usb_cam http://wiki.ros.org/usb_cam /usb_cam
2. 相机校正的步骤
1) 启动相机 uvc_camera 或者 usb_cam
roslaunch usb_cam camera.launch (个人的 camera.launch) rviz 具体文件见后。(也可以自己先打开rviz 添加topic后保存,以后直接调用保存的.rviz即可)
camera.launch
<launch> <node pkg="rviz" type="rviz" name="rviz" args="-d $(find usb_cam)/launch/camera.rviz"/> <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" respawn="false" output="log"> <param name="video_device" type="string" value="/dev/video0"/> <param name="camera_frame_id" type="string" value="usb_cam"/> <param name="framerate" type="int" value="30"/> <param name="io_method" type="string" value="mmap"/> <param name="image_width" type="int" value="640"/> <param name="image_height" type="int" value="480"/> <param name="pixel_format" type="string" value="yuyv"/> </node> </launch>
2) 启动校正程序
参见教程 http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
yhzhao@yhzhao:~$ rostopic list /usb_cam/camera_info /usb_cam/image_raw ################################ /usb_cam/image_raw/compressed /usb_cam/image_raw/compressed/parameter_descriptions /usb_cam/image_raw/compressed/parameter_updates /usb_cam/image_raw/compressedDepth
出错:如下
('Waiting for service', '/camera/set_camera_info', '...')
Service not found
运行如下语句: 角点数 棋盘格大小 topic映射
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/usb_cam/image_raw camera:=/camera --no-service-check
注意:校正采集的角点图像要多,数量达到一定效果时,calibration 按钮会变亮,点击即可进行校正运算,结果在终端有显示,也可以选择保存。
校正输出结果:
('D = ', [-0.1976212648687889, 0.1688022413942262, 0.0124442419926021, 0.005870906198680583, 0.0]) ('K = ', [485.5897704187133, 0.0, 297.2537641560215, 0.0, 491.6813624489518, 296.2003190013238, 0.0, 0.0, 1.0]) ('R = ', [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]) ('P = ', [462.4408874511719, 0.0, 301.47298442859574, 0.0, 0.0, 469.7864074707031, 301.54598383033044, 0.0, 0.0, 0.0, 1.0, 0.0]) None # oST version 5.0 parameters [image] width 640 height 480 [narrow_stereo] camera matrix 485.589770 0.000000 297.253764 0.000000 491.681362 296.200319 0.000000 0.000000 1.000000 distortion -0.197621 0.168802 0.012444 0.005871 0.000000 rectification 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 projection 462.440887 0.000000 301.472984 0.000000 0.000000 469.786407 301.545984 0.000000 0.000000 0.000000 1.000000 0.000000
3. 启动 ros 相机对应节点发布图像topic
carmera_haved_calibrated.launch
<launch> <node pkg="rviz" type="rviz" name="rviz" args="-d $(find usb_cam)/launch/camera.rviz"/> <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" respawn="false" output="log"> <param name="video_device" type="string" value="/dev/video0"/> <param name="camera_frame_id" type="string" value="usb_cam"/> <param name="io_method" type="string" value="mmap"/> <param name="image_width" type="int" value="640"/> <param name="image_height" type="int" value="480"/> <param name="pixel_format" type="string" value="yuyv"/> <rosparam param="D">[-0.1976212648687889, 0.1688022413942262, 0.0124442419926021, 0.005870906198680583, 0.0]</rosparam> <rosparam param="K">[485.5897704187133, 0.0, 297.2537641560215, 0.0, 491.6813624489518, 296.2003190013238, 0.0, 0.0, 1.0]</rosparam> <rosparam param="R">[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]</rosparam> <rosparam param="P">[462.4408874511719, 0.0, 301.47298442859574, 0.0, 0.0, 469.7864074707031, 301.54598383033044, 0.0, 0.0, 0.0, 1.0, 0.0]</rosparam> </node> </launch>
<pre name="code" class="html">$(find usb_cam)/launch/camera.rviz文件
Panels: - Class: rviz/Displays Help Height: 78 Name: Displays Property Tree Widget: Expanded: ~ Splitter Ratio: 0.5 Tree Height: 144 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties Expanded: - /2D Pose Estimate1 - /2D Nav Goal1 - /Publish Point1 Name: Tool Properties Splitter Ratio: 0.588679 - Class: rviz/Views Expanded: - /Current View1 Name: Views Splitter Ratio: 0.5 - Class: rviz/Time Experimental: false Name: Time SyncMode: 0 SyncSource: Image Visualization Manager: Class: "" Displays: - Alpha: 0.5 Cell Size: 1 Class: rviz/Grid Color: 160; 160; 164 Enabled: true Line Style: Line Width: 0.03 Value: Lines Name: Grid Normal Cell Count: 0 Offset: X: 0 Y: 0 Z: 0 Plane: XY Plane Cell Count: 10 Reference Frame: <Fixed Frame> Value: true - Class: rviz/Image Enabled: true Image Topic: /usb_cam/image_raw Max Value: 1 Median window: 5 Min Value: 0 Name: Image Normalize Range: true Queue Size: 2 Transport Hint: raw Value: true - Class: rviz/Image Enabled: true Image Topic: /slam/raw_flip_image Max Value: 1 Median window: 5 Min Value: 0 Name: Image Normalize Range: true Queue Size: 2 Transport Hint: raw Value: true - Class: rviz/Image Enabled: true Image Topic: /detect_qr/qr_img Max Value: 1 Median window: 5 Min Value: 0 Name: Image Normalize Range: true Queue Size: 2 Transport Hint: raw Value: true - Class: rviz/Image Enabled: true Image Topic: /slam/qrslam/slam_map Max Value: 1 Median window: 5 Min Value: 0 Name: Image Normalize Range: true Queue Size: 2 Transport Hint: raw Value: true Enabled: true Global Options: Background Color: 48; 48; 48 Fixed Frame: odom Frame Rate: 30 Name: root Tools: - Class: rviz/Interact Hide Inactive Objects: true - Class: rviz/MoveCamera - Class: rviz/Select - Class: rviz/FocusCamera - Class: rviz/Measure - Class: rviz/SetInitialPose Topic: /initialpose - Class: rviz/SetGoal Topic: /move_base_simple/goal - Class: rviz/PublishPoint Single click: true Topic: /clicked_point Value: true Views: Current: Class: rviz/Orbit Distance: 15.7352 Enable Stereo Rendering: Stereo Eye Separation: 0.06 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false Focal Point: X: 0 Y: 0 Z: 0 Name: Current View Near Clip Distance: 0.01 Pitch: 0.825398 Target Frame: <Fixed Frame> Value: Orbit (rviz) Yaw: 1.5604 Saved: ~ Window Geometry: Displays: collapsed: false Height: 718 Hide Left Dock: false Hide Right Dock: false Image: collapsed: false QMainWindow State: 000000ff00000000fd00000004000000000000039d00000247fc0200000009fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afc000000280000011f000000dd00fffffffa000000010100000002fb0000000a0049006d00610067006502000007ce000001680000073200000279fb000000100044006900730070006c00610079007301000000000000039d0000010f00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d006100670065010000014d000001220000001600ffffff000000010000037600000247fc0200000005fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000028000000b0000000b000fffffffb0000000a0049006d00610067006501000000de000000c60000001600fffffffb0000000a0049006d00610067006501000001aa000000c50000001600fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b2000000000000000000000002000004b0000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073f0000003bfc0100000002fb0000000800540069006d006501000000000000073f000002f600fffffffb0000000800540069006d00650100000000000004500000000000000000000000200000024700000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: collapsed: false Tool Properties: collapsed: false Views: collapsed: false Width: 1855 X: 90 Y: 153