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

资讯详情

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

路径规划地图表示怎么选?一文学会3种主流方案

路径规划地图表示怎么选?一文学会3种主流方案 路径规划地图表示怎么选一文学会3种主流方案【免费下载链接】PathPlanningCommon used path planning algorithms with animations.项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning假如你让一台扫地机器人从客厅去厨房它装了顶级的寻路算法却还在门口原地打转——问题多半不在算法而在地图表示。路径规划的第一步永远是把真实世界翻译成机器能读的地图。《PathPlanning》正是一个用动图演示常见路径规划算法的开源项目覆盖基于搜索与基于采样两大体系还自带动画和曲线生成工具非常适合边看边学。第一步先想清楚——为什么路径规划离不开地图表示你会不会也遇到过这种困惑看了一堆 A*、RRT 的讲解代码也能跑但换成自己的场景就懵了原因很简单所有寻路算法都在地图上工作地图怎么画决定了算法怎么跑。把地图表示拆开看它其实在回答三个问题世界长什么样——障碍物在哪、哪些地方能走信息怎么存——用格子、用点、还是用节点关系代价怎么算——走一步要付出多少成本。《PathPlanning》把这个问题讲得很透彻Search_based_Planning目录演示的是在格子上搜索Sampling_based_Planning目录演示的是在连续空间里撒点。下面我们就照着这个思路逐一看懂三种主流的导航图纸。方案一栅格地图——把世界切成格子A* 就能跑通全局搜索想象你给机器人画的第一版图纸把地面画满均匀的小方格每个格子要么是空的可通行要么涂黑障碍物。这张像素画就是栅格地图它是路径规划地图表示里最容易上手的一种也是很多人学 A*、Dijkstra 时用的第一张图。栅格地图路径规划的精髓在于搜索把每个空格当成一个节点机器人在格子里一步步挪每挪一步就累加代价最终找到起点到终点的通路。A* 之所以聪明是因为它给每个格子算一个综合分数f g h——g是已经走过的真实代价h是估算的剩余代价优先扩展总分最小的格子所以既不会乱逛又能保证找到最短路径。上图就是《PathPlanning》里 A* 在 51×31 栅格上的真实运行效果蓝色起点、绿色终点、灰色障碍算法从起点一层层向外扩展最终连成一条最优折线。想自己跑一遍打开Search_2D/Astar.py环境定义在Search_2D/env.py中障碍物就是一组格子坐标改动起来非常直观。栅格地图的优点实现简单、结果完备且最优、天然适合教学和静态小场景。短板也很明显分辨率越高格子越多到三维空间或机械臂关节空间时格子数量会指数级爆炸——这就是著名的维度灾难。方案二采样地图——随机撒点专治高维空间的维度灾难既然格子在高维空间里铺不开了换个思路干脆别预先建全图边探索边画图。采样地图路径规划就是这么干的——在连续空间里随机撒点再把点连成树或图找到一条能走的路。以最经典的 RRT 为例它的套路只有四步在空间里随机撒一个点在已有的树上找离它最近的节点从最近节点向新点走一小步生成新节点做碰撞检测没撞障碍就挂到树上继续循环。看上面的动画就明白了树从起点疯狂长向终点路径弯弯绕绕但总能到。RRT 家族还有很多变体值得玩RRT* 在插入新节点后会对邻域重连优化路径越来越接近最优RRT-Connect 从起点和终点同时长两棵树双向奔赴、速度翻倍Informed RRT* 则把采样范围缩小到椭圆内收敛更快。《PathPlanning》的Sampling_based_Planning/rrt_2D/目录里rrt.py、rrt_star.py、rrt_connect.py、informed_rrt_star.py一字排开环境用矩形和圆形障碍表示、坐标连续可以对照着看不同策略的差异。想体验高维还有rrt_3D/目录的三维版本在等你。采样地图的优点不依赖完整地图、能处理高维空间、实现成本低。短板路径有随机性、一般不是最优需要靠 RRT* 这类改进版来弥补。方案三拓扑化抽象 曲线生成——把粗糙折线打磨成能开的路看到这里你可能会问栅格和采样出来的路径都是折线机器人真的能沿着它走吗能走但很难受——拐角急、车身姿态不对轮子分分钟打滑。这就引出了第三种思路拓扑化的抽象表达 曲线抛光。拓扑地图把环境抽象成节点 连接类似人脑里的地标 路线数据量小、支持语义导航。而采样地图长出的那棵树本质上就是一种自下而上长出来的图结构。真正让路径能开的是《PathPlanning》里常被忽略的CurvesGenerator模块——它提供贝塞尔曲线、B样条、三次样条、五次多项式、Dubins 曲线、Reeds-Shepp 曲线等生成算法专门负责把折线路径平滑成连续、可执行的运动轨迹。如果把栅格搜索比作确定走哪条路曲线生成就是把这条路修得丝滑。前者解决能不能到后者解决好不好走。例如CurvesGenerator/quintic_polynomial.py中的五次多项式会同时约束起点和终点的位置、速度、加速度生成一条平滑且满足运动学约束的曲线Dubins 和 Reeds-Shepp 则专为汽车类模型设计考虑最小转弯半径。从粗糙路径到精致轨迹这一步就是工程落地和纯算法演示的分水岭。一张对比表栅格、采样、拓扑怎么选地图表示粒度构建方式代表算法最大优势明显短板栅格地图均匀网格单元预先静态标注 0/1A*、Dijkstra、D* Lite实现简单、可保证最优高维空间格子爆炸采样地图连续空间随机点边探索边建树RRT、RRT*、Informed RRT*高维高效、无需全图路径非最优、有随机性拓扑抽象 曲线节点与连接关系关键位置抽象 曲线拟合配合 CurvesGenerator 使用数据量小、轨迹平滑细节需靠局部规划补齐实际项目里怎么选记住三条经验就够静态小场景如仓库 AGV、教学演示→ 优先栅格地图简单可靠高维或动态环境如机械臂、无人车→ 用采样地图再配 RRT* 优化资源受限或做语义导航如从会议室到电梯→ 用拓扑抽象路径交给曲线生成器抛光。动手试试在《PathPlanning》里跑通你的第一张地图理论聊完了接下来我们试试亲手跑起来克隆仓库git clone https://gitcode.com/gh_mirrors/pa/PathPlanning装好numpy和matplotlib先跑栅格地图进入Search_based_Planning/Search_2D/运行Astar.py观察动图窗口里节点如何扩展出最短路径再体验采样地图进入Sampling_based_Planning/rrt_2D/运行rrt.py看随机树生长再换成rrt_star.py感受路径逐步优化的过程最后玩曲线运行CurvesGenerator/quintic_polynomial.py看折线如何被平滑成连续轨迹。对初学者来说这个项目最大的价值是**看得见**每个算法的中间过程都动态呈现地图表示和搜索策略的区别一目了然对开发者而言两套体系的代码互相独立、易于移植是快速搭建路径规划实验台的绝佳起点。把三种图纸都玩一遍你对路径规划的理解会从会背概念升级成真的懂怎么选。【免费下载链接】PathPlanningCommon used path planning algorithms with animations.项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表