因为阶段学习需要,本篇先了解一个建图工具octomap的相关内容。
1.octomap是什么
RGBD SLAM的目的有两个:估计机器人的轨迹,并建立正确的地图。octomap以八叉树(octotree)的形式存储地图,相比点云,能够省下极大空间。点云地图提供了太多不必要的细节,占据大量存储空间,且在导航时无法提供“能否通过”的判断信息。
octomap建立的地图大概是这样子的:(从左到右是不同的分辨率)
它的地图像是很多个小方块组成的。分辨率较高时,方块很小;分辨率较低时,方块很大。每个方块表示该格被占据的概率。因此可以查询某个方块或点“是否可以通过”,从而实现不同层次的导航。简而言之,环境较大时采用较低分辨率,而较精细的导航可采用较高分辨率。
2.octomap的原理(数学表达)
2.1八叉树的表达
八叉树即是有八个子节点的树,八块示意图如下图所示。实际的数据结构就是一个树根不断往下扩展,每分8个小枝,直到叶子为止。叶子节点代表了分辨率最高的情况。如分辨率为0.01cm,则每个叶子就是1cm见方的小方块。