Robot Components : Robot, Arms, Grippers, Cameras, Head, I/O, Screen |
Contents
Using the Cameras
Hardware Overview
The Baxter Research Robot has three color cameras; one camera is located in each arm, and a third camera is located on the head, above the display screen. Any two cameras can be operated at a given time; USB system limitations do not allow all three cameras to be operated at once.
Important Note for RSDK 1.1 Update: As of RSDK 1.1 opening and closing of cameras has changed. Previously all cameras could be powered at the same time, but only two could be opened and operated. Due to 64-bit limitations with the Indigo Baxter's internal USB hub, only two cameras can be powered on at once. This change is taken care of behind the scenes. To accommodate this extra restriction, in RSDK 1.1, closing a camera will also turn power OFF to that camera, and turn power ON to both of Baxter's other cameras. You can turn power OFF to any camera by closing that camera (regardless of whether that camera was actually open or closed previously). Closing another camera is a good way to ensure power is ON on a camera that you are interested in viewing before actually opening it.
The cameras in the Baxter research Robot can capture images at the resolutions listed below. Modes labeled “RES_HIGH” are sampled at the camera’s maximum resolution of 1280x800; “RES_LOW” modes decimate imager pixels by 2 in X and Y, for an effective imager resolution of 640x400 with the same field of view. Modes labeled as "windowed" capture a sub-window within the camera's field of view, with programmable X and Y offsets for the sub-window position.
Windowed modes 1 to 5 capture a sub-window at the imager's RES_HIGH resolution; for example, mode 5 provides a 320x200 image that can be located anywhere within the camera's field of view. In contrast, windowed modes 7 to 11 capture a sub-window within the imager's decimated RES_LOW resolution. Thus, mode 9 also provides a 320x200 image that can be located anywhere within the camera's field of view, but in this case, because of pixel decimation the 320x200 image covers a larger portion of the camera field of view, with a lower spatial resolution, than the image in mode 5.
Mode Index | Resolution key | Imager Width | Window width | Window height | Windowed? | Max. Refresh Rate |
0 | RES_HIGH | 1280 | 1280 | 800 | N | 14.1 fps |
1 | RES_HIGH | 1280 | 960 | 600 | Y | 23.8 fps |
2 | RES_HIGH | 1280 | 640 | 400 | Y | 27.8 fps |
3 | RES_HIGH | 1280 | 480 | 300 | Y | 27.9 fps |
4 | RES_HIGH | 1280 | 384 | 240 | Y | 27.8 fps |
5 | RES_HIGH | 1280 | 320 | 200 | Y | 27.9 fps |
6 | RES_LOW | 640 | 640 | 400 | N | 47.6 fps |
7 | RES_LOW | 640 | 480 | 300 | Y | 55.5 fps |
8 | RES_LOW | 640 | 384 | 240 | Y | 55.5 fps |
9 | RES_LOW | 640 | 320 | 200 | Y | 55.5 fps |
10 | RES_LOW | 640 | 240 | 150 | Y | 55.5 fps |
11 | RES_LOW | 640 | 192 | 120 | Y | 55.5 fps |
General Info / Guide
The three available cameras 'left_hand_camera', 'right_hand_camera', and 'head_camera' are exposed with the ability to adjust parameters describing its operation.
These include the ability to modify:
- Frame Width and Height to supported operating modes.
- Frame Rate (fps)
- Windowing
- Binning
- Exposure
- Gain
- White Balance
Important Note: Due to limited bandwidth capabilities only two cameras can be operating simultaneously. Starting a camera while both of the other cameras are in operation will result in an error, and the camera will not open.
Important Note: Default behavior on Baxter startup is for both of the hand cameras to be in operation at a resolution of 320x200 at a framerate of 25 fps.
Supported Frame Size Modes: Frame sizes at which the cameras will operate.
- 1280x800
- 960x600
- 640x400
- 480x300
- 384x240
- 320x200
When opening a camera at an unsupported frame width and height: Using the camera_control.py example - Exit with the ValueError: Invalid Camera mode. Using the baxter_inteface camera.py API - The camera driver will open with the mode closest to the specified frame width and height. Directly using the service calls - The camera driver will open with mode closest to the specified frame width and height.
Resources
ROS API
See the API Reference Page for information on the ROS Interface to the Cameras.
Python API (baxter_interface
)
CameraController class: camera.py
Examples
Input and Output
- Camera Control Example
- Demonstrates usage for listing, opening, and closing the available cameras.
- View Cameras Example
- Use this simple ROS program from the command line to view the image stream from a camera. The example shows you how to use the 'image_view' tool with the Baxter camera topics.
Tools
- rviz (ROS)
- The ROS visualizer, rviz, is a great tool for viewing multiple cameras and data streams at once. You can also use the Camera Display Type to render the view of the (virtual) world from the perspective of one of Baxter's cameras.
- image_view (ROS)
- A light-weight image viewer for ROS Images. Use this tool when you just want a quick, simple method to check the camera view or to save snapshots.
Advanced Usage
- Demo Mode - Code Walkthrough - The BRR Demo Mode includes an example that draws images from the cameras and publishes it to the screen.