3. OMPL采样算法:均匀采样、高斯采样、桥接采样与采样效率

各位好,我是老周。今天我们来聊聊OMPL里最基础但也最容易被忽视的一环——采样算法。很多人觉得采样不就是随机撒点吗?有什么好讲的?其实不然。我见过太多项目,规划器参数调了半天没效果,最后发现是采样策略选错了。说白了,采样是规划的"眼睛",你往哪儿看、怎么看,直接决定了能不能找到路。

3.1 均匀采样(Uniform Sampling)

均匀采样是最朴素的采样方式。它在C空间的每个维度上独立地随机取值,最终得到一个在空间内均匀分布的点集。

核心特点:无偏、全覆盖、但效率低。

为什么说它效率低?你想想看,如果环境里障碍物占了90%的空间,均匀采样会有90%的点落在障碍物里,被直接丢弃。这在窄通道场景下尤其致命。我记得有一次做机械臂穿管道任务,管道直径只有臂展的1/10,均匀采样跑了5分钟都没找到一条路径。

均匀采样的数学表达很简单:

// 伪代码:均匀采样
for each dimension d in [0, D):
    sample[d] = lower_bound[d] + random() * (upper_bound[d] - lower_bound[d])

适用场景:

  • 环境障碍物占比低(<30%)
  • C空间维度低(<6维)
  • 作为其他采样器的回退方案

3.2 高斯采样(Gaussian Sampling)

高斯采样的思路是:在障碍物附近多采样,在空旷区域少采样。为什么?因为路径往往贴着障碍物走,尤其是窄通道的两侧。

具体做法是:先随机选一个点,如果它在自由空间,就在它周围按高斯分布再采一个点;如果它在障碍物里,也按高斯分布再采一个点,但这次期望落在边界附近。

我的经验:高斯采样对窄通道场景效果显著。我曾经处理过一个6轴机械臂的穿环任务,均匀采样成功率不到5%,换成高斯采样后直接飙到60%以上。但要注意,高斯采样的标准差参数很敏感,设大了等于均匀采样,设小了又容易陷入局部。

高斯采样的关键参数:

参数 含义 推荐范围
σ(标准差) 采样点的散布程度 C空间范围的1%~5%
p_obstacle 在障碍物附近采样的概率 0.3~0.7
max_attempts 单次采样的最大尝试次数 10~50

3.3 桥接采样(Bridge Sampling)

桥接采样是我个人最喜欢的一种策略。它的名字很形象——在两个障碍物之间"搭桥"。具体来说,它先采两个点,如果这两个点都在障碍物里,就在它们连线的中点采样。这个中点有很大概率落在自由空间,而且是窄通道的"咽喉"位置。

避坑指南:我曾经在调试一个高维C空间(12维双臂机器人)时,桥接采样反而比均匀采样还慢。后来发现,维度太高时,两个随机点都在障碍物里的概率极低,桥接采样几乎不生效。所以高维场景慎用桥接采样。

桥接采样的流程:

  1. 随机采样点A,检查是否在障碍物中
  2. 如果A在障碍物中,再随机采样点B,检查是否也在障碍物中
  3. 如果A和B都在障碍物中,取中点M = (A + B) / 2
  4. 如果M在自由空间,保留M;否则丢弃

嗯,这里要注意:桥接采样对低维、窄通道密集的场景特别有效。我做过一个对比测试,在2D迷宫环境中,桥接采样的规划速度是均匀采样的8倍。

3.4 采样效率对规划的影响

采样效率直接决定了规划器的成败。我把它总结为三个维度:

  • 时间效率:每秒能产生多少个有效采样点
  • 空间效率:采样点对C空间的覆盖程度
  • 信息效率:采样点对路径搜索的贡献度

三种采样算法的效率对比:

采样算法 时间效率 空间效率 信息效率 推荐场景
均匀采样 高 高 低 空旷环境、低维空间
高斯采样 中 中 中 窄通道、障碍物密集
桥接采样 低 低 高 低维窄通道、迷宫

为什么信息效率这么重要?因为规划器最终要的是"有用的点",而不是"多的点"。均匀采样虽然每秒能产生上万个点,但90%都是废点。桥接采样虽然慢,但每个点都打在关键位置。

我的建议:实际项目中不要只用一种采样策略。我通常的做法是:前20%的规划时间用均匀采样快速覆盖空间,后面80%的时间切换到高斯或桥接采样来"攻坚"。OMPL的PlannerData接口支持动态切换采样器,这个后面会讲到。

最后,我画了一张图来总结这三种采样算法的核心逻辑和适用边界:

OMPL 三种采样算法对比 均匀采样 随机撒点,无偏覆盖 时间效率:★★★★★ 信息效率:★☆☆☆☆ 空间效率:★★★★★ 适合:空旷环境 高斯采样 障碍物附近密集采样 时间效率:★★★☆☆ 信息效率:★★★☆☆ 空间效率:★★★☆☆ 适合:窄通道场景 桥接采样 障碍物之间搭桥采样 时间效率:★★☆☆☆ 信息效率:★★★★★ 空间效率:★★☆☆☆ 适合:低维迷宫 选择建议 1. 低维(≤6)、空旷 → 均匀采样 2. 低维、窄通道 → 桥接采样 3. 高维(>6)、障碍物密集 → 高斯采样 4. 不确定时 → 混合策略(先均匀后高斯) 5. 实时性要求高 → 优先保证时间效率