A repository for 3D volumetric (occupancy) maps, providing a generic interface for disparity map and pointcloud insertion, and support for custom sensor error models.
Clone or download
SebastianInd Merge pull request #82 from ethz-asl/fix/unknown_handling
coherent handling of treat_unknown_as_occupied
Latest commit 2e25b6d Apr 9, 2018

README.md

volumetric_mapping

A repository for 3D volumetric (occupancy) maps, providing a generic interface for disparity map and pointcloud insertion, and support for custom sensor error models.

Packages

volumetric_map_base - base class/package that all volumetric maps should inherit from, contains methods to handle ROS disparity maps and pointclouds.

volumetric_msgs - collection of messages for interacting with various maps.

octomap_world - an octomap-based volumetric representation, both with a library and a stand-alone ROS node.

Dependencies

In addition to ros-indigo-desktop-full, please install:

sudo apt-get install ros-indigo-octomap-mapping

And the following packages, which can be done all at once with the script below:
minkindr
minkindr_ros
eigen_catkin
eigen_checks
glog_catkin
gflags_catkin

cd ~/catkin_ws/src/
wstool init
wstool set catkin_simple       --git https://github.com/catkin/catkin_simple.git
wstool set eigen_catkin        --git https://github.com/ethz-asl/eigen_catkin.git
wstool set eigen_checks        --git https://github.com/ethz-asl/eigen_checks.git
wstool set gflags_catkin       --git https://github.com/ethz-asl/gflags_catkin.git
wstool set glog_catkin         --git https://github.com/ethz-asl/glog_catkin.git
wstool set minkindr            --git https://github.com/ethz-asl/minkindr.git
wstool set minkindr_ros        --git https://github.com/ethz-asl/minkindr_ros.git
wstool set volumetric_mapping  --git https://github.com/ethz-asl/volumetric_mapping.git
wstool update

On Mac OS X, see the mav_tools Wiki instructions.

Libraries

OctomapWorld - general library for handling insertion of pointclouds, can be run outside of a ROS node, and takes parameters as a struct.

OctomapManager - inherits from OctomapWorld, essentially a ROS wrapper for it. Reads parameters in from the ROS parameter server.

Nodes

octomap_manager

Listens to disparity and pointcloud messages and adds them to an octomap.

Parameters

  • tf_frame (string, default: "/world") - tf frame name to use for the world.
  • resolution (double, default: 0.15) - resolution each grid cell in meters.
  • Q (vector of doubles (representing 4x4 matrix, row-major)) - Q projection matrix for disparity projection, in case camera info topics are not available.
  • map_publish_frequency (double, default: 0.0) - Frequency at which the Octomap is published for visualization purposes. If set to < 0.0, the Octomap is not regularly published (use service call instead).
  • octomap_file (string, default: "") - Loads an octomap from this path on startup. Use load_map service below to load a map from file after startup.

For other parameters, see octomap_world.h.

Subscribed Topics

Published Topics

Services

Running

Run an octomap manager, and load a map from disk, then publish it in the map tf frame:

rosrun octomap_world octomap_manager _tf_frame:=map
rosservice call /octomap_manager/load_map /home/helen/data/my_awesome_octomap.bt
rosservice call /octomap_manager/publish_all