论文《Frontier Based Exploration for Autonomous Robot》
1
文章的重点时实现波前边界检测,在实时构建的地图上搜索边界,并通过一个规划算法引导机器人移动到最近的边界,直至创建整个环境。
一些概念:
Unknown Region:
Known Region:
Open-Space:不包含障碍物的已知区域。
Occupied-Space:包含障碍物的已知区域。
Occupancy Grid:
Frontier:已知区域与未知区域的交界。边界是一组未知区域点,每个点都包含Open-Space邻域点。
2
边界检测算法基于广度优先策略。首先在整个网格上运行BFS搜索,并将边界点添加到一个队列中。然后再边界点上运行第二个BFS搜索以获得最终边界(边界是连续的,是由边界点连接而成)。
边界按照与机器人当前位置的欧氏距离的递增顺序排列在队列中。因此,该算法引导机器人移动到最近的边界。
3
算法是在frontier-based exploration【1】上改进的,称为Wavefront Frontier Detector (WFD) 波前边界检测算法。WFD与原来的方法相似,基于两个嵌套的广度优先搜索。WFD算法相对于原始算法的主要优点是,它只扫描占用网格的已知区域,而不是在算法每次运行时扫描整个网格的原始方法。WFD方法是有效的,因为边界永远不会出现在未知区域。这一关键差异显著降低了算法的时间复杂度。为了确保每次调用算法时只扫描已知区域,WFD使用四种可能的指示之一对点进行分类:
Map-Open-List: 第一层BFS 队列中的点
Map-Close-List: 第一层BFS已经处理过的点
Frontier-Open-List: 第二层BFS 队列中的点
Frontier-Close-List: 第二次BFS处理过的点
代码:https://github.com/tpepels/turtlebot_slam
代码未能成功复现,但逻辑比较清晰.