How the Intel RealSense R200 camera works

The Intel RealSense R200 is a USB powered long range stereoscopic camera that can be used for robotics and HCI computer vision applications.

About the camera

The camera consists of two infrared and one full HD colour imaging sensors, as well as an infrared laser projection system. As a result, the camera provides three video streams:  colour, depth, and infrared. The colour stream is provided by the full HD colour imaging sensor.

The diagram below, taken from the official datasheet, shows what imaging and laser components make up the RealSense R200 camera.

RealsenseInside

Diagram showing locations of the sensor components for the RealSense camera (taken from the official datasheet).

Specifically, the depth stream is generated internally by a stereo vision algorithm that uses the two infrared imaging sensors and the infrared laser projector data. Every pixel in this stream represents the distance from the camera.

The camera also supports aligned and unaligned modes. In the aligned modes, the streams are synchronised with each other so that colour, depth and infrared images are (in a sense) cross-calibrated. The unaligned mode simply outputs each stream independently.

RealSense SDK for Windows

The RealSense R200 comes with a Software Development Kit (SDK) which is unfortunately only available for Windows. The SDK includes algorithms for 3D face and object scanning, 3D head and body scanning, blob tracking, enhanced photography, face detection, landmarking, and recognition, object recognition, person tracking, and scene perception.

RealSense cross platform API

This is a Github project that provides a library for capturing data from the camera. Unlike the Windows SDK, this API doesn’t provide access to any of the computer vision algorithms that come with the RealSense camera but it does contain tutorials.

This API has a GTK+ dependency which can be installed using this command: sudo apt-get install build-essential libgtk-3-dev

RealSense ROS Packages

For robotics applications, it’s nice to be able to use the camera within the ROS framework. The camera runs as a ROS nodelet as outlined previously in Running Intel RealSense R200 ROS nodelet and RViz. The RealSense ROS Wiki page provides documentation for using the RealSense camera with ROS, including instructions on how to use the camera with a TurtleBot. There are two main ROS packages for the camera:

  • librealsense – this is the driver for the camera. Install this first.
  • realsense_camera – this is the camera node for publishing data using librealsense. This package will publish various topics you can subscribe to to access the different camera streams.

By default, the librealsense driver uses a preset mode for the camera. To control the camera stream width, height and FPS a launch file for manual mode should be created as per this example tutorial.

RealSense ROS topics, services and parameters

There are nine topics which publish calibration information, the image streams,  and the pointcloud where applicable.

There are four services for turning the camera on and off and checking the power status and settings of the camera.

The RealSense R200 has several static and dynamic parameters which can be set before or during runtime.

RealSense ROS tf Transforms

Static transform pairs between the base frame (camera_link) and camera_rgb_frame,  camera_depth_frame, camera_ir_frame, camera_ir2_frame (and other frames) are provided as ROS tf transforms. ROS tf transforms are stored in a tree structure which makes it easy to perform projections such a transform from the camera_rgb_frame to the camera_depth_frame to get a “coloured pointcloud.”

 

One thought on “How the Intel RealSense R200 camera works

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s