【规划】RRT Planer 以及 python实现

本文深入探讨了RRT(快速搜索随机树)路径规划算法,一种广泛应用于机器人领域的高效解决方案。RRT算法通过随机采样和碰撞检测,能够在高维空间和复杂环境中快速寻找路径,特别适用于多自由度机器人在动态环境中的应用。文章还介绍了RRT的Python实现及双向RRT算法,后者通过同时从起点和终点扩展树,显著提高了搜索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转载自头条号作者半杯茶的小酒杯,百度的研发工程师,文章多是自动驾驶相关,推介给大家。

RRT Planer

快速搜索随机树(RRT-Rapidly-ExploringRandom Trees)是一种常见的用于机器人路径规划的方法,他的原始算法思想很简单,以一个初始点作为根节点,通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点包含了目标点或进入了目标区域,便可以在随机树中找到一条由从初始点到目标点的路径。

相对于其它传统的路径规划算法,RRT通过对状态空间中的采样点进行碰撞检测,避免了对空间的建模,能够有效地解决高维空间和复杂约束的路径规划问题。该方法能够快速有效地搜索高维空间,通过状态空间的随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径,适合解决多自由度机器人在复杂环境下和动态环境中的路径规划。

 RRT算法伪代码

1.初始化起始点。比如设置机器人所在的位置为初始点;

2.随机生成目标点,遍历T,如果通过T能到达目标点,则路径搜索成功,扩展结束;否则继续扩展T;

3.挑选随机点到目标点最近的一个为Xnear;

4.沿着Xrand到Xnear的方向生长一段距离,生成一个新的节点Xnew;

5.判断Xnew进行碰撞检测,如果状态非法,则本次生长结束;否则,将新的状态添加到T;

6.返回树结构。

RRT算法实现-Python版本

Bidirectional RRT Planer

从初始状态点和目标状态点同时生长两棵快速扩展随机树来搜索状态空间,效率会更高。为此,基于双向扩展平衡的连结型Bidirectional RRT算法被提出。

Bidirectional RRT算法伪代码

Bidirectional RRT算法同时从起点和终点建立扩展树,然后采样随机点进行扩展。在每一次迭代中,扩展完第一棵树的新节点q(new)后,以这个新目标点作为第二棵树的扩展方向,如果没有碰撞,继续往相同的方向扩展,直到扩展失败或者′()=()。

在迭代的过程中也同时考虑了两棵树的平衡性,即选择两棵树节点少的作为扩展的目标。Bidirectional RRT的这些属性使得它相对于原始的RRT算法,搜索效率有了大大提升;其次两棵树不断向着对方交替扩展,这种带有启发性的扩展使得树的扩展使得搜索区域可以逃离各自的约束区域,从而更快的实现算法收敛。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值