RRT/RRT*-学习记录

RRT/RRT*-学习记录

  • 0.相关基本概念
  • 1.Probabilistic Rode Map:概率路图
  • 2.Rapidly-exploring Random Tree:快速搜索随机树
  • 3.RRT*
  • 4.Kinodynamic-RRT*
  • 5.Informed RRT*
  • 6.参考引用

0.相关基本概念

C-Space:机器人运动空间。
Complete Planner:在一定时间内,规划器总能找到一条从起点到终点的路径。
Probabilistic Complete Planner(概率完备):如果一个解存在,用基于采样的方法最终能够找到这个解。
Resolution Complete Planner:与概率完备的区别在于:采样更加确定,局限在确定的网格内。

1.Probabilistic Rode Map:概率路图

PRM:一种基于采样的路径规划方式,一种图结构,分为学习阶段(随机撒点,也可均匀撒点,然后剔除落在障碍物区域的点,把随机撒的点相近的点用线连起来,只连collision free的点)和查询阶段(在简化的图上进行路径搜索,可以用Dijkstra或者Astar)。
优点:概率完备,高效。
缺点:需要解决边界值问题(两点之间的线段是否是collision free),还要判断两点之间的连线是不是适合机器人行走,不够有效率(算法过于冗长,没有把找一条路径放在心上)。
改进:lazy collision checking->撒点之后,不删除撒在障碍物上的点,把所有点连起来,然后就开始规划路径,规划完之后如果有路径经过障碍物,则把经过障碍物的那部分路径去掉,然后构成一个新的图,然后在新的图上进行路径规划。

2.Rapidly-exploring Random Tree:快速搜索随机树

伪代码RRT/RRT*-学习记录_第1张图片

优点:找路径更有针对性,速度也很快。
缺点:找到的不是一条最短路径,而且对机器人控制来说也不是一条最优的路径,相对来说可能也不够高效(比如对于narrow passage情况,之所以会复杂,是因为很少有点采样到narrow passage这个空间里面去)。
改进空间:使用kd-tree,提高搜索效率;使用bidirectional RRT(also named RRT connect),起始点和目标点同时构建树,当两棵树上的点有重合时(即撒一次点,实现对两棵树的构建),就找到路径,而且使用这种方法对于改善在narrow passage情况下的路径搜索有很大提升。
RRT/RRT*-学习记录_第2张图片

3.RRT*

A)伪代码
RRT/RRT*-学习记录_第3张图片
B)与RRT的不同之处
在产生一个Xnew之后,会在Xnew周围一定半径之内找到相邻的节点,如上图的Xnear、X1、X2(RRT是直接把Xnear当作父节点),然后把三个点都和Xnew连接起来,然后计算Xnew到这三个点的Cost哪一个最小(这个Cost Function可以是路径最短,或者其他规则),从图中可以看出,Xnear到Xnew的路径最短,所以选择Xnear作为父节点,将两点连接起来;
RRT/RRT*-学习记录_第4张图片
接下来进行rewire,比较X1->Xnew->Xnear->Xinit的长度和X1->Xnear->Xinit,如果X1->Xnew->Xnear->Xinit更短,就更新路径,将X1的父节点更新成Xnew;然后也比较X2->Xnew->Xnear->Xinit的长度和X2->X1->Xnear->Xinit,明显X2->Xnew->Xnear->Xinit更短,更新路径,将X2的父节点更新为Xnew;
RRT/RRT*-学习记录_第5张图片

4.Kinodynamic-RRT*

与RRT*区别:点和点之间不是直线连接的,是更符合机器人运动学约束的曲线。
RRT/RRT*-学习记录_第6张图片

5.Informed RRT*

为什么要改进?:在RRT* 找到一条路径之后,如果还是在地图里进行随机撒点采样去优化路径,明显会撒很多不不相干的点,降低效率。
改进方向:在RRT*找到一条路径之后,在路径周围一定限制的一个椭圆内进行撒点,从而去优化得到的路径,提高效率。RRT/RRT*-学习记录_第7张图片

6.参考引用

图片来源:深蓝学院<<移动机器人运动规划>>

你可能感兴趣的:(路径规划算法,算法,自动驾驶)