是针对性地去解决RRT当中路径不是最优的情况
综上,就完成了一次ChooseParent,AddNodEdge的过程。
RRT Star更为突出的特色,就是结尾处的这个rewire()函数,帮助其修改连接过程,使得路径更优化。
举个例子:
在图中,X1到起始节点有两条路径可以选择,一条是红色的一条是蓝色的,当选红色的路径时,X1的父节点是X_near;当选蓝色的路径时,X1的父节点是X_new。通过计算两条路的Cost可知,红色的Cost<蓝色的Cost,此时就不进行Rewire操作,继续保持原有的红色路径行进。
在图中,X2到起始节点有两条路径可以选择,一条是红色的一条是蓝色的,当选红色的路径时,X2的父节点是X1;当选蓝色的路径时,X2的父节点是X_new。通过计算两条路的Cost可知,红色的Cost>蓝色的Cost,此时就进行Rewire操作,更改X2的父节点为X_new,走蓝色的路径,如下图所示。
rewire过程不断迭代,从而使得路径不断优化。
RRT Star在找到一条路径的时候并不会停止,而是会继续进行寻找,直到找到最优的路径为止。
这也是为什么RRT Star可以找到最优化路径的原因。
之前说过了未优化的RRT,由线段连接成的路径不光滑,在运动学上是接受的,但是现实当中不太适合机器人去执行,之前的RRT也没解决这个问题,有的研究者就提出了Kinodynamic-RRT来解决这个问题。
之前的步骤与RRT Star都是一样,最主要的是如何连接X_near与X_new,在RRT以及RRT Star当中,直接用直线进行连接;而Kinodynamic是找符合机器人约束的曲线作为路径,下图是两algorithm的效果图。
上图左边,RRT* 类的算法,找到了X_new,下意识的进行直线连接,但是直线穿过了障碍物,只能舍去,但是运用了Kinodynamic-RRT* ,就会有一条平滑的路径,绕过了障碍物。
Kinodynamic-RRT* 演示
Kinodynamic-RRT* 相关资料
当通过树找到了路径,机器人就会沿着树往前走,当机器人往前走的过程中,这个树还是实时的在构建,实时的在更新,在寻找路径,做了一个实时更新的过程。
Anytime-RRT Star的要义就是,将自己的起始点进行实时更新,最初的起始点就是起始点,每走一步起始点就变成了当前点。
相比于之前的RRT,就是先规划出一条,很死板,固定死了,Anytime-RRT* 能更好的去适应环境变化大的情况。
Anytime-RRT* 相关资料
前面也说了,RRT是在一个Space当中均匀的进行撒点,然后不断优化路径,但是这样工作量很大,而且浪费也高,这下研究者就提出了Informed RRT Star,将采样的范围限定成了椭圆。只需要在有用的区域进行撒点。
以路径的常数来作为椭圆方程中的常数,这就是为什么椭圆越来越扁的原因。
这样采样的范围就会快速收缩,越来越快得到最优的路径。
Informed RRT* 相关资料
轨迹生成后,就在各个节点周围进行采样,每个圈都是一个高斯采样,不断进行路径优化,就会得到后面的几条路径。
CEMP流程
除此之外,还有很多Advanced Sampling Based Algorithm,欢迎评论区交流。