原理:
基本框架
RRT exploration是基于RRT路径规划算法实现的搜索算法。之所以使用RRT算法是因为RRT对于未知区域有着强烈的倾向,在RRT exploration中,RRT主要用于生成边界点,这样对于探索边界点是很有好处的。所谓的边界点就是已经探索过的和未知的区域的交界点,在这里做一个定义:对于所有的区域,如果是探索过的,没有障碍物的区域记为0,有障碍物的记为1,未知的区域记为-1,开始时,整个区域都是记为-1的。
RRT exploration的框架如下图:
可以看到,整个搜索过程是由四个模块构成的:其中局部探测器和全局探测器负责探测边缘点,然后把探测到的边缘点发送给过滤模块,经过过滤后,再把信息传递给任务分配模块,最终指导机器人的行动。下面我们分别看一下各自模块:
局部探测器
局部探测器是用来探测边界点的,它的思路与RRT路径规划的思路大致相同,都是通过树的生长来实现对周围环境的探测,当树枝生长到了未知区域,那么当前点就可以认为是边界点。局部探测的流程如下:
首先初始化初始点,然后在每一次迭代中随机在初始点的周围取一个点作为采样点,记为xrand,由于采样点大概率并不是用于树生长的节点,自然也就不在生长的图G中,所以要通过一个Nearest函数来找到距离当前采样点最近的节点,记为xnear