[Documentation] [TitleIndex] [WordIndex

Note: This tutorial assumes that you have completed the previous tutorials: ROS tutorials.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

How to Configure and Use the WGE100 Stereo Camera on a PR2

Description: This tutorial is an introduction to using the WGE100 stereo camera connected to a PR2 robot. After reading it you should be able to bring up the WGE100 stereo camera and display the images.

Keywords: stereo, camera, driver

Tutorial Level: BEGINNER

Next Tutorial: How to calibrate a stereo camera How to process stereo images

Launch File

Typically there will be no need to launch the stereo camera configuration on the PR2 because it is launched at startup with the rest of the robot. Most users should skip directly to Viewing Stereo Images. In the case that the stereo camera configuration is not loaded, the following launch files will need to be launched.

If PR2 is not started

If the robot is not up and able to move (i.e. pr2_etherCAT is not running) you will need to launch the robot:

$ sudo robot start

This should bringup the stereo cameras and you can proceed to the Viewing Stereo Images step unless you need to start the stereo cameras independently or just want to learn more about what happens behind the scenes.

If PR2 is already started

If the robot is up and able to move (i.e. pr2_etherCAT is running) but the stereo cameras were not brought up, you will need to launch the dual stereo configuration:

$ roslaunch pr2_bringup config/dualstereo_camera.launch

This launch file loads the following:

Calibrating the Stereo

Before you can reconstruct depth from a pair of stereo images, the cameras need to be calibrated. The robots initially ship with calibrated stereo cameras, but this calibration can degrade or be lost over time. If you need to calibrate your stereo cameras, see the tutorial.

Viewing Stereo Images

stereo_view stereo:=<stereo namespace> image:=<image topic identifier>

For example, to view stereo image pairs on topics /my_stereo_cam/left/image_rect_color and /my_stereo_cam/right/image_rect_color, use:

$ stereo_view stereo:=/my_stereo_cam image:=image_rect_color

stereo_view also shows the disparity image computed from the stereo pair, color-mapped for clarity.

You may save the current image pair by left-clicking on either display window. By default, images will be saved as left0000.jpg, right0000.jpg, left0001.jpg, right0001.jpg....

On the robot, you can view the unrectified images from the monochrome, narrow field-of-view stereo pair with:

$ stereo_view stereo:=narrow_stereo image:=image_raw

Or you could view the unrectified color images from the color, wide field-of-view stereo pair with:

$ stereo_view stereo:=wide_stereo image:=image_color

Using the Texture Projector

To improve the effectiveness of stereo reconstruction, the PR2 is equipped with a projector that can project a texture onto featureless surfaces. The easiest way to use the projector is from a dynamic reconfigure GUI:

rosrun dynamic_reconfigure reconfigure_gui camera_synchronizer_node

You can then decide, for each camera, what its _trig_mode setting should be. For example, to start streaming textured images on narrow_stereo_textured, set narrow_stereo_trigger_mode to WithProjector. The PR2's texture projector should turn on, and you should be able to see unrectified textured images with:

$ stereo_view stereo:=narrow_stereo_textured image:=image_raw

Note: narrow_stereo_textured and narrow_stereo will only be streaming images when the camera is taking images with the correct projector state. For example, if the projector is off, there will be no images on narrow_stereo_textured.

To learn about other ways of using dynamic reconfiguration to change a node's settings, look at this tutorial

Further Reading

For an in depth view of the PR2's camera systems and how to configure them, you can refer to the pr2_camera_synchronizer documentation.


2019-11-09 13:24