任何人都可以解释rrt如何使用易于理解的简单措辞? 我在网站和维基百科中阅读了这些描述。
我希望看到的是对rrt的简短实现或对以下内容的详尽解释:
为什么rrt向外生长而不是仅仅围绕中心生长非常密集? 它与天真的随机树有什么不同?
我们尝试到达的下一个新顶点如何被选中?
我知道我可以下载一个运动策略库,但在深入研究代码之前我宁愿理解这个想法,而不是相反。
答案 0 :(得分:18)
最简单的RRT算法非常成功,因为它很容易实现。当你:
时,事情会变得复杂伪码
基本算法如下所示:
从空搜索树开始
将您的初始位置(配置)添加到搜索树
,而您的搜索树尚未达到目标(并且您没有时间用完)
3.1。选择一个位置(配置),q_r
,(带一些采样策略)
3.2。在最接近该随机点的搜索树中找到顶点q_n
3.3。如果您可以在没有发生碰撞的情况下链接它们,请尝试在q_n
和q_r
之间的树中添加边(路径)。
虽然这个描述已经足够了,但是在这个空间工作一段时间后,我确实更喜欢Steven LaValle的书“规划算法”中的pseudocode of figure 5.16 on RRT/RDT。
树状结构
树最终覆盖整个搜索空间(在大多数情况下)的原因是由于采样策略的组合,并且总是希望从树中最近的点连接。此效果被描述为减少Voronoi bias。
抽样策略
选择放置下一个要尝试连接的顶点的位置是采样问题。在简单的情况下,搜索是低维的,均匀的随机放置(或偏向目标的均匀随机放置)可以充分发挥作用。在高维问题中,或当运动非常复杂时(当关节有位置,速度和加速度)或配置难以控制时,RRT的采样策略仍然是一个开放的研究领域。
<强>库强>
MSL library是一个很好的起点,如果你真的坚持实施,但它自2003年以来就没有得到积极的维护。更新的库是Open Motion Planning Library (OMPL)。你还需要一个好的碰撞检测库。
规划术语&amp;建议强>
从术语的角度来看,难以理解的是,虽然您在RRT(早期)出版物中看到的许多图表都是二维的(连接2d点的树木),但这是绝对最简单的情况。
通常,需要一种描述复杂物理情境的数学严谨方法。一个很好的例子就是规划一个带有n连杆的机器人手臂。描述这种臂的末端需要最小n
关节角度。用于描述位置的这组最小参数是配置(或某些出版物状态)。单个配置通常表示为q
可以实现的所有可能配置(或其子集)的组合构成配置空间(或状态空间)。这可以像平面中某个点的无界2d平面一样简单,也可以是其他参数范围的极其复杂的组合。