This package was designed to automatically remove outdated voxels from the octomap.
We described our motivation and concept on our octomap-website - here you will also find two supportive videos. For further explanations, you may want to have a look at this workshop abstract.
Our implementation of decay:
rosrun octomap_pa octree_stamped_pa_node roslaunch octomap_pa octomap_stamped_pa.launch
The native implementation of decay by the original octomap package:
rosrun octomap_pa octree_stamped_native_node roslaunch octomap_pa octomap_stamped_native.launch
Simple node without decay:
rosrun octomap_pa octree_pa_node roslaunch octomap_pa octomap_pa.launch
Input and Output Topics:
Topic Name | Type | Description |
---|---|---|
"~/in_cloud" | sensor_msgs/PointCloud2 | Input as new pointcloud type. |
"~/in_cloud_old" | sensor_msgs/PointCloud | Input as old pointloud type. Will be converted to new pointcloud type. |
"~/in_laser" | sensor_msgs/LaserScan | Input as single laser scan. Will be converted to new pointcloud type by package "laser_geometry". |
"~/out_octomap" | octomap_msgs/Octomap | Output of binary octomap - voxels are either free or occupied (smaller in size). |
"~/out_octomap_full" | octomap_msgs/Octomap | Output of octomap (full size). |
"~/out_cloud_free" | sensor_msgs/PointCloud2 | Output of all free voxels as pointcloud. |
"~/out_cloud_occupied" | sensor_msgs/PointCloud2 | Output of all occupied voxels as pointcloud. |
All topics can be remapped using parameters (see below).
Services:
Service Name | Type | Description |
---|---|---|
"~/clear" | std_srvs/Empty | Deletes internal octomap. |
"~/getsize" | octomap_pa/OctomapPaGetSize | Returning number of nodes, total size in bytes and number of inserted measurments. |
"~/save" | octomap_pa/OctomapPaFileName | Storing the current octomap as file - timestamps are not saved. |
"~/load" | octomap_pa/OctomapPaFileName | Loading a octomap from file - timestamps are ignored. |
Parameters:
degrading of voxels
Parameter Name | Type | Description |
---|---|---|
"~/degrading_time" | double | Duration how long the outdated nodes will be kept. |
"~/auto_degrading" | bool | Turns on automatic degrading. |
"~/auto_degrading_intervall" | double | Intervall for automatic degrading. |
pointcloud insertion
Parameter Name | Type | Description |
---|---|---|
"~/map_prob_hit" | double | Probability that a positive measurement relates to a occupied voxel. |
"~/map_prob_miss" | double | Probability that a negative measurement relates to a occupied voxel. |
"~/pcd_voxel_active" | bool | Use voxel-filter for pointcloud insertion. |
"~/pcd_voxel_explicit" | bool | Use pcl-filter instead of octomap-filter. |
"~/pcd_voxel_explicit_relative_resolution" | double | Relative resolution of pcl-filter. |
octomap in general
Parameter Name | Type | Description |
---|---|---|
"~/output_frame" | string | Coordinate system for insertion and output. |
"~/map_resolution" | double | Side length of one voxel (in meters). |
"~/map_prob_threshold" | double | Threshold for binary evaluation of single voxels. |
"~/map_clamp_min" | double | Lower clamping value of occupancy probability. |
"~/map_clamp_max" | double | Upper clamping value of occupancy probability. |
topics and services
Parameter Name | Type | Description |
---|---|---|
"~/topic_in_cloud" | string | Name of input topic for new pointclouds. |
"~/topic_in_cloud_old" | string | Name of input topic for old pointclouds. |
"~/topic_in_laser" | string | Name of input topic for laser scans. |
"~/topic_out_octomap" | string | Name of output topic for binary octomap. |
"~/topic_out_octomap_full" | string | Name of output topic for full octomap. |
"~/topic_out_cload_free" | string | Name of output topic for free voxels. |
"~/topic_out_cloud_occupied" | string | Name of output topic for occupied voxels. |
See also this config file. It contains all parameters and their default value.
Source code at github:
Related packages:
ROS packages:
ROS-Distribution | Documentation |
---|---|
Indigo | docs.ros.org |
Jade (EOL May 2017) | - |
Kinetic | docs.ros.org |
Lunar | docs.ros.org |