|
425 | 425 |
|
426 | 426 | > **反事实推理**: 如果连接半径不随 $n$ 变化会怎样?固定半径太大 → 图过于稠密,查询时 A* 太慢($O(n^2)$ 条边);固定半径太小 → 图不连通,找不到路径。PRM* 的自适应半径在连通性和效率之间取得最优平衡。 |
427 | 427 |
|
| 428 | +### r-disc 与 k-nearest:PRM* 的两种连接策略 ⭐⭐⭐ |
| 429 | +
|
| 430 | +上一段给出的是**半径型(r-disc)** PRM*——每个新节点与半径 $r(n)$ 内的所有邻居相连。但 OMPL 的 `PRMstar` 与 `RRTstar` 默认走的其实是另一条等价路线:**k-近邻型(k-nearest)**。两者都能达到渐近最优,但工程行为不同,初学者最容易在这里把固定 K 近邻(原始 PRM 的做法)误当成 k-nearest PRM*。把这两条策略并排讲清楚,正好为 M07.4 的 RRT*/BIT* 的 `use_k_nearest` 配置项(M07.6 的 YAML 里出现过)打下地基。 |
| 431 | +
|
| 432 | +**两种策略的渐近最优条件并排对照**: |
| 433 | +
|
| 434 | +| 策略 | 连接规则 | 渐近最优阈值 | OMPL 实现 | |
| 435 | +|------|---------|------------|----------| |
| 436 | +| r-disc | 连接 $r(n)$ 半径内全部邻居 | $r(n)=\gamma\left(\frac{\log n}{n}\right)^{1/d}$,$\gamma>\gamma^*$ | `setRange` 间接控制 | |
| 437 | +| k-nearest | 连接最近的 $k(n)$ 个邻居 | $k(n)=k_0\log n$,$k_0>e\left(1+\frac{1}{d}\right)$ | `setMaxNearestNeighbors`,`use_k_nearest:1` | |
| 438 | +
|
| 439 | +关键洞察是:两者的"自适应"形式不同,但量级一致。r-disc 让半径随 $n$ **收缩**($r(n)\to 0$),k-nearest 让邻居数随 $n$ **缓慢增长**($k(n)=k_0\log n\to\infty$)。这并不矛盾——在 $n$ 个均匀点中,半径 $r(n)$ 的球内**期望**恰好包含 $n\cdot\frac{\zeta_d r(n)^d}{\mu(\mathcal{C}_{\text{free}})}\sim\log n$ 个点。换言之,"半径内点数"和"近邻个数"在期望意义上都被钉死在 $\Theta(\log n)$ 这个"刚好够连通又不至于稠密"的临界量级上——这正是 M07.4 会用到的随机几何图(RGG)连通相变的同一个 $\log n$。 |
| 440 | +
|
| 441 | +> **对比性思维(不是 X 而是 Y)**:固定 K 近邻(每个点永远连最近的 10 个,原始 PRM 的常见写法)**不是** k-nearest PRM*。差别在于 $k$ 是否随 $n$ 增长:固定 $k$ 时,随采样加密,每个点的邻居在空间上越挨越近,图退化成一堆局部小团,跨区域的"长边"永远不会出现——于是图可能整体连通但最优路径所需的边缺失,渐近最优**失效**。只有让 $k(n)=k_0\log n$ 随 $n$ 增长,才能在加密的同时保留足够的连接广度。这一字之差($k$ 常数还是 $k\propto\log n$),就是"看着像最优"和"真能最优"的分水岭,和 M07.4 里 RRT 与 RRT* "能否改父节点"的分野是同一类陷阱。 |
| 442 | +
|
| 443 | +**工程上该选哪个?** k-nearest 在实践中通常更受青睐,原因是它对 $\mu(\mathcal{C}_{\text{free}})$ 的估计不敏感——r-disc 的 $\gamma^*$ 阈值里含 $\mu(\mathcal{C}_{\text{free}})$,而自由空间体积在有障碍场景里根本无法精确知道,只能保守高估,导致半径偏大、图偏稠密;k-nearest 的阈值 $k_0>e(1+1/d)$ 只依赖维度 $d$,与自由空间体积无关,因此更稳健、更易调参。这也是 OMPL 把 `use_k_nearest` 默认设为 1 的原因。 |
| 444 | +
|
| 445 | +> **本质洞察**:r-disc 和 k-nearest 不是两个"不同算法",而是同一个渐近最优条件在"以距离为锚"和"以个数为锚"两种坐标下的写法。理解了这一点,你就能在 M07.6 的 YAML 里看懂 `use_k_nearest` 和 `rewire_factor`——后者正是把理论阈值 $k_0$(或 $\gamma$)乘上一个 $\geq 1$ 的安全系数,让实际连接比理论下界更密一点以换取经验上更高的成功率,代价是更多的碰撞检测。 |
| 446 | +
|
428 | 447 | ### Lazy-PRM: 延迟碰撞检查 ⭐⭐ |
429 | 448 |
|
430 | 449 | 碰撞检测是 PRM 预处理的最大开销(80-95% 时间)。Lazy-PRM 的思路: |
|
466 | 485 |
|
467 | 486 | 1. **[编程]** 用 OMPL 的 PRM* 在 $\mathbb{R}^2$ 中构建路标图(100 个障碍矩形)。可视化路标图结构。然后查询 10 对随机起点-终点,记录查询时间。与单次 RRT-Connect 对比总耗时。 |
468 | 487 | 2. **[思考]** 在动态环境中(障碍物移动),PRM 的路标图可能包含已失效的边。如何高效处理?提示:考虑 Lazy 检查 vs 增量删除/重建。 |
| 488 | +3. **[对比]** 用 OMPL 的 `PRMstar` 在同一 $\mathbb{R}^7$ 场景上分别设 `use_k_nearest:1` 和 `use_k_nearest:0`(r-disc),各跑 50 次,记录路标图边数、平均度数与查询成功率。验证 r-disc 因需保守高估 $\mu(\mathcal{C}_{\text{free}})$ 而边数偏多的预期;再把固定 K 近邻(不随 $n$ 增长)与之对比,观察固定 $k$ 在采样加密后成功率为何不再提升。 |
469 | 489 |
|
470 | 490 | --- |
471 | 491 |
|
@@ -1804,7 +1824,7 @@ VAMP 的 2024 年后续工作 VAMP-MR(RSS 2024)进一步扩展到多臂协 |
1804 | 1824 | | K1 | 构型空间 | 在关节空间规划;C-space 障碍是工作空间障碍的复杂高维映射 | M07.1 | ⭐ | |
1805 | 1825 | | K2 | 不可显式构造 | 维度灾难使栅格化不可行,必须随机采样探索 | M07.1 | ⭐⭐ | |
1806 | 1826 | | K3 | 采样策略 | 均匀/桥/高斯/信息增益各有适用场景,按场景特征选 | M07.2 | ⭐⭐ | |
1807 | | -| K4 | PRM/PRM* | 预计算路标图供多次查询;PRM* 自适应半径达渐近最优 | M07.3 | ⭐⭐ | |
| 1827 | +| K4 | PRM/PRM* | 预计算路标图供多次查询;PRM* 自适应半径达渐近最优;r-disc 与 k-nearest 两种连接策略量级一致($\Theta(\log n)$) | M07.3 | ⭐⭐ | |
1808 | 1828 | | K5 | RRT/RRT-Connect | 单次搜索找可行路径,双向+贪心连接是 MoveIt2 默认 | M07.4 | ⭐⭐ | |
1809 | 1829 | | K6 | 概率完备性 | 形式化定义 + $\delta$-鲁棒前提 + 几何级数证明骨架 | M07.4 | ⭐⭐⭐ | |
1810 | 1830 | | K7 | 渐近最优性 | RRT 几乎必然次优($\Pr=0$ 最优),RRT* 靠 Rewire 修复 | M07.4 | ⭐⭐⭐ | |
|
0 commit comments