简单 RRT 算法如何更新 D 值?

计算科学 算法 随机抽样
2021-12-16 03:01:10

我正在研究以下关于简单 RRT 算法的 5 次迭代的讲座(图片)。

在此处输入图像描述

我试图了解每个值是如何在每次迭代中更新的。我已经弄清楚除了 D 值的更新方式之外,一切都是如何更新的。

数据:机器人的初始位姿为 (5,15),,目标在 (18,4)。我们不需要达到目标,只需执行 5 次迭代。 Dwall=0 Dexp=5

1个回答

我认为根本没有更新。它只是 [0,1] 中乘以均匀随机值的临时值。DDexp

一般而言,RRT 表示 Rapidly-exploring Random Tree。因此,该算法将涉及具有步长的分支和随机方向。

在幻灯片的左侧幻灯片上有一个使用的随机数的列列表。删除线表示它们已被消耗。中间是我们需要探索的网格。“R”表示机器人的初始位置,“G”是目标。粗线标记了机器人无法通过的墙壁。绿点标记机器人采取的步骤(每次迭代一个),蓝色标记建议的步骤。

然后算法进行如下:

  1. 分支
  2. 创建随机方向
  3. 随机进入并检查墙壁
  4. 如果墙,树枝就会死掉。如果不是,则在 1. 或 2. 处继续分支(再次分支时无法从幻灯片中判断)

更详细地说,每个步骤都涉及以下内容:

  1. 分支:
    • 从幻灯片中只能猜测,但似乎我们从最初的两个分支开始。因此,迭代 1 和 2 从相同的开始。xnear
    • 这不是在每次迭代中都完成的。条件可能取决于仍处于活动状态的分支的数量和直到最后一个分支的步数。
  2. 创建一个随机方向:
    • 网格的大小为 [20,20]。因此,我们通过将大小乘以从 [0,1] 中提取的值来选择网格上的一个随机点,例如第一步中x ,0.51xrand=[10,20]
    • 这个随机点中的当前位置一起给出了随机方向(从near 到 rand 的向量)。这个方向是标准化的,但从幻灯片中我只能猜测使用了一种曼哈顿规范。xrandxnear
    • 然后随机计算步长。最大尺寸为,即 5。同样,我们绘制一个随机值并乘以最大值并取截断的整数值,即 2.825 变为步长 2,这样我们只在网格点上移动。这个步长乘以从当前分支的开始的归一化方向是我们的候选Dexpxnearxnew
  3. 步并检查
    • 对于每个提议的新职位,我们检查我们是否碰壁。这是第 3 次迭代中的情况:方向 [13,-7] 穿过墙壁。由于,我们消除了这个分支(标记:划掉)。xnear=[7,17]Dwall=0
    • 对于所有其他步骤,建议的步骤被接受并成为该分支的新(标记:勾选)。xnear
  4. 对于每个仍处于活动状态的分支,转到 1。