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
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
octomap_world
volumetric_map_base
volumetric_mapping
volumetric_msgs
.gitignore
README.md

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