014|人工势场:让障碍物直接参与动作生成
论文:Oussama Khatib,Real-Time Obstacle Avoidance for Manipulators and Mobile Robots,IJRR,1986,5(1):90–98。作者原稿 · DOI。同题 1985 ICRA 会议版在先;这里采用 1986 期刊版本。
先接住前作的问题
构型空间刻画可行位置,动态环境还要求机器人及时产生局部避让动作。本篇把距离势的梯度引入控制。
五个前置概念
五个前置概念:梯度指向函数最快增加方向;局部极小点可能不是目标;雅可比转置映射任务力为关节作用;控制周期决定反应时间;完备性讨论存在解时算法是否能够找到。
一、问题设定:新障碍出现时怎样立即生成局部避让动作
想象把机器人放在一张虚拟地形上:目标附近是低谷,障碍附近是高坡。机器人沿下降方向走,就会同时趋近目标并远离障碍。这个地形不是物理表面,而是由任务位置与传感信息计算出来的标量函数。
它解决的是哪个层次的问题
任务目标通常是末端或移动机器人到达指定位置,同时保持与障碍物的间距。状态包括位置、速度与关节状态,输入是目标、障碍几何及其更新信息,输出可以是任务空间作用或经过控制映射后的关节指令。
它不是强化学习:没有通过奖励更新策略参数。势函数是人为定义的控制设计。也不能把势函数值直接叫作“价值函数”,因为这里没有相应的 Bellman 最优性定义。
关键假设是能够获得足够及时的障碍距离与方向,并且执行机构能及时响应。只检查夹爪不够:肘部可能在夹爪远离障碍时发生碰撞。所以机械臂需要对多个连杆上的受控点或几何部件建立距离信息。
作者引言把局部方法定位为对高层规划的补充。保留这个分工,可以避免将“遇到 U 形障碍走不出来”错误解释为论文从未承诺的全局完备性被推翻。
二、从吸引与排斥势求梯度,再映射到机械作用
以下是便于推导的标准教学形式。令末端位置为 ,目标为 ,吸引势取
对于某个障碍,设 为表面距离, 为影响范围,取
总作用 。吸引部分为 ;排斥部分沿距离增加方向,接近障碍时迅速增强。影响范围之外不产生排斥,可以减少远处物体的干扰。
这一写法清楚区分三个对象: 是人为选择的标量函数; 是局部动作生成机制;路径长度、碰撞率、反应时间是需要实验评价的指标。降低 并不自动意味着优化了这些指标中的每一个。
对连杆点 ,通过链式法则有 。所以各点的避障作用可映射成关节力矩方向并相加。关节限位还可以在关节空间直接设计势函数。实际动态控制需要惯性、重力、阻尼等处理,不能把梯度直接当作任意机械臂的精确运动方程。
障碍运动时,势函数显式依赖时间 。这不是让机器人预测所有未来,而是允许实时更新地形;若缺少速度预测或充分制动距离,快速迎面障碍仍可能来不及避开。
把排斥力的链式求导写开,可以检查实现的方向和量级。在作用范围内,
若 是平滑的欧氏最近距离, 指向远离障碍的一侧,所以上式前面的正系数产生排斥。原创量级检查取 ,单位距离梯度下作用幅值为0.75;距离减为0.1时增至8。同一个增益在近距离会大幅放大测距误差,执行器饱和后更不能继续按无限大斥力的理想模型解释安全性。
连续下降还要经过离散控制这一关。最简单的纯吸引势 用显式步进得到 ,只有 才收敛; 时,尽管每次使用负梯度,幅值仍会越跳越大。这是教学离散例,与下面的非目标局部极小是两种不同失败机制:一个是步长不适合,另一个是连续场本身已无下降出口。
从原文第93页式(17)–(20)还能看出,作者把局部场放进操作空间动力学与连杆点映射中。操作空间在后续专文进一步统一这个动力学框架,属于直接方法延续;A*可以在较高层提供绕过困境的中间目标,与实时势场是模块组合;GJK则可提供凸几何距离查询,但距离最近点切换时仍需考虑梯度不光滑。
负梯度只保证沿局部下降方向行动,尚未保证到达目标。把控制循环放到非目标极小值的反例里,才能看清快速响应与全局到达是两项职责。
三、执行局部反馈,用非目标极小值作反例
教学流程:每个控制周期重新计算局部作用
输入:目标、关节状态、障碍位置及多个连杆几何点
任务吸引力 ← 目标吸引势的负梯度
关节作用 ← 末端雅可比转置 * 任务吸引力
for 每个连杆点与其邻近障碍:
求距离 d 和距离梯度
若 d 小于影响范围:
求排斥力,并经该点雅可比转置映射后累加
加入关节限位作用及阻尼
由动力学控制器执行,并检查指令限制
自构反例:下降不意味着到达目标
把目标放在机器人正前方,障碍挡在二者之间。如果吸引力与排斥力大小相等、方向相反,总梯度为零,机器人可能停在目标之前。对称设置还可能让左右绕行没有自然偏好。
假设使用理想一阶系统 ,则
这只证明势函数不增加,不能证明停留点一定是目标。要获得目标收敛,还需要关于势函数临界点与自由空间结构的额外条件。后续导航函数研究正是沿着这类问题继续深入。
若势随时间变化,则 ,连单调下降也未必保持。移动障碍可以“抬高地形”。这不意味着时变势场没用,而是静态证明不能原封不动套用。
四、读双层控制与动态仿真,区分演示和保证

