velodyne: velodyne_common | velodyne_driver | velodyne_msgs | velodyne_pointcloud

Package Summary

Basic device driver, message, header, library and utility interfaces for the Velodyne HDL-64E and HDL-64E S2 3D LIDARs.

Overview

This package provides basic device handling for Velodyne 3D LIDARs. It supports the HDL-64E and HDL-64E S2 models. The HDL-32 is not supported, use the velodyne_driver package for that.

This package is deprecated, please migrate to the new interfaces provided by velodyne_driver and velodyne_pointcloud.

Road Map

This whole package is being reimplemented. The velodyne_driver and velodyne_pointcloud packages will replace it. Once they are ready, velodyne_common will be deleted.

ROS Nodes

velodyne_read

ROS device driver node that captures Velodyne HDL-64E 3D LIDAR data and publishes it.

Published Topics

velodyne/packets (velodyne_msgs/VelodyneScan)
  • Velodyne data packets for one entire revolution of the device in the /velodyne frame of reference
velodyne/rawscan (velodyne_common/RawScan)
  • Raw Velodyne data packets for one entire revolution of the device in the /velodyne frame of reference

Parameters

~pcap (string)
  • PCAP dump input file name; overrides the -f command line parameter.
~input/* (see <velodyne/input.h>, default: )
  • Parameters defined by <velodyne/input.h>.

Usage

  rosrun velodyne_common read [options]

Options:
    -f <filename>  PCAP packet dump file name (default: use real device)
    -h, -?         print help text
    -q <integer>   set ROS topic queue depth (default: 1)

Examples

Read the Velodyne input socket as fast as possible. Publish each complete revolution to velodyne/rawscan.

$ rosrun velodyne_common read

Read previously captured Velodyne packets from dump.pcap file. Publish messages to velodyne/rawscan at approximately 10 Hz rate.

Dump files can be grabbed by libpcap, Velodyne's DSR software, ethereal, wireshark, tcpdump, or the vdump command.

$ rosrun velodyne_common read _pcap:=dump.pcap

velodyne_cloud

The cloud command reads raw data, converts to sensor_msgs/PointCloud format, and republishes as velodyne/pointcloud.

Subscribed Topics

velodyne/rawscan (velodyne_common/RawScan)
  • Raw Velodyne data from the device

Published Topics

velodyne/pointcloud (sensor_msgs/PointCloud)
  • Velodyne points for one entire revolution of the device with intensity channel.

Parameters

~data/* (see <velodyne/data.h>)
  • Parameters defined by <velodyne/data.h>.

Usage

  rosrun velodyne_common cloud [options]

Options:
        -h, -?         print help text
        -q <integer>   set ROS topic queue depth (default: 1)

Examples

Continuously convert raw Velodyne data into sensor_msgs/PointCloud messages.

$ rosrun velodyne_common cloud

ROS Nodelets

New in version 0.2.5

Several algorithms now use the ROS nodelet mechanism. These experimental nodelets publish data using shared pointers.

  • When two or more are loaded into the same nodelet manager process, they can share messages without copying or serialization overhead.
  • Published messages are also available to external nodes, although with the usual ROS message copying overhead.
  • When run in a standalone nodelet process, a nodelet functions almost like a normal ROS node.

driver_nodelet

ROS device driver nodelet that captures Velodyne HDL-64E 3D LIDAR data and publishes it to the velodyne/packets ROS topic.

Published Topics

velodyne/packets (velodyne_msgs/VelodyneScan)
  • one or more Velodyne data packets from the device

Parameters

~pcap (string)
  • PCAP dump input file name; overrides the -f command line parameter.
~npackets (int, default: 260)
  • Number of packets to publish in each message. Default is a full revolution.
~frame_id (str, default: "velodyne")
  • Device frame ID. Resolved using tf_prefix, if defined.
~input/* (see <velodyne/input.h>, default: )
  • Parameters defined by <velodyne/input.h>.

Examples

Read the Velodyne input socket as fast as possible. Publish each complete revolution to velodyne/packets. Running as a standalone nodelet prevents zero-copy message sharing.

$ rosrun nodelet nodelet standalone velodyne_common/DriverNodelet

Read previously captured Velodyne packets from dump.pcap file. Publish messages to velodyne/packets at approximately 10 Hz rate.

Dump files can be grabbed by libpcap, Velodyne's DSR software, ethereal, wireshark, tcpdump, or the vdump command.

$ rosrun nodelet nodelet standalone velodyne_common/DriverNodelet _pcap:=dump.pcap

pointcloud_nodelet

The pointcloud nodelet reads raw data from the velodyne/packets ROS topic, converts to sensor_msgs/PointCloud format, and republishes as velodyne/pointcloud.

Subscribed Topics

velodyne/packets (velodyne_msgs/VelodyneScan)
  • one or more Raw Velodyne data packets from the device

Published Topics

velodyne/pointcloud (sensor_msgs/PointCloud)
  • Velodyne data points for one entire revolution of the device

Parameters

~data/* (see <velodyne/data_xyz.h>)
  • Parameters defined by <velodyne/data_xyz.h>.

Examples

Continuously convert raw Velodyne data into sensor_msgs/PointCloud messages. Running as a standalone nodelet prevents zero-copy message sharing.

$ rosrun nodelet nodelet standalone velodyne_common/PointCloudNodelet

transform_nodelet

The transform nodelet reads raw data from the velodyne/packets ROS topic, converts to sensor_msgs/PointCloud format, and republishes as velodyne/pointcloud in a specified frame of reference (typically /odom). In addition to the data points, this cloud includes additional channels for "intensity", "ring" and "heading".

Subscribed Topics

velodyne/packets (velodyne_msgs/VelodyneScan)
  • one or more Raw Velodyne data packets from the device

Published Topics

velodyne/pointcloud (sensor_msgs/PointCloud)
  • accumulated Velodyne points transformed into the frame_id frame of reference.

Parameters

~frame_id (str, default: "odom")
  • Target frame ID. Resolved using tf_prefix, if defined.
~max_range (double, default: 130.0)
  • maximum range to publish
~min_range (double, default: 2.0)
  • minimum range to publish
~npackets (int, default: 260)
  • Number of packets to publish in each message. Default is a full revolution.
~data/* (see <velodyne/data_xyz.h>)
  • Parameters defined by <velodyne/data_xyz.h>.

Examples

Continuously transform raw Velodyne data into sensor_msgs/PointCloud messages in the /odom frame of reference. Messages are published at about 10 Hz, and collect data from a full revolution of the device, roughly 100,000 points. Running as a standalone nodelet prevents zero-copy message sharing.

$ rosrun nodelet nodelet standalone velodyne_common/TransformNodelet

Utility Commands

vdump

The vdump command dumps raw data from the Velodyne LIDAR in PCAP format. It is a shell script wrapper with some obscure options for the powerful tcpdump command.

Other methods of acquiring PCAP data include using tcpdump directly, wireshark, Velodyne's DSR software, and programming with libpcap.

Usage

  rosrun velodyne_common vdump <file_prefix> [ <interface> ]

        <file_prefix>   file name to dump (with 3-digit number suffix)
        <interface>     interface to read from (default: "eth1")

Examples

Dump Velodyne packets to a series of files named pcap-000, pcap-001, etc. Each file will be about 100MB, holding a little more than 30 seconds of Velodyne packets. Type ^C when finished.

$ rosrun velodyne_common vdump pcap- eth0

C++ Programming API

See the code API for details.

Velodyne Data classes

Classes to unpack raw Velodyne LIDAR packets into several formats.

Parameters

~data/output (string, default: none)
  • output file name
~data/angles (string, default: velodyne_common/etc/angles.config)
  • Device-specific angles correction file name.

Velodyne Input classes

The <velodyne/input.h> classes provide raw Velodyne LIDAR input packets from either a live socket interface or a previously-saved PCAP dump file.

Parameters

~input/read_once (bool, default: false)
  • If true, read input file only once.
~input/read_fast (bool, default: false)
  • If true, read input file as fast as possible.
~input/repeat_delay (double, default: 0.0)
  • Number of seconds to delay before repeating input file.

Launch File Examples

Start a velodyne_nodelet_manager process and load the driver nodelet.

 $ roslaunch velodyne_common nodelet_manager.launch 

Start a driver nodelet with input from tcpdump.pcap, in current directory.

 $ rosparam set driver_nodelet/pcap `pwd`/tcpdump.pcap 
 $ roslaunch velodyne_common nodelet_manager.launch 

Load an instance of the point cloud nodelet into the velodyne_nodelet_manager process. The nodelet manager and driver must be started separately (as above).

 $ roslaunch velodyne_common pointcloud_nodelet.launch 

Load an instance of the transform nodelet into the velodyne_nodelet_manager process. The nodelet manager and driver must be started separately (as above). There must also be transforms defined for the /velodyne and /odom frames.

 $ roslaunch velodyne_common tranform.launch 

Wiki: velodyne_common (last edited 2012-03-19 14:29:07 by JackOQuin)