Home / 机器人经典基础 / 人工势场:让障碍物直接参与动作生成

014|人工势场:让障碍物直接参与动作生成

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

论文:Oussama Khatib,Real-Time Obstacle Avoidance for Manipulators and Mobile Robots,IJRR,1986,5(1):90–98。作者原稿 · DOI。同题 1985 ICRA 会议版在先;这里采用 1986 期刊版本。

先接住前作的问题

构型空间刻画可行位置,动态环境还要求机器人及时产生局部避让动作。本篇把距离势的梯度引入控制。

五个前置概念

五个前置概念:梯度指向函数最快增加方向;局部极小点可能不是目标;雅可比转置映射任务力为关节作用;控制周期决定反应时间;完备性讨论存在解时算法是否能够找到。

一、问题设定:新障碍出现时怎样立即生成局部避让动作

想象把机器人放在一张虚拟地形上:目标附近是低谷,障碍附近是高坡。机器人沿下降方向走,就会同时趋近目标并远离障碍。这个地形不是物理表面,而是由任务位置与传感信息计算出来的标量函数。

它解决的是哪个层次的问题

任务目标通常是末端或移动机器人到达指定位置,同时保持与障碍物的间距。状态包括位置、速度与关节状态,输入是目标、障碍几何及其更新信息,输出可以是任务空间作用或经过控制映射后的关节指令。

它不是强化学习:没有通过奖励更新策略参数。势函数是人为定义的控制设计。也不能把势函数值直接叫作“价值函数”,因为这里没有相应的 Bellman 最优性定义。

关键假设是能够获得足够及时的障碍距离与方向,并且执行机构能及时响应。只检查夹爪不够:肘部可能在夹爪远离障碍时发生碰撞。所以机械臂需要对多个连杆上的受控点或几何部件建立距离信息。

作者引言把局部方法定位为对高层规划的补充。保留这个分工,可以避免将“遇到 U 形障碍走不出来”错误解释为论文从未承诺的全局完备性被推翻。

二、从吸引与排斥势求梯度,再映射到机械作用

以下是便于推导的标准教学形式。令末端位置为 xx,目标为 xgx_g,吸引势取

Ua(x)=12ka∥x−xg∥2.U_a(x)=\tfrac12k_a\|x-x_g\|^2.

对于某个障碍,设 d(x)>0d(x)>0 为表面距离,d0d_0 为影响范围,取