读图:沿连杆的重叠姿态追踪四自由度机构在围栏中的运动:控制作用需要照顾整条手臂,而不只是末端点。图是给定场景的动态仿真序列,不是全局无局部极小的保证。
原文证据:从势函数到双层控制系统
位移图和 COSMOS 结构图分别说明局部响应与控制实现;它们没有解除非凸环境中的局部极小,也没有给出任意地图的全局到达保证。
第 91–93 页,式(5)、(11)、(14)–(20)。 操作空间作用、吸引势、速度限制、距离截断斥力与动态控制映射;完整实现含操作空间惯性处理,不能等同于简单把所有作用乘以雅可比转置。
第 94 页,第 6 节、Fig. 2。 平面四自由度冗余机械臂动态仿真;这是仿真序列,不是真机重复试验图。
第 95 页,第 8 节。 明确讨论局部极小值停滞与复杂任务限制;原文没有承诺任意障碍场景全局可达。
第 95–96 页,第 9 节、Fig. 3。 双层控制结构;局部实时作用与较高层协调需要区分。

读图:框图把较高层目标协调与较低层实时作用分开,不能由它推出全局规划完备性。
第 96 页,第 10 节。 COSMOS 的 PUMA 560 及视觉模块演示;支持实现可行性,不是对所有动态障碍的安全证明。
| 实验或系统要素 | 原文报告 |
|---|---|
| 实机 | PUMA 560,Machine Intelligence Corporation 视觉模块 |
| 计算系统 | PDP 11/45 与 PDP 11/60 双处理器 |
| 运行频率 | 伺服 225 Hz,系数求值 100 Hz |
| 仿真对象 | 四自由度平面冗余机械臂 |
| 其他边界 | 第 7 节处理关节限位;附录 I–III 给出连杆与长方体、圆柱、圆锥的距离计算 |
| 统计比较 | 未给出统一重复成功率或跨规划器的统计排行榜 |
频率说明当时系统采用分层计算,不意味着全套视觉感知和所有动力学每 1/225 秒全部重算。与后来 1987 年操作空间论文的另一套处理器和频率也不应混用。
作者展示运动障碍的避让,但障碍速度、感知延迟、机器人制动能力共同决定适用范围。公平复现应让不同局部控制器使用相同输入与执行限制,分别报告最小间距、响应时间、指令饱和和失败情形。
五、检查局部极小、感知误差与动力学限制
主要代价是需要调节影响距离与增益。影响范围太小可能制动不足,太大可能让狭窄通道被排斥作用“堵住”;增益太大则可能引起振荡或指令饱和。离散采样下,即使连续势在障碍边界发散,也不自动阻止一个大时间步跨过边界。
还有一个常见实现问题:最近障碍的身份切换时,距离函数可能不光滑。梯度突然改变,控制指令也可能抖动。平滑处理会改变原势形状,因此需要重新检查最小间距和控制响应,不能只看轨迹是否好看。
六、追问:高层规划已经给出路线,为什么仍不能直接删掉势场的失败检查?
高层规划已经给出路线,为什么仍不能直接删掉势场的失败检查?
参考答案:局部反馈仍可能受感知、离散更新、执行器能力或势函数形状影响,参考路线本身不能消除这些条件。应分别检查高层路线的几何可行性与低层闭环实际响应,并明确两层如何交换目标。组合能够补足职责,但不能把一个模块的保证自动传给整个系统。
七、约束势函数结构,或保留方向直方图
- 直接继承:Navigation Functions:势场什么时候才能有到达保证。通过限制势函数临界点和几何条件,分析几乎全局收敛。
- 平行路线:VFH:别把障碍挤成一股力,先看看哪里有通道。保留障碍方向分布并选择可通行谷,减少单一合力丢失通道结构的问题。
八、自测与参考答案
1.证明 一直下降,为什么仍不能保证机器人到达目标?
因为还可能存在其他驻点,梯度在那里为零。下降性质只约束函数变化,需要额外证明目标是相关区域内唯一可吸引驻点,才能进一步谈全局收敛。
2.末端的距离始终为正,能否说明整只机械臂安全?
不能。中间连杆有独立几何位置,可能碰撞。必须检查全身几何或足够保守的近似,并把对应避障作用映射到关节空间。
3.增加排斥增益是否总能减少碰撞?
不总能。真实电机有饱和,采样有延迟,过大指令可能产生振荡。有效设计应结合速度、制动能力和感知范围;软件中的巨大虚拟力并不等于硬件能够产生的响应。