当前位置: 首页 > news >正文

2.2.1 - 3D图搜索算法(以A*为例) - Python运动规划库教程(Python Motion Planning)

前序教程请参照专栏,如您是从0开始阅读,可以直接跳到Python运动规划库教程(Python Motion Planning)-0-简介与安装。

定义起点和终点。本库直接用元组表示坐标点。在栅格地图坐标系里,元组中的数值都是整数。如果是世界坐标系则是浮点数。

start=(25,5,5)goal=(5,25,25)

将起点和终点添加到栅格地图中。这个是为了方便起点和终点的可视化,同时可以清除对应点的障碍物防止规划失败。

map_.type_map[start]=TYPES.START map_.type_map[goal]=TYPES.GOAL

创建路径规划器并规划路径。这里以A*算法为例。规划函数返回地图坐标系路径和详细规划信息(包括成功与否、路径长度、路径代价、扩展结点等)。

planner=AStar(map_=map_,start=start,goal=goal)path,path_info=planner.plan()print(path)print(path_info)

打印规划结果:

[(25, 5, 5), (24, 6, 6), (23, 7, 7), (22, 7, 8), (21, 7, 9), (20, 7, 10), (19, 7, 10), (18, 7, 11), (17, 7, 12), (16, 8, 13), (15, 9, 14), (14, 9, 15), (13, 10, 16), (12, 11, 17), (11, 12, 18), (10, 12, 18), (9, 13, 19), (9, 14, 19), (8, 15, 20), (7, 16, 21), (6, 17, 22), (5, 18, 23), (5, 19, 23), (5, 20, 23), (5, 21, 23), (5, 22, 23), (5, 23, 24), (5, 24, 25), (5, 25, 25)] {'success': True, 'start': (25, 5, 5), 'goal': (5, 25, 25), 'length': 40.09831818981128, 'cost': 40.09831818981128, 'expand': {(25, 5, 5): Node((25, 5, 5), None, 0, 34.64101615137755), ...}}

可视化。

map_.fill_expands(path_info["expand"])vis=Visualizer3D()vis.plot_grid_map(map_)vis.plot_path(path)vis.show()vis.close()

完整的可运行代码:

importrandom random.seed(0)importnumpyasnp np.random.seed(0)frompython_motion_planning.commonimport*frompython_motion_planning.path_plannerimport*frompython_motion_planning.controllerimport*map_=Grid(bounds=[[0,31],[0,31],[0,31]],resolution=1.0)foriinrange(75):rd_p=tuple(np.random.randint(0,30,size=3))map_.type_map[rd_p[0],rd_p[1],:rd_p[2]]=TYPES.OBSTACLE map_.inflate_obstacles(radius=3)start=(25,5,5)goal=(5,25,25)map_.type_map[start]=TYPES.START map_.type_map[goal]=TYPES.GOAL planner=AStar(map_=map_,start=start,goal=goal)path,path_info=planner.plan()print(path)print(path_info)map_.fill_expands(path_info["expand"])vis=Visualizer3D()vis.plot_grid_map(map_)vis.plot_path(path)vis.show()vis.close()

如需了解更多图搜索规划器及其参数,请参阅官方教程文档中的API Reference部分。

http://www.jsqmd.com/news/472729/

相关文章:

  • Mysql安装测试--初入心得
  • Flutter 三方库 async_recursion 的鸿蒙化适配指南 - 稳健的异步递归治理,征服鸿蒙深层数据结构
  • ArkClaw让“养虾”更安全!火山引擎AI助手安全解决方案全面升级
  • 数据结构STL库(从入门到精通,适合小白)
  • 记一次 .NET 某放射治疗光学定位软件 卡死分析
  • 从通用Agent到领域Agent:技术原理与演进路径
  • 人工智能之数学基础:全微分的介绍
  • 【快速见刊】第二届生态环境保护、环境监测与修复国际学术会议(EPEMR 2026)
  • Jvm和垃圾回收精讲
  • 基于 ESP32S3 的 LVGL 9.4 图形库移植与 UI 开发实践分享(课程作业)
  • 鸿蒙常见问题分析三十三:如何解决Column子组件超出容器边界
  • OJ50 51 52
  • Leecode 18. 四数之和
  • 2026商家寄件价格避坑指南:5个省钱雷区别再踩!
  • SQL-存储引擎
  • Flutter 三方库 argos_translator_offline 的鸿蒙化适配指南 - 让机器翻译回归“端侧隔离”,打造鸿蒙应用专家级的离线多语言 AI 治理中台
  • 盘点10大主流AI Agent框架(非常详细),多智能体技术从入门到精通,收藏这一篇就够了!
  • 基于 Java + SpringBoot + Vue + MySQL 的游戏账号交易系统实战指南
  • 《MPMLS》 2026.3.12
  • 【Day4】
  • 推荐斯坦福计算机课程CS146S:当代软件工程师
  • 深度剖析DbContext的ChangeTracker:Entity状态管理与数据持久化关键
  • JMM——Java内存模型简介
  • 2026年电商生鲜海报制作复盘:从选图到定稿的全流程
  • AI Agent 实战:从零搭建你的第一个智能助手
  • 代码随想录Day2
  • 【2026最新版】PCL点云处理算法汇总(C++长期更新版)
  • Node.js RESTful API 深入解析
  • 2026年新能源汽车市场将走向何方?这份深度调研为你揭晓答案!
  • 好软推荐-自用软件