有人能用简单易懂的话解释一下RRT是如何工作的吗?我已经在该网站和维基百科上看了详细描述。
我希望看到一个简短的RRT实现或对以下内容进行深入解释:
RRT为什么向外扩展而不是只在中心附近密集生长?它与简单的随机树有何不同?
下一个要尝试到达的新顶点是如何选择的?
我知道有一个可以下载的运动策略库,但我更愿意在深入代码之前先理解这个想法,而不是另一种方式。
有人能用简单易懂的话解释一下RRT是如何工作的吗?我已经在该网站和维基百科上看了详细描述。
我希望看到一个简短的RRT实现或对以下内容进行深入解释:
RRT为什么向外扩展而不是只在中心附近密集生长?它与简单的随机树有何不同?
下一个要尝试到达的新顶点是如何选择的?
我知道有一个可以下载的运动策略库,但我更愿意在深入代码之前先理解这个想法,而不是另一种方式。
虽然该描述足够详细,但在这个领域工作一段时间后,我更喜欢 Steven LaValle 的书 "Planning Algorithms" 中 图5.16中RRT/RDT的伪代码。
树结构
树最终覆盖整个搜索空间(在大多数情况下)的原因是采样策略和始终从树中最近的点尝试连接的组合。这种效果被描述为减少 Voronoi偏差。
采样策略
下一个要尝试连接的顶点放置在哪里是采样问题。在简单的情况下,搜索维度较低时,均匀随机放置(或朝向目标的均匀随机放置)就足够了。在高维问题或运动非常复杂(关节具有位置、速度和加速度)或配置难以控制时,RRT的采样策略仍然是一个开放的研究领域。
库
如果你在实现中遇到了困难,MSL library 是一个很好的起点,但它自2003年以来就没有得到积极维护。更为更新的库是 Open Motion Planning Library (OMPL)。您还需要一个良好的碰撞检测库。
规划术语和建议
从术语角度来看,难点在于要认识到尽管在 RRT 的出版物(早期)中看到的许多图表都是二维的(连接 2D 点的树),但这是绝对最简单的情况。
通常,需要一种数学严谨的方法来描述复杂的物理情况。一个很好的例子是为具有 n 个连杆的机器人手臂进行规划。描述这样一个臂端需要至少 n
个关节角度。描述位置的最小参数集称为配置(或某些出版物中的状态)。单个配置通常表示为 q
。