matlab实现rrt算法

这一部分算法强烈推荐两篇博客,尤其是第一篇博客介绍算法的原理非常简单易懂:

https://blog.csdn.net/weixin_43465857/article/details/96451631
https://www.cnblogs.com/long5683/p/11795987.html
https://blog.csdn.net/aoyousihaiqiuqihuang/article/details/100147478

基于快速扩展随机树(RRT / rapidly exploring random tree)的路径规划算法,通过对状态空间中的采样点进行碰撞检测,避免了对空间的建模,能够有效地解决高维空间和复杂约束的路径规划问题。该方法的特点是能够快速有效地搜索高维空间,通过状态空间的随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径,适合解决多自由度机器人在复杂环境下和动态环境中的路径规划。与PRM类似,该方法是概率完备且不最优的。

算法原理在第一篇博客中写的很详细了,这里对里面的内容进行补充一下:
1.产生的随机点不能在障碍物里面,在的话就重新生成,但是随机点和最近的树节点的连线允许穿过障碍物
2.新生的树节点不能在障碍物里面并且新生的“树枝”不能穿过障碍物
3.从终点开始依次回溯父节点(终点找它爸爸,他爸爸找他爷爷,一直找到起点为止)把这些节点按(辈分)顺序提取出来就构成了路径。这一部分的算法我的解决办法是建立一个数组专门存储每个节点的父节点,这样就可以通过查表的形式来找父节点。这在程序中可以看到。
4,第三步后要经过平滑化处理,这一部分在推荐的第三个博客里面


最后的算法结果:

matlab实现rrt算法_第1张图片

其中蓝色为所有的树枝,红色为回溯找到的路径,绿色为经过平滑化处理后的路径。

代码由于太多已上传csdn和网盘。

你可能感兴趣的:(路径规划)