Home / 机器人经典基础 / VFH:别把障碍挤成一股力,先看看哪里有通道

026|VFH:别把障碍挤成一股力,先看看哪里有通道

总览 · 目录 · 上一篇 · 下一篇

论文:Johann Borenstein、Yoram Koren,The Vector Field Histogram—Fast Obstacle Avoidance for Mobile Robots,1991,IEEE TRA 7(3):278–288。DOI · 作者上传全文 · 原文重排副本。

先接住前作的问题

势场把障碍合成一个方向,窄门里可能互相抵消。VFH保留方向直方图来选择通道。

五个前置概念

五个前置概念:栅格表示保存空间证据;极坐标直方图把局部空间压缩到方向;平滑降低量化跳变;局部规划只决定眼前动作;控制延迟限制危险出现后可用的反应时间。

一、问题设定:狭窄通道的信息怎样避免被单一合力抹掉

用障碍斥力和目标引力相加,机器人可能在狭窄走廊左右摇摆,也可能因为两侧障碍很近而看不到中间实际可通行的缝隙。问题不一定是感知缺失,而可能是把丰富的空间结构过早压缩成了一个合力向量。

背景与问题:局部方向选择不是完整路径规划

输入是距离传感器读数、机器人当前位姿和目标方向,输出是转向与速度指令。算法在线运行,但不是在线强化学习;没有策略网络、价值函数或奖励。它在每个控制周期重新解释周围空间,利用短期感知记忆,而不预先知道整个障碍地图。

最直接的参照是作者此前的 Virtual Force Field,即 VFF。两者都积累栅格信息,但 VFH 在栅格与动作之间增加了极坐标直方图。这个中间层保留不同方向上可通行区域的结构,避免把障碍分布直接求和成一个无法分辨通道的向量。

栅格的 certainty value 是重复测距形成的信心计数,不应直接当作上一章严格贝叶斯后验。原文第 6 节实现使用 0–15 的数值;0 表示没有读数落到该格,并不能单凭这一点证明那里已经观测为空。

主要物理前提是机器人能够在足够快的感知与控制更新中调整方向,传感器能提前探测危险障碍。声呐漏检、最小测距和车身尺寸会实质限制通道,不是调一个阈值就能消除。

二、从栅格权重生成方向直方图,再选择候选谷

方法:栅格、直方图、谷与动作

第一步在当前机器人周围取活动窗口。对格子 (i,j)(i,j),记信心值 cijc_{ij},相对机器人距离 dijd_{ij},方向角 βij\beta_{ij}。按原文式 (2) 形成权重

mij=cij2(a−bdij).m_{ij}=c_{ij}^{2}(a-bd_{ij}).

参数选取使活动窗口最远处权重降至零。平方强调反复出现的障碍读数,距离项强调近处障碍。这是启发式设计,不是从碰撞概率严格推导出的后验。

第二步将方向离散成扇区 kk,累加对应格子:

hk=∑(i,j):sector⁡(βij)=kmij.h_k=\sum_{(i,j):\operatorname{sector}(\beta_{ij})=k}m_{ij}.

再用局部加权平均平滑,减少栅格量化造成的锯齿。原文实际采用 5∘5^\circ 角分辨率,即 72 个扇区;图 4 为了画清楚而使用 10∘10^\circ,不能把图示设置误读成实现设置。

图4:活动窗口内栅格到极坐标障碍直方图的映射
Johann Borenstein、Yoram Koren(1991),图 4,PDF 第 10 页;原文与图注;放大查看。原版权保留。

读图:每个活动格按相对方向进入一个扇区,再由距离和确定度贡献障碍密度;这一步连接二维地图与一维转向选择。

第三步给直方图设阈值,寻找连续低于阈值的候选谷。选择和目标方向相关的谷后,窄谷取中间方向;宽谷根据靠近目标的一侧边界与限定扇区宽度选方向,以保持合适的障碍间距。不是无条件对整个最大开口取正中。

最后根据前方障碍密度和转向需求降低速度。论文使用启发式速度调节,并讨论最低速度参数;这与显式计算制动距离的安全约束不是同一回事。其效果依赖具体车辆与更新延迟。

数学量 hkh_k 是障碍密度,机制是通道识别,性能指标是运动速度、顺滑程度与通过能力。没有一个全局目标函数在这里被严格求最优,也不能把最低密度方向当成最短路方向。

从栅格到方向:信息到底丢在哪里

把第 kk 个角扇区里的单元贡献相加,可写成 hk=∑(i,j)∈kcij2(a−bdij)h_k=\sum_{(i,j)\in k}c_{ij}^{2}(a-bd_{ij}),这里 (i,j)(i,j)是格子索引,cijc_{ij}是信心计数,dijd_{ij}是距机器人的距离,a,ba,b是距离权重的截距与衰减参数;活动范围需保证该权重非负。这不是规范化概率:加一倍重复观测或改变扇区宽度,都可能改变直方图数值,阈值必须和建图、分辨率一起定。降维保留“哪个方向障碍密集”,却不再完整保留沿该方向各个距离层的拓扑。

