RRT( rapidly exploring random tree)

 RRT特点

传统的路径规划算法有人工势场法、模糊规则法、遗传算法、神经网络、模拟退火算法、蚁群优化算法等。但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度机器人在复杂环境中的规划。基于快速扩展随机树(RRT / rapidly exploring random tree)的路径规划算法,通过对状态空间中的采样点进行碰撞检测,避免了对空间的建模,能够有效地解决高维空间和复杂约束的路径规划问题。该方法的特点是能够快速有效地搜索高维空间,通过状态空间的随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径,适合解决多自由度机器人在复杂环境下和动态环境中的路径规划。与PRM类似,该方法是概率完备且不最优的

其实RRT算法与PRM算法十分类似,都是通过抽样来在已知的地图上建立无向图,进而通过搜索方法寻找相对最优的路径。不同点在于,PRM算法在一开始就通过抽样在地图上构建出完整的无向图,再进行图搜索;而RRT算法则是从某个点出发一边搜索,一边抽样并建图。与PRM算法相同,RRT算法也是概率完备的:只要路径存在,且规划的时间足够长,就一定能确保找到一条路径解。注意“且规划的时间足够长”这一前提条件,说明了如果规划器的参数设置不合理(如搜索次数限制太少、采样点过少等),就可能找不到解。

RRT流程 

1 设定起始点与终点

2 在地图中随机采样(50% 随机,50% 终点),采样到障碍物重新采样

3 寻找路径树中与采样点距离最近的点point_closet,在point_closet与采样点连线方向移动 规定步长 选取point_new,并对point_closet与point_new之间做障碍物检测,有障碍物重新采样。

4 无障碍物将point_new加入到路径树,并将 point_new的父节点设置为point_closet,如果point_new距离终点小于设定阈值,结束搜索

5 回溯寻找路径

 

注: 在寻找新的采样点到最近的树节点时可以采用Kd-Tree的方式

RRT算法深入学习及相关改进

详细解释及python实现         相关工具箱使用方式

详细解释       细解释及matlab实现

RRT Python实现      RRT Python实现

RRT C++实现       RRT C++实现       RRT C++实现

 

本文所有内容仅作笔记之用,所有来源均给出链接

posted @ 2021-09-24 14:49  星火-AI  阅读(1029)  评论(0编辑  收藏  举报