Only released in EOL distros:  

velodyne_utils: velodyne_height_map

Package Summary

Obstacle detection for 3D point clouds using a height map algorithm.

velodyne_utils: velodyne_height_map

Package Summary

Obstacle detection for 3D point clouds using a height map algorithm.

velodyne_utils: velodyne_height_map

Package Summary

Obstacle detection for 3D point clouds using a height map algorithm.

velodyne_utils: velodyne_height_map

Package Summary

Obstacle detection for 3D point clouds using a height map algorithm.

Package Summary

Obstacle detection for 3D point clouds using a height map algorithm.

Reporting bugs

ROS Nodes and Nodelets

HeightMapNodelet

The height map nodelet reads point cloud data, publishing detected obstacles and clear space. The velodyne_pointcloud/TransformNodelet publishes data in the appropriate format.

Subscribed Topics

velodyne_points (sensor_msgs/PointCloud2)
  • 3D data points.

Published Topics

velodyne_obstacles (sensor_msgs/PointCloud2)
  • Points belonging to detected obstacles.
velodyne_clear (sensor_msgs/PointCloud2)
  • Clear space: grid squares containing laser returns and no obstacle.

Parameters

cell_size (double, default: 0.5)
  • Grid cell size (meters).
full_clouds (bool, default: false)
  • Normally, height map only publishes one obstacle or clear point for each cell, significantly reducing output bandwidth while providing the information needed for most 2D navigation. When true, publish all obstacle and clear points.
grid_dimensions (int, default: 320)
  • Number of grid cells in both the X and Y dimensions.
height_threshold (double, default: 0.25)
  • Minimum height difference that counts as an obstacle (meters).

Examples

Start the height map nodelet in a separate process. Running as a standalone nodelet prevents zero-copy message sharing.

$ rosrun nodelet nodelet standalone velodyne_height_map/HeightMapNodelet

This launch file runs the height map nodelet in the same process with the Velodyne device driver and a velodyne_pointcloud nodelet which publishes the points transformed into the "/odom" frame. This approach minimizes data copying.

<launch>

  <!-- start nodelet manager and driver nodelets -->
  <include file="$(find velodyne_driver)/launch/nodelet_manager.launch">
    <arg name="pcap"
           value="$(find velodyne_pointcloud)/tests/class.pcap"/>
  </include>

  <!-- start transform nodelet using test calibration file -->
  <include file="$(find velodyne_pointcloud)/launch/transform_nodelet.launch">
    <arg name="calibration"
         value="$(find velodyne_pointcloud)/tests/angles.config"/>
  </include>

  <!-- start heightmap nodelet -->
  <include file="$(find velodyne_height_map)/launch/heightmap_nodelet.launch"/>

</launch>

heightmap_node

The height map node works exactly like the HeightMapNodelet, running as a separate ROS node. All topics and parameters are identical.

Examples

Run the height map algorithm as a separate node.

$ rosrun velodyne_height_map heightmap_node

Run the node with a 100x100 grid of 10cm cells.

$ rosrun velodyne_height_map heightmap_node _grid_dimensions:=100 _cell_size:=0.1

Run the node with anything more than 5cm high considered an obstacle.

$ rosrun velodyne_height_map heightmap_node _height_threshold:=0.05

Wiki: velodyne_height_map (last edited 2013-05-20 22:15:21 by JackOQuin)