可复算教学例。 同一扇区两格的置信计数分别为2、1,距离权重为0.5、1,贡献为 4×0.5+1×1=34\times0.5+1\times1=3;相邻扇区只有一格,计数2、权重0.25,贡献为1。阈值2会保留后者。这里不能读成前者有75%碰撞概率,也不能由一个低谷推出有限车身一定能穿过。原文第3节对VFF离散力抖动的分析,解释了为什么作者宁可保留方向分布,而不是立即把所有障碍压成一个合力。原稿第3–4节

与势场是问题上的平行改进关系;与占据栅格是表示思想上的历史联系,VFH计数不能直接视为后者的后验概率。DWA进一步以速度可达性和制动条件筛选动作,两者不是仅仅换一个打分函数。

低谷表示候选方向,车身尺寸与传感器盲区决定它是否可用。下面按门宽例子检查这个接口,再把图11的速度放回具体设备条件。

本页定位:图 11内嵌图。

三、执行方向与速度选择,检查车宽和近距盲区

输入:新测距、当前位置、目标方向、直方图参数
积累命中格子的信心值,截取机器人周围活动窗口
将每格信心与距离转换为障碍权重
按方向累加成极坐标直方图并平滑
找连续低于阈值的扇区区间,形成候选谷
选择接近目标的候选谷
若谷窄,朝其中心;若谷宽,按边界和安全间隔选方向
根据当前前方密度与转向需求调节速度
输出速度和转向命令,下一周期重新计算

自构例子:方向可用,不等于车身能通过

设一辆宽 0.8 m 的机器人面对 1.0 m 开口。按几何尺寸,两侧各有 0.1 m 余量;若传感器最近可靠测距为 0.27 m,机器人居中时两侧墙进入近距盲区。原文设备据此给出 0.8+2×0.27=1.340.8+2\times0.27=1.34 m 的传感器约束尺度。

这个例子不是说所有 0.8 m 机器人都需要 1.34 m 通道,而是说明车体、传感器和控制共同决定能否安全通过。换成近距感知良好的传感器,结论会改变;只降低直方图阈值并不会改善近距可见性。

四、读Fig.11轨迹并结合硬件周期与检测边界

Fig. 11:沿 Start 到 Target 的连续路径看机器人如何穿过细杆障碍,旁边标注的是这次代表运行的速度与控制设置
原论文结果图/表摘引:Johann Borenstein、Yoram Koren(1991),Fig. 11,PDF 第 21 页;核对原文。原版权保留。

读图:沿 Start 到 Target 的连续路径看机器人如何穿过细杆障碍,旁边标注的是这次代表运行的速度与控制设置。它支持实时反应的可行性,不能给出任意未知障碍场的安全保证。

实机在由细杆构成的障碍场中连续通过,图 11 的代表运行平均速度为 0.58 m/s。这个结果证明所示系统的实时反应能力,不能理解为任意未知环境都不会碰撞或陷入死路。

本页定位:图 11内嵌图。

实验设置:速度必须与硬件和障碍一起看

这里链接的是 1991 年作者重排稿,PDF 页序不同于期刊印刷页。VFH+、VFH* 的后续改动不用于解释本篇原图。

项目 原文第 6 节设置
平台 CARMEL,Cybermotion K2A 同步驱动移动平台,约 125 kg
传感器 24 个超声波传感器,环直径 0.8 m,最近可探测距离约 0.27 m
计算 20 MHz Intel 80386 运行 VFH,另有传感器与底层控制计算机
最大运动能力 正文给最大速度 0.78 m/s、最大转向速率 120 度/秒
任务 未预先告知位置的细杆、家具等障碍;图 11 为约 1.4 m 间距的杆阵
时间预算 一个周期涵盖取声呐、更新栅格、直方图、动作计算和通信,27 ms
统计限制 给出代表运行与大量演示的文字说明,没有可复算的总次数、失败率与置信区间

本页定位:图 11内嵌图。

27 ms 约等于 37 Hz,这是按 1/0.0271/0.027 自行换算。它不是纯直方图函数耗时,更不是所有声呐都完成一次独立全景扫描的时间。对实时机器人来说,更新链路含哪些步骤,比只报“算法很快”更有意义。

五处证据与它们的边界

图 4 与式 (1)–(5),第 4.1 节解释从格子到方向直方图,支持机制可执行;没有在图中证明任意地图都能保留所有几何信息。

本页定位:图 4内嵌图。

图 5–6,第 4.1 节把三个障碍簇和三个峰对应起来,说明中间表示保留空间差异。注意图 5 提到 1.2 m 间隙,是结构说明场景;不能据此断言实机安全通过了比第 6 节理论测距边界更窄的门。

