RobotsWiki

在线工具 · 运动规划

路径规划实验室 · A* / RRT / 势场法

同一张地图,三种找路思路:A* 在栅格上搜索最优路径,RRT 用随机树探索空间,势场法顺着「下坡」滚向目标。画几块障碍、拖动起点终点,看它们各自的优点与死穴。

三种算法同场免登录

地图 · 拖动起点/终点,空白处画障碍

地图

改动地图、参数或起终点后自动重跑

动画速度4×
启发权重 w(× 欧氏距离)1.0

w = 1 保证最优;调大进入贪心模式,扩展节点骤减,路径可能略贵。

实时指标

状态
规划中…
路径长度(格)
0.0
扩展节点
0
开放集
0

三种算法怎么选?

A* 要栅格地图,保证最优,但维数一高就存不下:机械臂 6 个关节的栅格,内存直接爆炸。RRT 不建栅格,撒点采样即可,高维照常工作,代价是路径歪歪扭扭,一般要再平滑。势场法计算量最小,能对移动障碍实时反应,但会被局部极小卡住。工程上常分两层:上层 A* / RRT 出全局路径,底层势场做实时避障。

A* 的关键在启发函数

f(n) = g(n) + w·h(n)。h 不高估真实剩余代价(可采纳)时结果最优;w 调大是「贪心模式」,扩展节点数骤减,路径可能不再最优。栅格上 h 取欧氏距离(8 邻接)或曼哈顿距离(4 邻接)。本工具允许对角移动,对角代价 √2,比只许直走的路径更短更自然。

RRT 为什么扛得住高维?

它不在每个格子存信息,而是直接采样构型空间:随机撒一个点,找到树上离它最近的节点,朝它长一步,碰撞检测通过就接入。空间再大,采样照常进行。goal bias 让树不至于漫无目的地铺开。要最优性用 RRT*:新节点在邻域内择优重连,路径随采样数渐近收敛到最优。MoveIt 里的 RRT-Connect 是它的双向版本。

势场法:快,但有死穴

目标产生引力,障碍产生斥力,机器人沿负梯度走。每步只算局部受力,几百赫兹不成问题,对突然冒出来的障碍反应极快。代价是局部极小:凹形障碍前引力斥力抵消,机器人停住或来回振荡(试试「凹槽陷阱」预设)。解法有波前场、随机逃逸扰动,或者干脆上层用图搜索兜底。