RRT*

尽管RRT算法是一个相对高效率,同时可以较好的处理带有非完整约束的路径规划问题的算法,并且在很多方面有很大的优势,但是RRT算法并不能保证所得出的可行路径是相对优化的。因此许多关于RRT算法的改进也致力于解决路径优化的问题,RRT*算法就是其中一个。RRT*算法的主要特征是能快速的找出初始路径,之后随着采样点的增加,不断地进行优化直到找到目标点或者达到设定的最大循环次数。RRT*算法是渐进优化的,也就是随着迭代次数的增加,得出的路径是越来越优化的,而且永远不可能在有限的时间中得出最优的路径。因此换句话说,要想得出相对满意的优化路径,是需要一定的运算时间的。所以RRT*算法的收敛时间是一个比较突出的研究问题。但不可否认的是,RRT*算法计算出的路径的代价相比RRT来说减小了不少。

RRT*算法与RRT算法的区别主要在于两个针对新节点 x_{new} 的重计算过程,分别为:

  • 重新为 x_{new} 选择父节点的过程。
  • x_{new}的近邻节点重布线

RRT*算法的核心在于上述的两个过程:重新选择父节点和重布线。这两个过程相辅相成,重新选择父节点使新生成的节点路径代价尽可能小,重布线使得生成新节点后的随机树减少冗余通路,减小路径代价。

 

重选父节点标准: 在新产生的节点 x_{new} 附近以定义的半径范围内寻找“近邻”,作为替换 x_{new} 父节点的备选。依次计算“近邻”节点到起点的路径代价加上 x_{new} 到每个“近邻”的路径代价,具体过程见图一。

 

rewire标准:在为x_{new} 重新选择父节点之后,为进一步使得随机树节点间连接的代价尽量小,为随机树进行重新布线。过程示意如图4重布线的过程也可以被表述成:如果近邻节点的父节点改为 x_{new} 可以减小路径代价,则进行更改。如图二

 

 

算法流程:

 

 

 

 

详细解释         详细解释      

详细解释          RRT及其改进

简要介绍

ROS实现

 matlab实现

posted @ 2021-09-29 09:27  星火-AI  阅读(212)  评论(0编辑  收藏  举报