路径规划·势场法 返回
机器人·路径规划

机器人路径规划·势场法仿真器

在引力·斥力组合势场中对机器人(质点)进行实时路径计算。包含势能彩色图、局部极小点检测及简易RRT对比。

参数
势能系数
引力系数 k_att
斥力系数 k_rep
影响半径 d₀
起点 / 目标点
起点 X
起点 Y
目标 X
目标 Y
障碍物 (3)
计算结果
路径长度
迭代次数
局部极小点
计算时间 [ms]
路径效率
到达目标
Pp
理论与主要公式

引力势能:

$$U_{att}= \tfrac{1}{2}k_{att}\cdot d_{goal}^2$$

斥力势能(当 $d_{obs}< d_0$ 时):

$$U_{rep}= \tfrac{1}{2}k_{rep}\left(\frac{1}{d_{obs}}- \frac{1}{d_0}\right)^2$$

合力:$\mathbf{F}= -\nabla(U_{att}+ \sum U_{rep})$

什么是机器人路径规划·势场法

🙋
这个“势场法”听起来好玄乎,它到底是什么呀?
🎓
简单来说,你可以把它想象成一个“磁铁游戏”。目标点像一块大磁铁,用引力把机器人吸过去;而障碍物则像另一块磁铁,用斥力把机器人推开。机器人就像一个小铁球,在引力和斥力的共同作用下,自己找路绕开障碍物滚向目标。你试着在模拟器里拖动一下“起点”和“目标”的位置,就能看到机器人立刻开始规划新路径了。
🙋
诶,真的吗?那如果我把“斥力系数”调得特别大,会发生什么?
🎓
在实际工程中,这就像让机器人变得“极度胆小”。如果斥力太强,机器人会远远地躲开所有障碍物,路径会变得又长又绕,甚至可能因为障碍物之间的斥力场太强,导致机器人在中间“卡住”,也就是陷入了“局部极小点”。你可以在模拟器里把“k_rep”滑块向右拉到头,然后观察机器人的轨迹变化,是不是变得小心翼翼了?
🙋
哦!那这个“局部极小点”听起来是个大麻烦,有什么办法能解决吗?
🎓
没错,这是势场法的一个经典问题。比如在狭窄的走廊里,左右墙壁的斥力和前方目标的引力可能刚好平衡,机器人就停在那里不动了。工程现场常见的解决办法是结合其他算法。你可以点击模拟器里的“RRT对比”按钮看看。RRT算法会像一棵随机生长的树去探索空间,虽然路径可能不光滑,但能保证找到出路,常和势场法配合使用。

物理模型与关键公式

机器人感受到的总势能,是目标点产生的“引力势能”与所有障碍物产生的“斥力势能”之和。机器人总是沿着势能下降最快的方向(即负梯度方向)运动。

$$U_{total}= U_{att}+ \sum U_{rep}$$

其中,$U_{total}$是总势能,$U_{att}$是引力势能,$\sum U_{rep}$是所有障碍物产生的斥力势能之和。

引力势能使机器人趋向目标,其大小与到目标点距离的平方成正比;斥力势能则使机器人远离障碍物,只在障碍物影响范围内生效。

$$ \begin{aligned}U_{att}&= \frac{1}{2}k_{att}\cdot d_{goal}^2 \\[6px] U_{rep}&= \begin{cases}\frac{1}{2}k_{rep}\left( \dfrac{1}{d_{obs}}- \dfrac{1}{d_0}\right)^2, & \text{if }d_{obs}< d_0 \\ 0, & \text{if }d_{obs}\ge d_0 \end{cases}\end{aligned}$$

$k_{att}$:引力系数,控制吸引力强度。
$k_{rep}$:斥力系数,控制排斥力强度。
$d_{goal}$:机器人到目标点的距离。
$d_{obs}$:机器人到障碍物表面的最近距离。
$d_0$:障碍物的影响半径,在此范围内斥力才生效。

现实世界中的应用

工厂AGV/AMR运输机器人:在自动化仓库中,自主移动机器人使用势场法进行实时局部避障。当激光雷达检测到突然出现的工人或货架时,机器人能迅速计算斥力,平滑地绕行,同时保持向目标货架前进的总体趋势。

无人机集群编队与避障:多架无人机在执行编队飞行时,每架无人机都将队友视为动态障碍物产生斥力场,将目标航点视为引力源。这使得集群能保持队形的同时,灵活规避突发障碍。

汽车辅助驾驶与自动泊车:在自动泊车系统中,车辆将目标车位作为引力点,将周围车辆、柱子和墙壁作为斥力障碍物,规划出一条平滑、安全的入库轨迹,并实时调整。

机械臂关节空间规划:在机械臂控制中,将关节角度空间映射为势场,目标姿态产生引力,可能导致碰撞或超出关节限位的区域产生高斥力势垒,从而规划出安全、高效的运动轨迹。

常见误解与注意事项

首先,人们常误以为“只要增大系数就一定能提升性能”,但这种想法是危险的。例如,若将斥力系数$k_{rep}$设置得过大,障碍物周围的斥力“陡坡”会过于陡峭,导致机器人产生振动或无法通过狭窄通道。反之,若引力系数$k_{att}$过强,机器人会强行贴近障碍物边缘通过,增加碰撞风险。关键在于平衡——例如在仓库的宽阔通道中,可从$k_{att}=1.0, k_{rep}=0.5$左右开始调试;而在狭窄通道中,则需要缩小斥力影响半径$d_0$,这种基于场景的调参必不可少。

其次,“计算量轻所以实时更新很容易”也是一种误解。虽然单步计算确实轻量,但当机器人陷入局部极小值时,会持续在原地计算,进入“无限循环”状态。实际实现时必须设置最大步数限制,或为停滞状态添加随机微小扰动等安全机制

最后,本模拟器的“点质量”模型是高度理想化的。实际机器人具有尺寸与形状。例如规划宽度60cm的运输机器人时,需将障碍物半径加上机器人半径,以“膨胀障碍物”进行考量。在模拟器中尝试放大障碍物设置,可以直观体会这一概念。