OctoMap
An Efficient Probabilistic 3D Mapping Framework Based on Octrees
The OctoMap library implements a 3D occupancy grid mapping approach, providing data structures and mapping algorithms in C++ particularly suited for robotics. The map implementation is based on an octree and is designed to meet the following requirements:
- Full 3D model. The map is able to model arbitrary environments without prior assumptions about it. The representation models occupied areas as well as free space. Unknown areas of the environment are implicitly encoded in the map. While the distinction between free and occupied space is essential for safe robot navigation, information about unknown areas is important, e.g., for autonomous exploration of an environment.
- Updatable. It is possible to add new information or sensor readings at any time. Modeling and updating is done in a probabilistic fashion. This accounts for sensor noise or measurements which result from dynamic changes in the environment, e.g., because of dynamic objects. Furthermore, multiple robots are able to contribute to the same map and a previously recorded map is extendable when new areas are explored.
- Flexible. The extent of the map does not have to be known in advance. Instead, the map is dynamically expanded as needed. The map is multi-resolution so that, for instance, a high-level planner is able to use a coarse map, while a local planner may operate using a fine resolution. This also allows for efficient visualizations which scale from coarse overviews to detailed close-up views.
- Compact. The map is stored efficiently, both in memory and on disk. It is possible to generate compressed files for later usage or convenient exchange between robots even under bandwidth constraints.
Detailed information about the implemented approach and evaluations can be found in the paper "OctoMap: An Efficient Probabilistic 3D Mapping Framework Based on Octrees" (PDF), published in the Autonomous Robots Journal.
The OctoMap library is available as a self-contained source distribution for Linux (recommended), Mac OS and Windows. It was developed by Kai M. Wurm and Armin Hornung, and is currently maintained by Armin Hornung. We would like to thank all additional authors for their contributions.
Overview
- OctoMap GitHub repository
- Download source packages
- Installation instructions
- OctoMap in ROS
- Online API documentation (doxygen)
- Mailing list for support and announcements (Google Groups)
- Issue tracker for bugs and feature requests
- Importing data instructions
Example Projects and further references
- OctoMap-RT - a GPU-accelerated ray tracing variant of OctoMap
License
OctoMap is released under the New BSD License.
The viewer octovis is released under the GNU-GPL License (version 2).
Using Octomap?
Please let us know if you are using OctoMap, as we are curious to find out how it enables other people's work or research. Additionally, please cite our new journal paper (supersedes the ICRA 2010 workshop version) if you use OctoMap in your research:
A. Hornung,. K.M. Wurm, M. Bennewitz, C. Stachniss, and W. Burgard, "OctoMap: An Efficient Probabilistic 3D Mapping Framework Based on Octrees" in Autonomous Robots, 2013; DOI: 10.1007/s10514-012-9321-0. Software available at https://octomap.github.io.
BibTeX:
@ARTICLE{hornung13auro, author = {Armin Hornung and Kai M. Wurm and Maren Bennewitz and Cyrill Stachniss and Wolfram Burgard}, title = {{OctoMap}: An Efficient Probabilistic {3D} Mapping Framework Based on Octrees}, journal = {Autonomous Robots}, year = 2013, url = {https://octomap.github.io}, doi = {10.1007/s10514-012-9321-0}, note = {Software available at \url{https://octomap.github.io}} }
Maps
Take a look at some of our example maps below. You can find these and more datasets in our dataset repository as finished OctoMap files and sources in the form of 3D laser scans.
Acknowledgments
OctoMap was developed at University of Freiburg in the DFG-funded SFB/TR8 Spatial Cognition within the projects A3-[MultiBot] and A8-[HumanoidSpace].