微立顶科技

新闻资讯

创新 服务 价值

  Rapidly Exploring Random Tree (RRT) and RRT*

发布日期:2022/9/3 23:59:06      浏览量:

什么是RRT算法?

根据RRT的提出者 Steve LaValle的描述, RRT是用来做motion planning。对于机器人,给定一个初始状态qinitqinit,和一个活动区域CC,我们可以建立一个树状结构GG来探索如何在CC中活动,并最终到达目的地。

它具有以下几个属性:

  • single-query planning algorithm
  • probabilistically complete

假设当前共有个KK顶点(vertex)。那么RRT可以表示为以下流程

BUILD_RRT(qinit,K,Δqqinit,K,Δq)
1 G.init(qinit);
2 for k = 1 to K
qrand←qrand←RAND_CONF();
qnear←qnear←NEAREST_VERTEX(qrand,G);
qnew←qnew←NEW_CONF(qnear,Δq)(qnear,Δq);
6 G.add_vertex(qnew);
7 G.add_edge(qnear,qnew);
8 End
9 Return G

这里有几个很有技巧的步骤:

  • 第3步中随机地选了一个新的状态,这个状态很可能是无法到达的,比如随机数选取到了墙壁中的一个点,所以需要一个算法来排除这些无法到达的点。
  • 第4步中找了现有树上离随机点最近的点,所以需要定义在上的距离函数,用这个函数来决定哪个点最近。对于二维或三维的欧式空间距离函数可以用欧式空间距离表示,但是对于高维,尤其是configuration space,这个时候并没有直观的距离函数。
  • 第5步中把沿着的方向移动了。同样如何选取,以及如何定义“方向”,都有特殊的技巧。

大家使用RRT的原因,很多时候是因为机器人只能知晓自己周围一定距离内的信息,或者是机器人只能分段设计自己的行为,而无法一次直接找出到目的地的路线。所以机器人把整个问题分成了在短距离内,一次只设计一小段路径,最后把这些路径连起来就得到了到达目的地的路径。

RRT的应用场合非常多,在无人车上,或者一个机械臂需要在有障碍物的环境中运动时,RRT都是常用算法。

RRT有很多变形。比如可以想象如果空间CC的维度特别高,那么第三步中的随机抽样需要进行非常多次才能覆盖整个空间。所以有人考虑把高维空间投影到低维来取样。另外RRT不保证找到的路径是最优的,所以Sertac Karaman提出了RRT*,可以保证趋近于最优解。

参考:

参考

  • 《Principles of Robot Motion: Theory, Algorithms and Implementations》7.2.2 Rapidly-Exploring Random Trees


  业务实施流程

需求调研 →

团队组建和动员 →

数据初始化 →

调试完善 →

解决方案和选型 →

硬件网络部署 →

系统部署试运行 →

系统正式上线 →

合作协议

系统开发/整合

制作文档和员工培训

售后服务

马上咨询: 如果您有业务方面的问题或者需求,欢迎您咨询!我们带来的不仅仅是技术,还有行业经验积累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     联系人:石先生/雷先生