krishnadubba / pico_flexx_driver

ROS driver for the pmd CamBoard pico flexx

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PMD CamBoard pico flexx Driver

pixo_flexx_ros

Maintainer

Table of contents

Description

This package is a ROS interface to the CamBoard pico flexx from pmd.

Features:

  • publishing point clouds, camera info, depth, ir and noise images on ROS topics
  • support for dynamic reconfigure
  • support for nodelets with zero copy transfers
  • a launch file with nodelet manager and machine tag support
  • optional static TF publisher

Dependencies

  • ROS Indigo (or newer should also work)
  • Royale SDK (1.10.0.78 or newer)

Install

  1. Install the ROS. Instructions for Ubuntu 14.04

  2. Setup your ROS environment

  3. Download the royale SDK from http://www.pmdtec.com/picoflexx/ and extract it

  4. Extract the linux 64 bit archive from the extracted SDK to <catkin_ws>/src/pico_flexx_driver/royale.

    cd <catkin_ws>/src/pico_flexx_driver/royale
    tar -xf <path_to_extracted_royale_sdk>/libroyale-<version_number>-LINUX-64Bit.tar.gz
    
5. Install the udev rules provided by the SDK

cd <catkin_ws>/src/pico_flexx_driver/royale sudo cp libroyale-<version_number>-LINUX-64Bit/driver/udev/10-royale-ubuntu.rules /etc/udev/rules.d/

6. Run `catkin_make`
7. Plug in the CamBoard pico flexx device
8. Run `roslaunch pico_flexx_driver pico_flexx_driver.launch publish_tf:=true`
9. Start `rosrun rviz rviz`, set the `Fixed frame` to `pico_flexx_link` and add a `PointCloud2` and select `/pico_flexx/points`

*Note: The pico_flexx_driver automatically tries to use the most recent version that is extracted in `<catkin_ws>/src/pico_flexx_driver/royale`.
To use a newer release just extract it to that directory in addition to the previous one and recompile it with `catkin_make clean` and `catkin_make`.
If something does not work with a newer version, just delete the extracted directory and recompile it with `catkin_make clean` and `catkin_make`.*

## Usage

To start the pico flexx driver, please use the provided launch file:

`roslaunch pico_flexx_driver pico_flexx_driver.launch`

#### Parameters

The launch file has the following parameters:

- `base_name` (default="pico_flexx"):

  Name of the node. All topics will be advertised under this name.

- `sensor` (default=""):

  ID of the sensor that should be used. IDs of all connected devices are listed on startup.

- `use_case` (default="0"):

  ID of the use case. A list of supported use cases is listed on startup.

- `automatic_exposure` (default="true"):

  Enable or disable automatic exposure.

- `exposure_time` (default="1000"):

  Exposure time. Only for manual exposure.

- `max_noise` (default="0.07"):

  Maximum allowed noise. Data with higher noise will be filtered out.

- `range_factor` (default="2.0"):

  Range of the 16-Bit mono image which should be mapped to the 0-255 range of the 8-Bit mono image. The resulting range is `range_factor` times the standard deviation around mean.

- `queue_size` (default="5"):

  Queue size for publisher.

- `publish_tf` (default="false"):

  Publish a static TF transform for the optical frame of the camera.

- `base_name_tf` (default="pico_flexx"):

  Base name of the tf frames.

- `machine` (default="localhost"):

  Machine on with the nodes should run.

- `define_machine` (default="true"):

  Whether the machine for localhost should be defined our not. Disable this if the launch file is included somewhere where machines are already defined.

- `nodelet_manager` (default="pico_flexx"):

  Name of the nodelet manager.

- `start_manager` (default="true"):

  Whether to start a nodelet manager our not. Disable this if a different nodelet manager should be used.

#### Dynamic reconfigure

Some parameters can be reconfigured during runtime, for example with `rosrun rqt_reconfigure rqt_reconfigure`. The reconfigurable parameters are:
- `use_case`:

  Choose from a list of use cases.

- `exposure_mode`:

  `AUTOMATIC` or `MANUAL`.

- `exposure_time`:

  Exposure time. Only for manual exposure.

- `max_noise`:

  Maximum allowed noise. Data with higher noise will be filtered out.

- `range_factor`:

  Range of the 16-Bit mono image which should be mapped to the 0-255 range of the 8-Bit mono image. The resulting range is `range_factor` times the standard deviation around mean.

#### Topics

##### `/pico_flexx/camera_info`
Bandwidth: 0.37 KB per message (@5 Hz: ~2 KB/s, @45 Hz: ~ 17 KB/s)

This topic publishes the camera intrinsic parameters.

##### `/pico_flexx/image_depth`
Bandwidth: 153.28 KB per message (@5 Hz: ~766 KB/s, @45 Hz: ~ 6897 KB/s)

This is the distorted depth image. It is a 32-Bit float image where each pixel is a distance measured in meters along the optical axis.

##### `/pico_flexx/image_mono16`
Bandwidth: 76.67 KB per message (@5 Hz: ~383 KB/s, @45 Hz: ~ 3450 KB/s)

This is the distorted IR image. It is a 16-Bit image where each pixel is an intensity measurement.

##### `/pico_flexx/image_mono8`
Bandwidth: 38.37 KB per message (@5 Hz: ~192 KB/s, @45 Hz: ~ 1727 KB/s)

This is the distorted IR image. It is a 8-Bit image where each pixel is an intensity measurement.

##### `/pico_flexx/image_noise`
Bandwidth: 153.28 KB per message (@5 Hz: ~766 KB/s, @45 Hz: ~ 6897 KB/s)

This is the distorted noise image. It is a 32-Bit float image where each pixel is a noise value of the corresponding depth pixel measured in meters.

##### `/pico_flexx/points`
Bandwidth: 770 KB per message (@5 Hz: ~3850 KB/s, @45 Hz: ~ 34650 KB/s)

This is the point cloud created by the sensor. It contains 6 fields in the following order: X, Y, Z, Noise (float), Intensity (16-Bit), Gray (8-Bit).
The 3D points themselves are undistorted, while the 2D coordinates of the points are distorted. The point cloud is organized, so that the each point belongs to the pixel with the same index in one of the other images.

About

ROS driver for the pmd CamBoard pico flexx

License:GNU General Public License v3.0


Languages

Language:C++ 81.2%Language:CMake 10.7%Language:Python 8.1%