1.RRT
RRT算法倾向于拓展到开放的未探索区域,只要时间足够,迭代次数足够多,没有不会被探索到的区域。
2.RRT-Connect
RRT-Connect算法:基于RRT搜索空间的盲目性,节点拓展环节缺乏记忆性的缺点,为了提高空间内的搜索速。在RRT算法的基础上加上了两棵树双向抖索的引导策略,并且在生长方式的基础上加上了贪婪策略加快了搜索速度,并且减少了空白区域的无用搜索,节省了搜索时间。
3.RRT*算法
RRT-Connect算法增加了启发式策略,以及贪婪思想,但RRT算法和RRT-Connect算法的共同缺点是,他们的路径都不是最优的,没有添加评价路径长短花费的函数,搜索路径策略都是基于随机采样的搜索。渐进最优的RRT*算法,该算法在原有的RRT算法上,改进了父节点选择的方式,采用代价函数来选取拓展节点领域内最小代价的节点为父节点,同时,每次迭代后都会重新连接现有树上的节点,从而保证计算的复杂度和渐进最优解。(如:基于高斯采样策略的RRT*算法)
4.代码
代码的原地址为:https://github.com/adnanmunawar/matlab-rrt-variants
代码中包含了:RRT-Connect、LazyRRT、RRTextend、RRT*的2D和3D算法
matlab-rrt-variants =================== RRT*, RRT-connect, lazy RRT and RRT extend have been implemented for 2d and 3d c-spaces with visualization #General Information: This is a basic yet meaningful implementation of RRT and its variants in Matlab. #How to run All you need to do is fire up the benchmarkRRT.m file, it is pretty self explanatory. # Specify the number of runs for each planner * num_of_runs =1; # Specify if we want to run the specific planner or not, 1 for yes and 0 for no. * run_RRTconnect =0 or 1; * run_RRTextend = 0 or 1; * run_LazyRRT = 0 or 1; * run_RRTstar = 0 or 1; # Specify whether to run the planner in 2D or 3D (only for now) * dim = 3; # Specify the step size, the world is 100 \* 100 for 2D and 100 \* 100 \*100 for 3D * stepsize = [10]; # Specify whether to use random obstacles or to use pre programmed obstacles * random_world = 0 or 1; # For RRT* only *radius = 10; *samples = 4000; # Showing output or not *show_output = 0 or 1; *show_benchmark_results = 0 or 1;