尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

30+路径规划算法终极图解:5分钟从搜索式到采样式快速上手

30+路径规划算法终极图解:5分钟从搜索式到采样式快速上手 30路径规划算法终极图解5分钟从搜索式到采样式快速上手【免费下载链接】PathPlanningCommon used path planning algorithms with animations.项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning如果你家里有台扫地机器人多半见过它卡墙角的名场面反复试探、原地打转最后靠乱撞脱身。真正决定它聪不聪明的是藏在背后的路径规划算法。开源项目 PathPlanning 把这些算法一网打尽——收录 30 余种常用路径规划算法覆盖搜索式与采样式两大流派还为每个算法都配了动画演示让看不见的思考过程变得一目了然。读完这篇文章你会弄清楚两件事路径规划为什么会分化出两个性格迥异的流派以及面对真实问题时该挑哪把钥匙。一次卡墙角事故暴露了路径规划的本质难题先别急着看代码想一个最简单的场景机器人在房间里要从 A 点走到 B 点中间横着几面墙。数学上这就是在所有可能位置构成的空间里找一条从起点到终点、且不穿过障碍的连续路径。听起来简单难点却藏在细节里地图是已知还是边走边发现路径能走通就够还是必须最短最省空间是 2D 平面还是带朝向、带运动约束的高维空间不同的答案催生了不同的算法家族。PathPlanning 项目正是按这个逻辑组织的Search_based_Planning 与 Sampling_based_Planning 两大目录分别对应两套截然不同的世界观。搜索式规划摊开地图精打细算的完美主义者把空间切成格子搜索式规划的底层世界观搜索式规划先把环境离散化成一张栅格地图每个格子要么可通行、要么是障碍。规划问题随之变成图搜索问题在一张巨大的网格图里找最短路径。项目中的 Search_based_Planning/Search_2D 目录就是这座格子世界的试验场BFS、DFS、Dijkstra、A* 等经典算法一字排开。A* 算法为什么快关键在于一个预感A* 是搜索式家族里最出名的成员。它和 Dijkstra 的唯一区别是给每个节点算分时多了一个启发项核心逻辑在 Search_based_Planning/Search_2D/Astar.py 里只有一行def f_value(self, s): return self.g[s] self.heuristic(s)g是从起点走到当前节点已经付出的代价heuristic则是预估到终点还要走多远项目支持曼哈顿距离与欧氏距离两种。你可以把 A* 理解成一个既有账本、又有直觉的向导——账本保证不偏航直觉让它直奔目标。运行 Astar.py 后会自动生成动画动画里蓝色点为起点、绿色点为终点、灰色为障碍物你能清楚看到搜索区域如何有方向地扩张最后收敛出一条最短路径。当环境会变脸D* Lite 与增量重规划搜索式的短板也很明显一旦障碍物变化比如有人挪了把椅子整张图可能要重新搜一遍。于是诞生了 D*、D* Lite 这类增量算法——它们只修补受影响的局部而不是推倒重来非常适合机器人在部分未知环境中边走边修正采样式规划不建全图摸黑探路的冒险家RRT 的三板斧随机点、最近邻、迈一步搜索式在高维空间里会遭遇维度灾难——格子爆炸根本搜不完。采样式规划换了个思路不枚举所有格子而是随机撒点、边探边走。RRT快速探索随机树是这一派的代表作它的核心循环在 Sampling_based_Planning/rrt_2D/rrt.py 里只有三步随机采样以一定概率直接采目标点让树有奔头其余时候在地图里随机取点最近邻从已长成的树里找到离采样点最近的节点迈一步朝随机点方向走固定步长无碰撞就长出新节点。动画里那棵疯狂生长的树就是机器人盲人摸象般探索环境的过程。你也一眼能看出它的缺点路径歪歪扭扭既不光滑也谈不上最优。RRT-Connect 让两棵树从起点和终点同时生长、双向奔赴收敛速度立刻翻倍。从找得到路到找得到好路最优化的军备竞赛如果说第一代采样算法解决的是能不能到接下来的演进全在回答能不能到得漂亮RRT*长出新节点后多一步重连rewire不断用更短的路径替换旧连接最终逼近最优解Informed RRT*找到一条可行路径后把采样范围收窄到以起终点为焦点的椭圆内集中火力优化FMT*与BIT*引入启发式与批量搜索思想让随机探索变得有计划。对比 RRT 与 RRT* 的动画你会直观体会到前者是碰运气后者是在优化—再优化的循环里稳步收敛。这正是现代自动驾驶、无人机航迹规划普遍选用星字辈算法的原因。从 2D 到 3D从折线到曲线真实机器人的最后一公里平面上的折线路径对轮式机器人毫无意义——它有朝向还有最小转弯半径。PathPlanning 的第三块拼图在这里补齐rrt_3D 与 Search_3D 目录把二维算法扩展到三维空间如 rrt_star3D.py、informed_rrt_star3D.py、Astar3D.py适用于无人机与机械臂场景CurvesGenerator 目录专门解决折线没法直接执行的问题。Dubins 曲线与 Reeds-Shepp 曲线考虑最小转弯半径和前进/后退贝塞尔曲线、B 样条、五次多项式则负责把折线磨平成可跟踪的光滑轨迹。所以一套完整的机器人导航方案通常是算法找路 曲线平滑的组合拳先用规划算法算出大方向再用曲线生成器把路径变成机器人真正开得动、转得了的轨迹。路径规划算法快速上手五个步骤跑通第一个 Demo纸上得来终觉浅动手最快全程大约五分钟克隆仓库git clone https://gitcode.com/gh_mirrors/pa/PathPlanning先跑最经典的 A*python Search_based_Planning/Search_2D/Astar.py弹出动画窗口再跑 RRTpython Sampling_based_Planning/rrt_2D/rrt.py感受两种流派的视觉差异打开 Search_based_Planning/Search_2D/env.py 和 Sampling_based_Planning/rrt_2D/env.py改几个障碍物坐标观察算法如何适应对照各 gif 目录里的成品动画验证你的理解。这里藏着一个不错的实验把 Astar.py 里的heuristic_type在 manhattan 与 euclidean 之间来回切换观察搜索效率的变化——这是理解 A* 精髓成本最低的实践。场景选型速查表面对实际问题该拿哪把钥匙你的场景推荐算法代码位置静态地图、追求最短路径Dijkstra / A*Search_based_Planning/Search_2D/环境动态变化、需要边走边重规划D* Lite / Anytime D*Search_based_Planning/Search_2D/高维空间、约束复杂RRT* / Informed RRT* / BIT*Sampling_based_Planning/rrt_2D/车辆或无人机需要运动学约束Dubins / Reeds-Shepp 样条平滑CurvesGenerator/三维空间任务Astar3D / rrt_star3D 系列Search_3D 与 rrt_3D 目录写在最后把动画当显微镜从模仿走向理解路径规划算法常被论文里的数学公式劝退但它的核心思想其实很朴素搜索式靠全盘计算求最优采样式靠随机试探破维度而所有后续改进都在用启发式、增量、批量等技巧让这两个极端互相靠拢。PathPlanning 的最大价值是给每个抽象算法配了一台显微镜——动画把搜索顺序、树的生长、路径的收敛过程全部可视化。建议你每学一个算法先看动画、再读代码、最后回到论文沿着这条由浅入深的路线很快就能建立起对路径规划算法的完整直觉。【免费下载链接】PathPlanningCommon used path planning algorithms with animations.项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表