Home

Awesome

Overview

This package provides a ROS driver for PMD[vision]® CamBoard nano depth sensor.

The driver is packaged as a nodelet, therefore it may be directly merged inside another ROS node to avoid unnecessary data copying. At the same time, it may be started standalone or within a nodelet manager. The distance, depth (see "Distance vs. depth images" section), amplitude, and point cloud data are retrieved from the device and processed only if there are subscribers on the corresponding topics.

The pmd_camboard_nano.launch script (inspired by the openni_launch stack in ROS) starts the driver nodelet along with the image rectification nodelets.

Installation

PMD SDK installation

This package requires PMD SDK to be installed in the system. It will search for the PMDSDK root folder locally in the package folder <PACKAGE_FOLDER>/PMDSDK, globally in /usr/local/pmd, or systemwide defined by an environment variable PMDDIR. You can also change the search folder by modifying the PMDSDK_ROOT_DIR variable in CMakeLists.txt file.

You also need to copy the file 10-pmd.rules provided with the SDK to /etc/udev/rules.d to allow normal users to open the camera.

Package installation

Clone this repository into a local catkin workspace and simply call catkin_make in the workspace folder.

ROS API

pmd_camboard_nano::DriverNodelet

Published topics

Parameters

Dynamically reconfigurable parameters

Use the dynamic_reconfigure package to update these parameters in runtime:

Misc

Camera calibration

By default the PMD plugin loads the calibration data from a file (provided with the camera), which must be located within the working directory of the application and have a name composed of the device serial number and ".dat" extension. If you are using the pmd_camboard_nano.launch file, the working directory of the driver nodelet will be ~/.ros. You therefore have to have a copy of the calibration file there.

Alternatively, you can specify the location of the calibration data file as a parameter of the nodelet (~calibration_file).

If the PMD plugin failed to load the calibration data, then the camera info messages produced by the driver nodelet will be filled with the values that seem to be "default" (see this forum topic).

Distance vs. depth images

The distance data provided by the PMD SDK driver is actually the distances from the optical center of the camera to the scene points. Other cameras (e.g. Microsoft Kinect) output depth maps that are composed of distances from the cameras principal plane to the scene points along the optical axis. In other words, their depth image consists of z-coordinates of the scene points in the cameras coordinate frame.

This driver publishes both distance images (as output by the PMD SDK driver), and "Kinect-style" depth images, computed by multiplying the distances with the corresponding direction vectors.

Compatibility

This package was tested under Ubuntu Trusty x64 with ROS Indigo, Ubuntu Precise x64 with ROS Fuerte, and Ubuntu Oneiric x64 with ROS Electric. The version of PMD SDK is 1.3.2.

Known issues

This package was tested on multiple PCs and generally worked fine, however on one Lenovo laptop the following problems were observed: