Only released in EOL distros:  

lse_climber_robots: pole_structure_mapper

Package Summary

This package contains two nodes for pole extraction and mapping for aiding 3D climbing robots in navigation and localization.

Overview

The goal of the software presented in this stack is to be able to use a ground robot equipped with a depth sensor to generate a 3D map of a structure composed of poles as it is climbed by a climbing robot. This sections contains an overview of the two algorithms implemented in this package, pole section extractor and 3D structure mapper.

Pole Extractor

This algorithm is in charge of extracting pole sections from the environment inside a region of interest centered at the gripper of the climbing robot. Extraction is achieved using cylindrical segmentation.

extractor.jpg

3D Structure Mapper

This algorithm uses the pole sections published by pole extractor to construct a map of the structure being climbed.

mapper.jpg

For more details on how the algorithms work check the publications section down below.

ROS API

pole_extractor_node

pole_extractor_node is a region of interest cylindrical segmentation algorithm.

Subscribed Topics

chewed_cloud (sensor_msgs/PointCloud2)
  • The point cloud from the depth sensor.
extract_poles (std_msgs/Bool)
  • Control topic for outputting data or not.

Published Topics

pole_cloud (sensor_msgs/PointCloud2)
  • This allows to visually debug the segmented pole surface.
roi_cloud (sensor_msgs/PointCloud2)
  • This allows to visually debug the filtered roi point cloud.
pole_extractor_markers (visualization_msgs/Marker)
  • This allows to visually debug the output of the algorithm.
pole (pole_structure_mapper/PoleSectionStamped)
  • The output of the algorithm.

Parameters

~gripper_tag_frame_id (string, default: ar_marker)
  • The frame id of the gripper ar tag.
~filter_box_width (double, default: 2.0)
  • The width of the roi.
~filter_box_height (double, default: 2.0)
  • The height of the roi.
~min_diameter (double, default: 0.2)
  • The minimum diameter admissible for the cylindrical segmentation.
~max_diameter (double, default: 0.35)
  • The maximum diameter admissible for the cylindrical segmentation.
~normal_distance (double, default: 0.1)
  • Normal distance parameter of the cylindrical segmentation.
~max_iterations (int, default: 10000)
  • Maximum number of iterations for the cylindrical segmentation.
~distance_threshold (double, default: 0.05)
  • Distance threshold parameter of the cylindrical segmentation.

structure_mapper_node

structure_mapper_node is a 3D structure mapper for climbing robots.

Subscribed Topics

pole (pole_structure_mapper/PoleSectionStamped)
  • The output of the pole extractor algorithm.

Published Topics

pole_structure (pole_structure_mapper/PoleStructure)
  • The output of the algorithm.
pole_structure_visualizer (visualization_msgs/Marker)
  • This allows to visually debug the output of the algorithm.

Parameters

~global_frame_id (string, default: map)
  • The global frame id.
~diameter_threshold (double, default: 0.03)
  • The diameter threshold for matching two pole sections (in meters).
~axis_threshold (double, default: 10.0)
  • The axis threshold for matching two pole sections (in degrees).
~distance_threshold (double, default: 0.10)
  • The distance threshold for matching two pole sections (in meters).
~length_threshold (double, default: 0.6)
  • The minimum length a pole section must have to be considered.
~temporary_section_timeout (double, default: 30.0)
  • The lifespan of a temporary pole section.
~num_of_temporary_sections (int, default: 10)
  • Number of pole sections required to turn a temporary section into a permanent one.

Video

The following video shows the pole extractor and 3D stricture mapper working in rviz.

Tutorials

Coming soon...

Coming soon...

Wiki: pole_structure_mapper (last edited 2012-04-19 13:37:29 by Gonçalo Cabrita)