图5:障碍场景与对应直方图栅格,保留a、b两面板及图例
Johann Borenstein、Yoram Koren(1991),图 5,PDF 第 12 页;原文与图注;放大查看。原版权保留。

读图:先在(a)定位墙面、隔板和细杆,再在(b)看相应占据格;图例中的确定度不是直接的距离值。

图6:同一障碍直方图的笛卡尔与极坐标表示,含阈值与方向图例
Johann Borenstein、Yoram Koren(1991),图 6,PDF 第 12 页;原文与图注;放大查看。原版权保留。

读图:上图的低谷对应可选方向,下图把同一密度映射回机器人周围;A、B、C峰需要与图5中的障碍一一对应。

本页定位:图 5内嵌图。

图 8–图 9,第 4.2 节说明宽谷沿障碍行走、窄谷居中的控制逻辑。作者将其与 VFF 的振荡问题对照;图中几何解释与实机展示相互支持,但没有多平台稳定性定理。

图8:离障碍过近、过远和合适距离时的三种转向
Johann Borenstein、Yoram Koren(1991),图 8,PDF 第 14 页;原文与图注;放大查看。原版权保留。

读图:对照(a)、(b)、(c)中的目标方向与实际转向;控制规则会根据距离偏差向外或向内修正,形成沿障碍稳定行驶。

图9:目标方向受阻时从自由扇区中选择转向方向
Johann Borenstein、Yoram Koren(1991),图 9,PDF 第 15 页;原文与图注;放大查看。原版权保留。

读图:目标方向落入受阻区域时,选择由自由谷边界限定的转向;这是一种局部决策,不能推出必然存在全局可达路线。

图 11,第 6 节给出约 3/4 英寸直径细杆、约 1.4 m 间距的代表测试,平均速度 0.58 m/s 且不停车。这一数字与摘要 0.6–0.7 m/s 的概括应分开,不必强行让单次例子等于摘要范围。

本页定位:图 11内嵌图。

第 6 节失败边界说明更细的 1/2 英寸杆在最大速度下检测不可靠,1×1 英寸方杆也存在困难。这比只读成功轨迹更能说明实际约束:算法无法回避根本没被传感器及时看到的物体。

五、限制局部到达、阈值和细障碍检测结论

VFH 的核心贡献是保留中间表示。地图不直接变成一个合力,而是先成为候选动作方向的结构。它让噪声累计、方向平滑和通道选择各自有了明确位置,也便于解释机器人为何朝某个方向行驶。

阈值仍存在两端风险。第 4.3 节指出阈值过高可能忽略障碍,过低会关闭可行窄通道;作者认为普通场景不必极度精调,并不意味着高速拥挤场景可以随便设置。信心平方也会放大持续错误读数,所以重复并不是正确的充分条件。

以下为模型分析。U 形障碍可以使局部目标方向反复诱导机器人进入凹区;需要全局记忆或上层子目标才能有系统地脱离。动态障碍还要求预测其未来运动,当前方向空闲不代表到达那里时仍然空闲。对转弯半径大的车辆,低密度方向也可能暂时无法执行。

论文第 4.5 节明确把它定位为局部规划器。它不是 A* 的替代物,而是能够接收全局路线上子目标的局部控制环。搭配方式是否有效还需统一检查全局路径、局部可执行性与传感器边界。

六、追问:只比较平均速度,怎样会把传感器能力误算成算法收益?

只比较平均速度,怎样会把传感器能力误算成算法收益?

参考答案:更可靠的检测范围、不同障碍尺寸或更强制动能力都能改变可安全运行的速度。应固定或明确列出这些条件,同时报告碰撞、停顿和到达情况。正文细杆检测边界说明,代表运行的平均速度不能脱离传感硬件解释。

七、继续检查候选方向是否来得及刹停

八、自测与参考答案

问题1:为什么加一层直方图会比直接求斥力合力更有用?

答:合力只留下一个方向和大小,不保留多条通道的位置与宽度。直方图能区分左右障碍形成的两个峰以及中间的谷,使控制器选择通道而非在两股斥力之间被动平衡。

问题2:调高阈值让机器人通过窄门,为什么也可能增加碰撞风险?

答:较高阈值会把更多方向归为候选谷,其中可能包括真实障碍方向。只有接近到权重足够大时才被排除,而此时剩余转向与制动时间可能不够。阈值不是纯粹的“勇敢程度”,它与速度、噪声和距离共同作用。

问题3:直方图显示目标方向空闲,为什么仍不能证明最终到达目标?

答:它只描述当前局部窗口,窗口外可能是死路,车辆也可能无法执行所选方向。到达保证需要考虑全局连通性、运动约束和动态变化;局部避障成功只是整个导航链的一环。