Octomap
Github: https://github.com/OctoMap/octomap.git
Official: http://octomap.github.io/
API 文档:http://octomap.github.io/octomap/doc/
SLAM拾萃(1):octomap: https://www.cnblogs.com/gaoxiang12/p/5041142.html
gaoxiang12/octomap_tutor: https://github.com/gaoxiang12/octomap_tutor
Compilation and Installation of OctoMap: https://github.com/OctoMap/octomap/wiki/Compilation-and-Installation-of-OctoMap
Run
Example:
bin/octovis octomap/share/data/geb079.bt
.ot for color octree
OctoMap in ROS
Install:
sudo apt-get install ros-kinetic-octomap
CMakeLists.txt
find_package(octomap REQUIRED)
include_directories(${OCTOMAP_INCLUDE_DIRS})
target_link_libraries(${OCTOMAP_LIBRARIES})
(Add link_directories(${OCTOMAP_LIBRARY_DIRS}) only if required - usually it's not needed).
Finally, add to your package.xml:
<build_depend>octomap</build_depend>
<run_depend>octomap</run_depend>
Paper
Paper: OctoMap: An Efficient Probabilistic 3D Mapping Framework Based on Octrees
Good Blogs
- Octomap使用总结, CSDN - DJ_Dreamaker
由于log-odd与概率值之间可以相互转化,因此在工程实现时octomap八叉树节点类OcTreeNode存储的数值是log-odd数值,并不是概率值。
这里简单的提一下Octomap工程实现时与八叉树节点概率更新相关的几个重要参数设置函数。
setProHit/setProMiss。这两个函数决定了inverse sensor model的log-odd概率更新的具体参数,默认情况下占据三维体元被击中(Hit)的概率值为0.7对应的log-odd为0.85,空闲体元被穿越(traverse)的概率值为0.4对应的log-odd为-0.4。可以调用getProHit/getProHitLog、getProMiss/getProMissLog查看默认的参数设定。
setClampingThresMax/setClampingThresMin。这两个函数决定了一个体元执行log-odd更新的阈值范围。也就是说某一个占据体元的概率值爬升到0.97(对应的log-odd为3.5)或者空闲体元的概率值下降到0.12(对应的log-odd为-2)便不再进行logodd更新计算。可以调用getClampingThresMax/getClampingThresMaxLog、getClampingThresMin/getClampingThresMinLog查看默认的参数设定。
setOccupancyThres。这个函数定义了octomap判定某一个体元属于占据状态的阈值(isNodeOccupied函数),默认是0.5,一般情况下我们将其设定为0.7。