0. 论文链接
1. 论文概要
- 提出一个生成3D环境模型,映射方法基于 八叉树 ,使用 概率估计
- 提出一种 八叉树 压缩算法,以保证三维模型的紧凑
- 三个重要的要求
- 概率表示
- 未映射区域的建模
- 效率
2. 方法对比
- 立方体网格(体素)法:
- 缺点就是内存需求大,非常大
- 点云方法:
- 既不模拟自由空间,也不模拟未知区域,不能直接处理传感器噪声和动态对象
- 仅适用于静态环境中的高精度传感器,且不需表示位置区域
- 内存消耗无上限
-
2.5D地图:
- 不以体积表示环境,地图不表示实际环境
- 在改进后也需要预先知道地图范围,更新更加复杂并且没有多分辨能力
- 后续的映射不能更新细分现有卷,导致模型不正确
- 八叉树:
- 延迟了映射卷的初始化,直到需要集成测量为止
- 该论文提出的方法解决了 映射压缩或映射中的有节置信度的问题
3. 具体内容框架
3.1 八叉树
- 八叉树中的每个节点表示立方体卷中包含的空间,即体素
-
递归细分改卷为八个子卷,直到到达给定的最小的体素大小
-
布尔设置:
- 任何未初始化的节点都可以是空闲的或未知的
-
若这个卷被占用时,八叉树中的对应节点开始被初始化
- 明确所有的自由卷
-
紧凑操作
-
如果节点中的所有子节点具有相同的状态,则可以对于其进行修剪,减少需要维护的树中的节点数
-
数据访问的复杂度方面
-
限定八叉树的最大深度 D_{max} , 则随机节点的查找复杂度为常数
3.2 概率建模
- 设置阈值,当达阈值时,认为体素被占用,否则认为其为自由的
利用钳位更新的策略定义占用概率的上下限
-
多种分辨率查询
对内部节点实现多分辨率查询。当遍历到一个给定深度(非叶节点深度)时,对其进行更粗略的分割
3.3 八叉树压缩
- 原因:传感器噪声和离散化误差可能导致不同的概率,从而干扰依赖于相同节点信息的压缩方案
- 解决方法:钳位更新,每当体素的log-odds 值达到 l_{min},l_{max} ,即视为节点在方法中时稳定的
4. 实现细节
4.1 高效内存的实现
-
节点位置及其踢死大小可以再遍历八叉树的时候重建,所以不显式存储该信息
-
每个节点使用一个指向八个指针的数组的子指针
-
只有当节点确实有节点并且不为叶节点分配时,才分配这个数组
4.2 地图文件生成
- 将八叉树中的各个状态递归地编码成为紧凑的比特流中(叶子节点不必添加,可以在解码过程中重构)
- 每一行具有对应于根节点上行的节点。
5. 实验结果
6.个人观点
6.1 创新点
- 运用了压缩剪枝的方法,减少了内存的使用
- 支持多分辨率映射查询
- 使用钳位更新来压缩八叉树
- 八叉树映射为比特流来减少内存
6.2 不足之处
- 在传感器接收到较少的光束时,限制传感器范围没有明显的加速
- 在映射置信度和压缩之间存在权衡
0 条评论