|
| 1 | +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| 2 | + |
| 3 | +<html> |
| 4 | +<head> |
| 5 | +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| 6 | +<meta name="author" content="Kai M. Wurm, Armin Hornung"> |
| 7 | +<title>OctoMap - 3D occupancy mapping</title> |
| 8 | +<link rel="stylesheet" href="style.css" type="text/css"> |
| 9 | +<script type="text/javascript" src="shadowbox/shadowbox.js"></script> |
| 10 | +<script type="text/javascript"> |
| 11 | + Shadowbox.init({ language: 'en', players: ['img', 'html', 'iframe', 'qt', 'wmp', 'swf', 'flv'] }); |
| 12 | +</script> |
| 13 | +</head> |
| 14 | + |
| 15 | +<body> |
| 16 | + |
| 17 | +<div id="main"> |
| 18 | +<H1>OctoMap</H1> |
| 19 | +<h2>An Efficient Probabilistic 3D Mapping Framework Based on Octrees</h2> |
| 20 | + |
| 21 | +<p> |
| 22 | +The <a href="https://sourceforge.net/projects/octomap/">OctoMap library</a> |
| 23 | +implements a 3D occupancy grid mapping |
| 24 | +approach, providing data structures and mapping algorithms in C++. The map |
| 25 | +implementation is based on an octree and is designed to meet the following |
| 26 | +requirements: |
| 27 | +</p> |
| 28 | + |
| 29 | +<ul> |
| 30 | +<li> |
| 31 | +<b>Full 3D model.</b> The map is able to model arbitrary environments |
| 32 | +without prior assumptions about it. The representation models occupied |
| 33 | +areas as well as free space. If no information is available about an |
| 34 | +area (commonly denoted as <i>unknown areas</i>), this information is |
| 35 | +encoded as well. While the distinction between free and occupied |
| 36 | +space is essential for safe robot navigation, information about |
| 37 | +unknown areas is important, e.g., for autonomous exploration of an |
| 38 | +environment. |
| 39 | +</li> |
| 40 | +<li> |
| 41 | +<b>Updatable.</b> It is possible to add new information or sensor |
| 42 | + readings at any time. Modeling and updating is done in |
| 43 | + a <i>probabilistic</i> fashion. This accounts for sensor noise or |
| 44 | + measurements which result from dynamic changes in the environment, |
| 45 | + e.g., because of dynamic objects. Furthermore, multiple robots are |
| 46 | + able to contribute to the same map and a previously recorded map is |
| 47 | + extendable when new areas are explored. |
| 48 | +</li> |
| 49 | +<li> |
| 50 | +<b>Flexible.</b> The extent of the map does not have to be known in |
| 51 | +advance. Instead, the map is dynamically expanded as needed. The map |
| 52 | +is multi-resolution so that, for instance, a high-level planner is |
| 53 | +able to use a coarse map, while a local planner may operate using a |
| 54 | +fine resolution. This also allows for efficient visualizations which |
| 55 | +scale from coarse overviews to detailed close-up views. |
| 56 | +</li> |
| 57 | +<li> |
| 58 | +<b>Compact.</b> The map is stored efficiently, both in memory and on |
| 59 | +disk. It is possible to generate compressed files for later usage or |
| 60 | +convenient exchange between robots even under bandwidth constraints. |
| 61 | +</li> |
| 62 | +</ul> |
| 63 | + |
| 64 | +<p> |
| 65 | +Detailed information about the implemented approach can be found in the <a href="http://ais.informatik.uni-freiburg.de/publications/papers/wurm10octomap.pdf">OctoMap paper (pdf)</a>. |
| 66 | +More information about this project is availble at the <a href="https://sourceforge.net/projects/octomap/"> |
| 67 | +<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=277757&type=10" width="80" height="15" alt="SF logo"> Sourceforge project page</a>. |
| 68 | +</p> |
| 69 | + |
| 70 | +<p> |
| 71 | +The OctoMap library is available as a <i>self-contained |
| 72 | +source distribution</i> for Linux (recommended), Mac OS and Windows. |
| 73 | +It was developed by <a href="http://www.informatik.uni-freiburg.de/~wurm">Kai |
| 74 | +M. Wurm</a> and <a href="http://www.informatik.uni-freiburg.de/~hornunga">Armin |
| 75 | +Hornung</a>, and is currently maintained by Armin Hornung. Feel free to contact us with questions and issues. To report bugs |
| 76 | +or request features, best use our tracker at <a href="https://sourceforge.net/apps/trac/octomap">https://sourceforge.net/apps/trac/octomap</a>. |
| 77 | + |
| 78 | +We would like to thank |
| 79 | +Stefan Oßwald, Jörg Müller, Radu Rusu, Raphael Schmitt, and Christoph Sprunk for their contrbutions. |
| 80 | +</p> |
| 81 | + |
| 82 | +<h3>Example Projects</h3> |
| 83 | + <table border=0 width=680 class="youtube"> |
| 84 | + <tr> <!-- mapping --> |
| 85 | + <td class="youtube"><a href="http://www.youtube.com/v/7ZsxJzR14rc&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> <!-- campus map --> |
| 86 | + <!-- <img src="http://img.youtube.com/vi/7ZsxJzR14rc/2.jpg"> --> |
| 87 | + <img src="vi/campus.jpg" alt="Video thumb"> |
| 88 | + </a></td> |
| 89 | + |
| 90 | + <td class="youtube"><a href="http://www.youtube.com/v/O2TDNJuHMKo&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> <!-- fr 079 --> |
| 91 | + <!-- <img src="http://img.youtube.com/vi/O2TDNJuHMKo/2.jpg"> --> |
| 92 | + <img src="vi/079.jpg" alt="Video thumb"> |
| 93 | + </a></td> |
| 94 | + <td class="youtube"><a href="http://www.youtube.com/v/yp0f8-AKvDU&rel=1&autoplay=1" rel="shadowbox;width=640;height=510"> <!-- object mapping --> |
| 95 | + <img src="http://img.youtube.com/vi/yp0f8-AKvDU/3.jpg" alt="Video thumb"> |
| 96 | + </a></td> |
| 97 | + <!-- willow garage --> |
| 98 | + <td class="youtube"><a href="http://www.youtube.com/v/uiIi2rSKWAU&rel=1&autoplay=1" rel="shadowbox;width=640;height=480"> <!-- nao localization --> |
| 99 | + <img src="http://img.youtube.com/vi/uiIi2rSKWAU/2.jpg" alt="Video thumb"> |
| 100 | + </a></td> |
| 101 | + <td class="youtube"><a href="http://www.youtube.com/v/9f32FmbtHCs&rel=1&autoplay=1" rel="shadowbox;width=640;height=480"> <!-- color octomap demo --> |
| 102 | + <!-- <img src="http://img.youtube.com/vi/9f32FmbtHCs/2.jpg"> --> |
| 103 | + <img src="vi/cot.jpg" alt="Video thumb"> |
| 104 | + </a></td> |
| 105 | + </tr> |
| 106 | + |
| 107 | + <tr> |
| 108 | + <td class="youtube"><a href="http://www.youtube.com/v/sot6gjj3SzU&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> <!-- willow 3d nav --> |
| 109 | + <img src="vi/3dnav.jpg" alt="Video thumb"> |
| 110 | + <!-- <img src="http://img.youtube.com/vi/sot6gjj3SzU/3.jpg"> --> |
| 111 | + </a></td> |
| 112 | + <td class="youtube"> |
| 113 | +<!-- <a href="http://www.youtube.com/v/hHF3pRWiP7o&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> --> |
| 114 | +<a href="http://www.youtube.com/v/25nnJ64ED5Q&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> <!-- willow octomap2 --> |
| 115 | + <!-- <img src="http://img.youtube.com/vi/hHF3pRWiP7o/3.jpg"> --> |
| 116 | + <img src="vi/octomap2.jpg" alt="Video thumb"> |
| 117 | + </a></td> |
| 118 | + <td class="youtube"><a href="http://www.youtube.com/v/l6u06j_VsXc&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> <!-- willow collision_octomap --> |
| 119 | + <!-- <img src="http://img.youtube.com/vi/l6u06j_VsXc/2.jpg"> --> |
| 120 | + <img src="vi/coll.jpg" alt="Video thumb"> |
| 121 | + </a></td> |
| 122 | + <!-- other freiburg projects --> |
| 123 | + |
| 124 | + <td class="youtube"><a href="http://www.youtube.com/v/5o3ABX7xYJU&rel=1&autoplay=1" rel="shadowbox;width=640;height=480"> <!-- rgbdslam --> |
| 125 | + <!-- <img src="http://img.youtube.com/vi/5o3ABX7xYJU/2.jpg"> --> |
| 126 | + <img src="vi/cot2.jpg" alt="Video thumb"> |
| 127 | + </a></td> |
| 128 | + <td class="youtube"><a href="http://www.youtube.com/v/0sFyyKEoB4o&rel=1&autoplay=1" rel="shadowbox;width=810;height=480"> <!-- quadcopter mapping --> |
| 129 | + <!-- <img src="http://img.youtube.com/vi/0sFyyKEoB4o/2.jpg"> --> |
| 130 | + <img src="vi/quad.jpg" alt="Video thumb"> |
| 131 | + </a></td> |
| 132 | + <!-- <td class="youtube"><a href="http://www.youtube.com/v/_rIAGKA6uS8"> --> <!-- wheelchair mapping --> |
| 133 | + <!-- <img src="http://img.youtube.com/vi/_rIAGKA6uS8/2.jpg"> --> |
| 134 | + <!-- </a></td> --> |
| 135 | + </tr> |
| 136 | + |
| 137 | + </table> |
| 138 | + |
| 139 | + |
| 140 | +<h2>License</h2> |
| 141 | +<p> |
| 142 | +OctoMap is released under the <a href="http://opensource.org/licenses/BSD-3-Clause">New BSD License</a>. |
| 143 | +</p> |
| 144 | +<p> |
| 145 | +The viewer <em>octovis</em> is released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU-GPL License (version 2)</a>. |
| 146 | +</p> |
| 147 | + |
| 148 | + |
| 149 | +<h3>Using Octomap?</h3> |
| 150 | +<p>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. |
| 151 | +Additionally, please cite our paper if you use OctoMap in your research: |
| 152 | +</p> |
| 153 | +<p>K. M. Wurm, A. Hornung, M. Bennewitz, C. Stachniss, and W. Burgard, |
| 154 | +<strong>"OctoMap: A Probabilistic, Flexible, and Compact 3D Map Representation for Robotic Systems"</strong> in |
| 155 | +<em>Proc. of the ICRA 2010 Workshop on Best Practice in 3D Perception and Modeling for Mobile Manipulation</em>, 2010. |
| 156 | +Software available at <a href="http://octomap.sf.net/">http://octomap.sf.net/</a>. |
| 157 | +</p> |
| 158 | +<p>BibTeX:</p> |
| 159 | +<pre>@inproceedings{octomap, |
| 160 | + author = {K. M. Wurm and A. Hornung and |
| 161 | + M. Bennewitz and C. Stachniss and W. Burgard}, |
| 162 | + title = {{OctoMap}: A Probabilistic, Flexible, and Compact {3D} Map |
| 163 | + Representation for Robotic Systems}, |
| 164 | + booktitle = {Proc. of the ICRA 2010 Workshop on Best Practice in |
| 165 | + 3D Perception and Modeling for Mobile Manipulation}, |
| 166 | + year = 2010, |
| 167 | + month = may, |
| 168 | + address = {Anchorage, AK, USA}, |
| 169 | + url = {http://octomap.sf.net/}, |
| 170 | + note = {Software available at \url{http://octomap.sf.net/}} |
| 171 | +}</pre> |
| 172 | + |
| 173 | + |
| 174 | + |
| 175 | +<h2>Installation</h2> |
| 176 | +<h3>Download</h3> |
| 177 | + |
| 178 | +<p> |
| 179 | +Download a |
| 180 | +<a href="http://sourceforge.net/project/platformdownload.php?group_id=277757">the latest released distribution package</a>, |
| 181 | +or check out the latest development version from our svn repository with: |
| 182 | +</p> |
| 183 | +<pre> |
| 184 | +svn co https://octomap.svn.sourceforge.net/svnroot/octomap/trunk octomap |
| 185 | +</pre> |
| 186 | +<p>Older releases are available from the <a href="http://sourceforge.net/projects/octomap/files/">Sourceforge download page</a> or at the SVN URL <a href="https://octomap.svn.sourceforge.net/svnroot/octomap/tags/">https://octomap.svn.sourceforge.net/svnroot/octomap/tags/</a>. |
| 187 | + |
| 188 | +</p> |
| 189 | +<p> |
| 190 | +If you want to use OctoMap in the <a href="http://www.ros.org">Robot |
| 191 | +Operating System (ROS)</a>, see the <a href="http://www.ros.org/wiki/octomap" >documentation on the ROS wiki</a> and the <a href="http://www.ros.org/wiki/octomap_mapping" ><strong>octomap_mapping</strong> stack</a> for map building. Pre-compiled packages for most platforms are already available and directly integrated. |
| 192 | +</p> |
| 193 | + |
| 194 | +<h3>Compilation</h3> |
| 195 | +<p>To build the OctoMap libraries, you need a current version of GCC (tested with |
| 196 | +4.3 - 4.6 under Ubuntu 9.04 - 12.04, 32 and 64 Bit) and cmake. The 3D viewer application |
| 197 | +requires Qt4 and OpenGL, and is based on <a href="http://www.libqglviewer.com/">libQGLViewer</a>. |
| 198 | +You can either install libQGLViewer as a system-wide package |
| 199 | +(libqglviewer-qt4-dev in Ubuntu), or use the version we provide in the |
| 200 | +"external" directory. If the CMake compilation can't find an installed qglviewer, |
| 201 | +it will automatically compile our supplied version and link against it. |
| 202 | +For building the GUI, you need to make sure that qmake for Qt4 is used (<tt>qmake -v</tt>). |
| 203 | +If yours is set to Qt3 in Ubuntu, you can change it to qmake-qt4 by running |
| 204 | +<tt>sudo update-alternatives --config qmake</tt> after installing the dependencies |
| 205 | +below. |
| 206 | +</p> |
| 207 | + |
| 208 | +<p> |
| 209 | +All dependencies for the library and viewer on Ubuntu can be met by running: |
| 210 | +</p> |
| 211 | +<pre>sudo apt-get install build-essential cmake doxygen libqt4-dev \ |
| 212 | + libqt4-opengl-dev libqglviewer-qt4-dev</pre> |
| 213 | + |
| 214 | +<p>Build the complete project by changing into the "build" directory |
| 215 | +and running cmake: |
| 216 | +</p> |
| 217 | +<pre>cmake ..</pre> |
| 218 | +<p> |
| 219 | +Type <tt>make</tt> to compile afterwards. This will create all CMake |
| 220 | +files cleanly in the "build" folder (<em>Out-of-source build</em>). |
| 221 | +Executables will end up in "bin", libraries in "lib". You can also build |
| 222 | +the library and viewer separately, just have a look at the enclosed README.txt |
| 223 | +for details. |
| 224 | +</p> |
| 225 | +<p> |
| 226 | +A debug configuration can be created by running: |
| 227 | +</p> |
| 228 | +<pre>cmake -DCMAKE_BUILD_TYPE=Debug .. </pre> |
| 229 | +<p> |
| 230 | +in "build" or a different directory (e.g. "build-debug"). |
| 231 | +</p> |
| 232 | +<p> |
| 233 | +After compiling, you can verify that all is working as expected by running our units tests with <tt>make test</tt>.</p> |
| 234 | +<h3>Getting started</h3> |
| 235 | +<p>Jump right in and have a look at the example <strong>src/octomap/simple.cpp</strong> |
| 236 | +or start the 3D viewer <strong>bin/octovis</strong>. |
| 237 | + |
| 238 | +You will find an example scan to load at <strong>src/examples/scan.dat.bz2</strong> |
| 239 | +(please bunzip2 it first). The Maps section below contains some finished |
| 240 | +real-world maps to look at. |
| 241 | + |
| 242 | +<h3>Documentation</h3> |
| 243 | +<p> |
| 244 | +A thorough auto-generated doxygen documentation of the API for the latest release is available at |
| 245 | +<a href="http://octomap.sourceforge.net/doxygen/">http://octomap.sourceforge.net/doxygen/</a>. |
| 246 | +Depending on your version, this may be outdated. To generate the documentation |
| 247 | +corresponding to you local version of OctoMap, type <tt>make docs</tt> in the build directory |
| 248 | + (requires <a href="http://www.doxygen.org/">doxygen</a>). Just open <strong>doc/html/index.html</strong> with |
| 249 | +a web browser to read it. |
| 250 | +</p> |
| 251 | + |
| 252 | +<h2>Maps</h2> |
| 253 | +<p> |
| 254 | +Take a look at some of our example maps below. You can find these and more datasets in our <a href="http://ais.informatik.uni-freiburg.de/projects/datasets/octomap/">dataset repository</a> as finished OctoMap files and sources in the form of 3D laser scans. |
| 255 | +</p> |
| 256 | +<div style="float:left"><div style="font-size:10pt">Freiburg campus (outdoor)</div> |
| 257 | +<a href="freiburg_outdoor_big.png"><img src="freiburg_outdoor.png" alt="Freiburg outdoor 3D map"></a> |
| 258 | +</div> |
| 259 | +<div style="float:left"><div style="font-size:10pt">Freiburg building 079 (corridor)</div> |
| 260 | +<a href="freiburg_079_big.png"><img src="freiburg_079.png" alt="Freiburg Geb. 079 indoor 3D map"></a> |
| 261 | +</div> |
| 262 | +<div style="float:left"><div style="font-size:10pt">New College (Epoch C)</div> |
| 263 | +<a href="newcol_big.png"><img src="newcol.png" alt="New College dataset 3D map "></a> |
| 264 | +</div> |
| 265 | + |
| 266 | +<h2 style="clear:both">Importing Data</h2> |
| 267 | +<h3>Laser Scan Data</h3> |
| 268 | +<p>Plain-text laser scan data can be imported from the following file format: |
| 269 | +</p> |
| 270 | +<pre> |
| 271 | +NODE x y z roll pitch yaw |
| 272 | +x y z |
| 273 | +x y z |
| 274 | +[...] |
| 275 | +NODE x y z roll pitch yaw |
| 276 | +x y z |
| 277 | +[...] |
| 278 | +</pre> |
| 279 | +<p> |
| 280 | +The keyword <tt>NODE</tt> is followed by the 6D pose of the laser origin of the 3D scan |
| 281 | +(roll, pitch, and yaw angles are around the axes x, y, z respectively). |
| 282 | +After a <tt>NODE</tt>-line, the laser endpoints of the scan originating at that |
| 283 | +scan node are listed as 3D points, in the coordinate frame of the scan node. |
| 284 | +The next <tt>NODE</tt> keyword specifies the start of a new 3D scan. |
| 285 | +Lines starting with '#' or empty lines are ignored. |
| 286 | +</p> |
| 287 | +<p> |
| 288 | +Our tool "log2graph" converts these plain-text log files into a binary scan graph |
| 289 | +file, which can be directly opened and converted in the viewer "octovis", or |
| 290 | +converted to an octree map from the command line with "graph2tree". |
| 291 | +</p> |
| 292 | + |
| 293 | +<h3>3D model files</h3> |
| 294 | +<p> |
| 295 | +You can directly create an OctoMap file from a variety of 3D file formats (3DS, VRML, OBJ ...) |
| 296 | +by first voxelizing them with <a href="http://www.cs.princeton.edu/~min/binvox">binvox</a>. |
| 297 | +For convenience, we provide the binvox Linux binary in <strong>src/extern/binvox</strong>. |
| 298 | +</p> |
| 299 | +<p> |
| 300 | +After converting your 3D data to a binvox file, you can create an Octree map from it |
| 301 | +by running our tool "binvox2bt". |
| 302 | +</p> |
| 303 | + |
| 304 | +<h2>Acknowledgments</h2> |
| 305 | +<p>OctoMap was developed at University of Freiburg in the DFG-funded |
| 306 | +<a href="http://www.sfbtr8.uni-bremen.de/">SFB/TR8 Spatial Cognition</a> within the |
| 307 | +projects A3-[MultiBot] and A8-[HumanoidSpace].</p> |
| 308 | +<p> |
| 309 | +<img src="unilogo_100.png" alt="Logo Uni Freiburg"> <img src="sfbtr8.png" alt="Logo SFBTR8"> <img src="dfg.png" alt="Logo DFG"> |
| 310 | +</p> |
| 311 | +</div> |
| 312 | +<p> |
| 313 | + <a href="http://validator.w3.org/check?uri=referer"><img |
| 314 | + src="http://www.w3.org/Icons/valid-html401" |
| 315 | + alt="Valid HTML 4.01 Transitional" height="31" width="88"></a> |
| 316 | + </p> |
| 317 | + |
| 318 | +</body></html> |
0 commit comments