Ur(x)={12kr(1/d(x)−1/d0)2,d(x)<d0,0,d(x)≥d0.U_r(x)=\begin{cases}\tfrac12k_r(1/d(x)-1/d_0)^2,&d(x)<d_0,\\0,&d(x)\ge d_0.\end{cases}

总作用 F=−∇Ua−∑j∇Ur,jF=-\nabla U_a-\sum_j\nabla U_{r,j}。吸引部分为 −ka(x−xg)-k_a(x-x_g);排斥部分沿距离增加方向,接近障碍时迅速增强。影响范围之外不产生排斥,可以减少远处物体的干扰。

这一写法清楚区分三个对象:UU 是人为选择的标量函数;−∇U-\nabla U 是局部动作生成机制;路径长度、碰撞率、反应时间是需要实验评价的指标。降低 UU 并不自动意味着优化了这些指标中的每一个。

对连杆点 xi(q)x_i(q),通过链式法则有 ∇qUi=JiT∇xiUi\nabla_qU_i=J_i^T\nabla_{x_i}U_i。所以各点的避障作用可映射成关节力矩方向并相加。关节限位还可以在关节空间直接设计势函数。实际动态控制需要惯性、重力、阻尼等处理,不能把梯度直接当作任意机械臂的精确运动方程。

障碍运动时,势函数显式依赖时间 U(x,t)U(x,t)。这不是让机器人预测所有未来,而是允许实时更新地形;若缺少速度预测或充分制动距离,快速迎面障碍仍可能来不及避开。

把排斥力的链式求导写开,可以检查实现的方向和量级。在作用范围内,

dUrdd=−kr(1/d−1/d0)/d2,Fr=kr(1/d−1/d0)∇d/d2.\frac{dU_r}{dd}=-k_r(1/d-1/d_0)/d^2, \qquad F_r=k_r(1/d-1/d_0)\nabla d/d^2.

若 dd 是平滑的欧氏最近距离,∇d\nabla d 指向远离障碍的一侧,所以上式前面的正系数产生排斥。原创量级检查取 d=0.2,d0=0.5,kr=0.01d=0.2,d_0=0.5,k_r=0.01,单位距离梯度下作用幅值为0.75;距离减为0.1时增至8。同一个增益在近距离会大幅放大测距误差,执行器饱和后更不能继续按无限大斥力的理想模型解释安全性。

连续下降还要经过离散控制这一关。最简单的纯吸引势 U=12kx2U=\tfrac12k x^2 用显式步进得到 xj+1=(1−ηk)xjx_{j+1}=(1-\eta k)x_j,只有 0<ηk<20<\eta k<2 才收敛;ηk>2\eta k>2 时,尽管每次使用负梯度,幅值仍会越跳越大。这是教学离散例,与下面的非目标局部极小是两种不同失败机制:一个是步长不适合,另一个是连续场本身已无下降出口。

从原文第93页式(17)–(20)还能看出,作者把局部场放进操作空间动力学与连杆点映射中。操作空间在后续专文进一步统一这个动力学框架,属于直接方法延续;A*可以在较高层提供绕过困境的中间目标,与实时势场是模块组合;GJK则可提供凸几何距离查询,但距离最近点切换时仍需考虑梯度不光滑。

负梯度只保证沿局部下降方向行动,尚未保证到达目标。把控制循环放到非目标极小值的反例里,才能看清快速响应与全局到达是两项职责。

三、执行局部反馈,用非目标极小值作反例

教学流程:每个控制周期重新计算局部作用
输入:目标、关节状态、障碍位置及多个连杆几何点
任务吸引力 ← 目标吸引势的负梯度
关节作用 ← 末端雅可比转置 * 任务吸引力
for 每个连杆点与其邻近障碍:
    求距离 d 和距离梯度
    若 d 小于影响范围:
        求排斥力,并经该点雅可比转置映射后累加
加入关节限位作用及阻尼
由动力学控制器执行,并检查指令限制

自构反例:下降不意味着到达目标

把目标放在机器人正前方,障碍挡在二者之间。如果吸引力与排斥力大小相等、方向相反,总梯度为零,机器人可能停在目标之前。对称设置还可能让左右绕行没有自然偏好。

假设使用理想一阶系统 x˙=−∇U(x)\dot x=-\nabla U(x),则

U˙=∇UTx˙=−∥∇U∥2≤0.\dot U=\nabla U^T\dot x=-\|\nabla U\|^2\le0.

这只证明势函数不增加,不能证明停留点一定是目标。要获得目标收敛,还需要关于势函数临界点与自由空间结构的额外条件。后续导航函数研究正是沿着这类问题继续深入。

若势随时间变化,则 U˙=−∥∇U∥2+∂U/∂t\dot U=-\|\nabla U\|^2+\partial U/\partial t,连单调下降也未必保持。移动障碍可以“抬高地形”。这不意味着时变势场没用,而是静态证明不能原封不动套用。

四、读双层控制与动态仿真,区分演示和保证

Fig. 2:沿连杆的重叠姿态追踪四自由度机构在围栏中的运动:控制作用需要照顾整条手臂,而不只是末端点
原论文结果图/表摘引:Oussama Khatib(1986),Fig. 2,PDF 第 5 页;核对原文。原版权保留。

读图:沿连杆的重叠姿态追踪四自由度机构在围栏中的运动:控制作用需要照顾整条手臂,而不只是末端点。图是给定场景的动态仿真序列,不是全局无局部极小的保证。

原文证据:从势函数到双层控制系统

位移图和 COSMOS 结构图分别说明局部响应与控制实现;它们没有解除非凸环境中的局部极小,也没有给出任意地图的全局到达保证。

第 91–93 页,式(5)、(11)、(14)–(20)。 操作空间作用、吸引势、速度限制、距离截断斥力与动态控制映射;完整实现含操作空间惯性处理,不能等同于简单把所有作用乘以雅可比转置。

第 94 页,第 6 节、Fig. 2。 平面四自由度冗余机械臂动态仿真;这是仿真序列,不是真机重复试验图。

第 95 页,第 8 节。 明确讨论局部极小值停滞与复杂任务限制;原文没有承诺任意障碍场景全局可达。

第 95–96 页,第 9 节、Fig. 3。 双层控制结构;局部实时作用与较高层协调需要区分。

原论文图3:人工势场实时障碍避让的双层控制系统框图
Oussama Khatib(1986),图 3,PDF 第 7 页;原文与图注。原版权保留。

读图:框图把较高层目标协调与较低层实时作用分开,不能由它推出全局规划完备性。

第 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 年操作空间论文的另一套处理器和频率也不应混用。

作者展示运动障碍的避让,但障碍速度、感知延迟、机器人制动能力共同决定适用范围。公平复现应让不同局部控制器使用相同输入与执行限制,分别报告最小间距、响应时间、指令饱和和失败情形。

五、检查局部极小、感知误差与动力学限制

主要代价是需要调节影响距离与增益。影响范围太小可能制动不足,太大可能让狭窄通道被排斥作用“堵住”;增益太大则可能引起振荡或指令饱和。离散采样下,即使连续势在障碍边界发散,也不自动阻止一个大时间步跨过边界。

还有一个常见实现问题:最近障碍的身份切换时,距离函数可能不光滑。梯度突然改变,控制指令也可能抖动。平滑处理会改变原势形状,因此需要重新检查最小间距和控制响应,不能只看轨迹是否好看。

六、追问:高层规划已经给出路线,为什么仍不能直接删掉势场的失败检查?

高层规划已经给出路线,为什么仍不能直接删掉势场的失败检查?

参考答案:局部反馈仍可能受感知、离散更新、执行器能力或势函数形状影响,参考路线本身不能消除这些条件。应分别检查高层路线的几何可行性与低层闭环实际响应,并明确两层如何交换目标。组合能够补足职责,但不能把一个模块的保证自动传给整个系统。

七、约束势函数结构,或保留方向直方图

八、自测与参考答案

1.证明 UU 一直下降,为什么仍不能保证机器人到达目标?

因为还可能存在其他驻点,梯度在那里为零。下降性质只约束函数变化,需要额外证明目标是相关区域内唯一可吸引驻点,才能进一步谈全局收敛。

2.末端的距离始终为正,能否说明整只机械臂安全?

不能。中间连杆有独立几何位置,可能碰撞。必须检查全身几何或足够保守的近似,并把对应避障作用映射到关节空间。

3.增加排斥增益是否总能减少碰撞?

不总能。真实电机有饱和,采样有延迟,过大指令可能产生振荡。有效设计应结合速度、制动能力和感知范围;软件中的巨大虚拟力并不等于硬件能够产生的响应。