Frontier Detection and Reachability Analysis for Efficient 2D Graph-SLAM Based Active Exploration

介绍

该文的工作:
1、基于Cartographer设计边界检测算法,其中的改进为没有评估所有的子图,而是只选择那些经过图优化后位姿变化大于一定阈值的子图,减少了计算量。
2、分析并改进边界的可达性,提出一种聚类方法,将密集的边界聚类作为导航点来获取可达的导航点,从而避免了导航点不可达可能导致的路径规划无效问题。

准备

A.定义

占据概率标记:每个栅格单元的先验概率为0.5
则当概率=0.5,栅格状态未知;
概率>0.5,栅格为占据;
概率<0.5,栅格为自由。

边界:与至少一个未知网格相邻的所有自由网格的集合。如图2(a)所示,红点为WFD在子地图上检测到的局部边界。

子图:由几个连续的激光扫描组成的小型占用网格地图,每个子图中包含的激光扫描位姿和边界点存储在相对于子图的局部坐标系中。【如图2(a)所示,展示了由几个连续的激光扫描组成的子图。】

全局图:一种融合占用网格图,根据图优化得到的相对位姿将所有子图连接起来,由于每次优化后子映射之间的相对位姿都会发生变化,因此每次优化后都需要重新生成全局映射。【查询两个子地图的所有局部边界点后,得到全局地图的全局边界点,如图2(c )所示】

刺入查询:一项用来评估当地边界是否属于全局边界的操作,当且仅当局部边界点在所有几何共对子图中属于边界或未知状态时,将其视为全局边界点。如图2(b)所示,展示了如何进行刺入查询。【根据这两个子图在世界坐标系中的位姿,可以计算出子图1中每个局部边界点在子图2中的对应位置。如果子地图1中的局部边界点仍然是子地图2中的局部边界点或未知点,则认为该边界点是全局边界点(例如,全局地图仅由两个子地图组成)。否则,表示该边界点在子映射2中被遮挡。对子地图2中的局部边界点执行相同的查询操作。】

B.Cartographer

它构建子图,并优化所有扫描和子图遵循稀疏位姿调整;并且图优化只优化子图之间的相对位姿,而不改变子图内部激光扫描的相对位姿。本文将地图分辨率设置为5cm,每个子地图容纳70个激光扫描。

C.密集边界检测

DFD算法为在子图中实时密集检测边界,这些局部边界不受图优化的影响。然后在每次图优化后,对所有子图的局部边界执行刺入查询。为了加快查询速度,刺入查询只检查边界框彼此相交的子图。

本文方法

A.边界可达性

首先将子地图展开,然后使用WFD来检测其边界,这一举措目的在于检测可达边界,子地图上的膨胀操作确保了机器人能够到达被探测的边界;扩展半径应超过机器人平台的半径,以确保探测到的边界可达;因此,本文设置了额外的安全距离,以避免碰撞。由于使用的机器人平台半径为20cm,并且本文希望机器人总是与障碍物保持20cm的距离,所以将膨胀半径设为8格(40cm);

B. 边界检测

DFD算法对全部的子图进行边界检测,但该文只对那些由于优化而产生显著偏差的子地图执行边界检测。

算法1:

PP:优化前子图位姿 CP:优化后子图位姿
PF:优化前子图边界 CF:优化后子图边界
下标i表示第i个子图,并将每个子图的边界框保存为:
global_submap_bounding_box
在第3行中,针对任意的子图N,global_submap_bounding_boxes,Intersect(N)根据保存的子图边界框,查找所有与N相交的子图,从最新插入的子图、N执行BFS,并搜索所有与N相交的子图。
如果这些选定的子图的姿态变化超过阈值,我们将这些子图推入BFS队列和插入查询队列(第1-9行)。
CPi和PPi给出了它们的三个参数x、y和θ(第4行)。
而当
在这里插入图片描述
时,DeviationExceedsThreshold(CPi,PPi,ε)为True;
其中R为激光雷达探测距离,本文为8m。
然后对姿态变化超过阈值的子图Si和与Si相交的子图(第10-13行)执行刺入查询;
对于没有超过阈值的子图,使用前面检测到的边界(第14-16行)。由于存储的边界位置是相对于子地图的。因此,可以直接从优化校正的子图中计算出之前检测到的边界坐标,而不引入误差。经验值来说:ε值设置为5cm(1像素)。
但BFS方法只考虑单轮优化引起的位姿变化,而忽略了多轮优化引起的累积位姿变化。
在这里插入图片描述

算法2:

直接记录每一轮优化后所有子地图姿态的累计变化,对累计变化超过阈值的子地图以及与si相交的子地图执行边界检测算法(第1-11行)。
其中CD用于存储所有子图的累积姿态更改。
在第2行,加减分别代表三个参数的加减运算。
在这里插入图片描述
在插入查询之后,将子图的累计姿态更改重置为0(第10行)。
在这里插入图片描述

与DFD方法提出的对所有子地图进行边界检测相比,该文方法根据子地图位姿偏差自适应选择跨度,使得边界检测比DFD方法更加高效灵活。

C. 密集边界聚类为导航点

边界大多是连续的和密集的,对于路径规划或导航目的来说,它们通常是多余的。因此,对检测到的密集边界进行聚类操作,使边界变得稀疏化。这可以减少边界优先级排序的计算负担。机器人可以选择一些具有代表性的聚类点作为探测目标。因此,称这些具有代表性的聚集点为导航点。
大多数活跃的探索方法使用基本的聚类算法。例如,[17]使用Mean-shift算法[22],[23]使用K-Means方法。然而,以往的工作很少注意到现有的聚类方法可能导致无法到达的边界。为了解决这个问题,本文对集群做了两个改进。

1、现有的边界聚类方法没有考虑边界点的连通性,例如Mean-shift错误地将不连通的边界聚为一簇,并将簇的位置设置在障碍物内。因此,检查由Mean-shift生成的每个簇内边界点的连通性。将未知区域和已知区域都设置为连通区域,只有被占用区域才会导致断开(见图5©)。如果所有的边界点都是连通的,那么它们可以聚集成一个点。如果有多个连通区域,则每个连通区域聚为一个点。如图5©所示,致密边界在连通性上正确聚类和稀疏化。这样得到的集群不仅符合人类的直觉,而且便于机器人生成探索路径。

2、不将导航点设置为每个集群的中心(如图5(b)和图6(b)),而是将连通区域内距离机器人最近的边界点设置为连通边界的每个集群的导航点,如图5©和图6©所示。确保导航点的安全性和可达性。
获得导航点后,根据到机器人的距离和点周围未知区域的比例进行排序将导航点的优先级分配给机器人。机器人通过ROS的movebase模块向目标移动。一旦机器人到达目标点,或者从机器人到目标点的路径规划失败,导航点就按照排序后的顺序进行更新。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值