十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

路径规划算法到底怎么选?从A*到RRT*的完整选型思路与快速上手

路径规划算法到底怎么选?从A*到RRT*的完整选型思路与快速上手 路径规划算法到底怎么选从A到RRT的完整选型思路与快速上手【免费下载链接】PathPlanningCommon used path planning algorithms with animations.项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanningPathPlanning 是一个收录了 40 种常见路径规划算法、并为每种算法都配上动态演示动画的开源项目覆盖搜索式与采样式两大技术流派。这篇文章不贴大段源码而是带你走一遍面对一堆算法时到底该选谁的完整思考路径读完你就能看懂 A*、RRT*、D* Lite 这些名字背后各自的强项与软肋。先回答一个扎心的问题算法收藏了几十个为什么真要用时还是懵打开这个仓库的目录树很多人第一反应是头大rrt.py、rrt_star.py、rrt_star_smart.py、informed_rrt_star.py、batch_informed_trees.py……光是 RRT 一个家族就挤了快十个文件搜索那边也好不到哪去D*、D* Lite、LPA*、Anytime D* 长得都像三胞胎。死记硬背它们的区别是效率最低的学习方式因为这类算法的差异本质上是行为差异而非公式差异。好在项目里每种算法都配了 GIF 演示把搜索树的生长、路径的收敛过程一帧帧放给你看。看十遍动图比抄十遍公式更接近真相。这里先给出全文的核心主张不存在最好的路径规划算法只存在最适合当前环境的那一个。下文就是帮你建立这套判断框架。建立坐标系搜索式与采样式是两条完全不同的技术路线选算法之前先分清两大阵营这一步能帮你砍掉一半的纠结。搜索式Search-based算法以栅格地图为舞台把环境切成一格一格然后在格子上做带代价的遍历。典型代表有 Dijkstra、A*、D* Lite。它们的特点是结果确定、可以复现很多还带严格的最优性证明——只要条件满足找到的就是最短路径。采样式Sampling-based算法则干脆不切格子直接在连续空间里随机撒点、连点成树一点点探出一条路。典型代表是 RRT 家族、FMT*、BIT*。它们的特点是不依赖精确的地图建模天然适合关节多、维度高的机器人代价是结果带随机性且通常只能保证概率完备、渐进最优。打个生活化的比方搜索式像拿着地图在迷宫里逐格对照方向感强、不绕路采样式像蒙着眼往黑暗里扔石子探路前期粗糙但扔得越多、路修得越直最后也能逼近一条好路。搜索派怎么选从 Dijkstra 到 A*再到会打补丁的 D* Lite搜索派内部也有清晰的进化链条理解了这条线你就掌握了多数搜索算法的来龙去脉。第一步Dijkstra 是地基。它从起点出发像水波一样朝四周均匀扩散逐格刷新最小代价直到终点被淹没。代价是它毫无方向感地图一大就慢。第二步A给搜索装上指南针。* 它在 Dijkstra 的代价之外额外估算到终点还有多远让扩展方向明显偏向终点一侧探索量大幅下降。这也是 2D 栅格场景里出镜率最高的路径规划算法源码位于Search_based_Planning/Search_2D/Astar.py。第三步DLite 解决地图中途变了的问题。* 前面两位都假设障碍物静止一旦环境动态变化就得整盘重算。D* Lite 只修复受影响的那一小片区域像给规划结果打补丁适合扫地机器人在家具被挪动后快速重新规划。同样的思路也扩展到了 3D 空间见Search_based_Planning/Search_3D/DstarLite3D.py。此外Search_2D目录下还有双向 A*、ARA*、LPA*、LRTA* 等变体分别对应两端同时搜随时中断拿次优解长期记忆地图等不同需求可以作为进阶阅读。采样派怎么选RRT、RRT* 与 Informed RRT* 的进化链条采样派内部同样有一条清晰的越来越强的进化线看懂这条线RRT 家族基本就通关了。第一代 RRT纯靠莽。随机撒点、就近连接、朝新点生长一小段如此往复树就在地图里野蛮生长起来直到够到终点。第二代 RRT学会悔棋。* 它每接入一个新节点就检查附近的已有节点如果绕道这个新节点更近就重新接一下线。随着采样量增加路径会被反复优化最终逼近最优解——这就是论文里常说的渐进最优。第三代 Informed RRT把力气用在刀刃上。* 前两代在整个地图撒点很多采样是浪费的。Informed RRT* 在找到第一条可行路径后就把采样范围收缩到以起点终点为焦点的椭圆内后续采样全部集中在这个有希望的区域收敛速度快一大截。这条链再往后还有双向生长的 RRT-Connect、结合动态规划的 FMT*、用启发式引导批量采样的 BIT*以及面向三维空间的一整套rrt_3D实现路径都集中在Sampling_based_Planning/目录下适合按兴趣逐层深入。一表看懂不同场景下该把票投给谁把两大阵营摆到同一张表里对比选型逻辑会非常清楚考量维度搜索式A*、Dijkstra、D* Lite采样式RRT*、Informed RRT*环境建模需要栅格化环境越大栅格越重只需碰撞检测无需显式建图最优性多数有严格最优保证渐进最优无限采样才收敛高维场景栅格爆炸难以扩展天然适配机械臂/无人机首选动态环境D* Lite 等增量派很擅长需配合 Dynamic-RRT 等重规划结果确定性确定、可复现带随机性多次运行路径不同实现成本逻辑直观易调试调参步长、采样策略较繁琐据此可以给出三条粗线条的选型建议仓库/工厂 AGV 在静态栅格地图上搬运→ 直接上 A*简单可靠六轴机械臂或无人机做高维避障→ 选 RRT* 或其加速变体先把维度问题解决环境里障碍物会动人走来走去→ 用 D* Lite 或 Dynamic-RRT 这类支持重规划的家伙。别忘了收尾一步用曲线平滑把折线路径变成能开的路线很多新手跑通 A* 或 RRT* 后以为大功告成结果把折线路径发给机器人发现根本走不了——因为轮式机器人、车辆都有转弯半径和运动学约束没法在拐点处原地转向。这个收尾工作由CurvesGenerator/目录下的曲线生成模块负责贝塞尔曲线和B 样条曲线能把折线路径磨成光滑曲线适合自由移动的机器人三次样条适合需要平滑加加速度的场景而Dubins 曲线和Reeds-Shepp 曲线则专门为只能前进 / 可前进可后退、且转弯半径受限的车辆设计是自动泊车、自动驾驶路径平滑里的常客。快速上手三步跑通你的第一个路径规划示例理论铺垫完毕动手环节其实很简单克隆仓库git clone https://gitcode.com/gh_mirrors/pa/PathPlanning跑第一个搜索算法运行Search_based_Planning/Search_2D/Astar.py你会看到 A* 在栅格地图上一步步逼近终点的完整过程再跑一个采样算法运行Sampling_based_Planning/rrt_2D/rrt.py对比一下随机树的野蛮生长和 A* 的定向搜索到底差在哪。进阶玩法把地图里的障碍物挪个位置观察 D* Lite 如何只修补局部路径再打开rrt_3D/里的脚本体验一把高维空间规划最后用CurvesGenerator/的样条脚本把生成的折线路径变成一条丝滑曲线。整个仓库没有复杂的依赖装上matplotlib、numpy、scipy就能跑。写在最后路径规划的学习曲线之所以吓人不是因为公式难而是因为算法太多、看着像、摸不清各自脾气。PathPlanning 的价值正在于此它把 40 多种算法连同动画一起摊开摆在你面前让你用眼睛而不是用公式去理解每一派算法到底在干什么。下次再遇到选型问题先问自己三个问题——地图是栅格还是连续维度有多高环境会不会变答案出来了算法自然也就选出来了。【免费下载链接】PathPlanningCommon used path planning algorithms with animations.项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表