# AGV-map **Repository Path**: openwcs/agv-map ## Basic Information - **Project Name**: AGV-map - **Description**: 一个基于PyQt5开发的AGV(自动导引车)仿真系统,具有炫酷的界面和完整的功能框架,包含强大的地图编辑器。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-28 - **Last Updated**: 2025-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AGV模拟器 一个基于PyQt5开发的AGV(自动导引车)仿真系统,具有炫酷的界面和完整的功能框架,包含强大的地图编辑器。 ## 页面展示 ![Map](images/agv_map_01.gif) ![Map](images/agv_map_nav.gif) ![Map](images/agv_map_02.png) ![AGV模拟器](images/agv.png) ![Map00](images/map_01.png) ![Map01](images/map_02.png) ![Map02](images/map_00.png) ## 功能特性 ### 🚀 核心功能 - **多AGV仿真**: 支持同时仿真多个AGV,每个AGV具有独立的状态和行为 - **实时可视化**: 炫酷的2D可视化界面,实时显示AGV位置、状态和轨迹 - **任务调度**: 支持手动和自动任务分配,AGV可以执行移动任务 - **电量管理**: 模拟AGV电量消耗和充电过程 - **地图编辑器**: 功能强大的可视化地图编辑工具 ### 🗺️ 地图编辑器特色 - **多种元素类型**: 支持障碍物、充电站、路径点、装载区、卸载区、站点 - **站点系统**: 丰富的站点类型和属性,支持角度控制、容量管理、操作时间设置 - **路径连接**: 智能路径连接系统,支持多路径、自动距离计算、方向显示 - **多路径支持**: 同一对站点间可创建多条不同属性的路径连接 - **可视化编辑**: 直观的拖拽式编辑界面,实时预览 - **精确控制**: 支持网格对齐和精确坐标输入 - **实时预览**: 编辑结果实时同步到仿真器 - **缩放平移**: 鼠标滚轮缩放,中键拖拽平移 - **属性编辑**: 详细的属性面板编辑,支持站点角度、路径属性等 - **保存加载**: 完整的地图保存和加载功能,支持JSON格式 ### 🎨 界面特色 - **现代化设计**: 深色主题,科技感十足 - **响应式布局**: 自适应窗口大小,支持面板调整 - **实时更新**: 所有数据和状态实时更新显示 - **交互友好**: 支持鼠标点击选择AGV和设置目标位置 ### 🔧 技术特点 - **清晰架构**: 采用MVC模式,代码结构清晰 - **模块化设计**: 核心逻辑与UI分离,易于扩展 - **信号槽机制**: 使用PyQt5信号槽实现组件间通信 - **面向对象**: 完全面向对象的设计,便于维护 ## 项目结构 ``` agv_simulator/ ├── main.py # 程序入口 ├── test_map_editor.py # 地图编辑器测试脚本 ├── requirements.txt # 依赖包列表 ├── README.md # 项目说明 ├── MAP_EDITOR_GUIDE.md # 地图编辑器使用指南 ├── run.bat # Windows启动脚本 └── src/ # 源代码目录 ├── __init__.py ├── core/ # 核心模块 │ ├── __init__.py │ ├── agv.py # AGV类定义 │ └── simulator.py # 仿真器核心类 └── ui/ # 用户界面模块 ├── __init__.py ├── main_window.py # 主窗口 ├── simulation_view.py # 仿真视图 ├── control_panel.py # 控制面板 ├── map_editor.py # 地图编辑器核心 ├── map_editor_window.py # 地图编辑器窗口 ├── property_panel.py # 属性编辑面板 └── styles.py # 样式定义 ``` ## 安装和运行 ### 环境要求 - Python 3.7+ - PyQt5 - NumPy - Matplotlib ### 安装步骤 1. 克隆或下载项目到本地 2. 安装依赖包: ```bash pip install -r requirements.txt ``` 3. 运行程序: ```bash python main.py ``` 或在Windows下双击运行: ```bash run.bat ``` ### 测试地图编辑器 单独测试地图编辑器功能: ```bash python test_map_editor.py ``` ## 使用说明 ### 基本操作 1. **启动仿真** - 点击"开始仿真"按钮或按F5键 - AGV将开始自动执行任务 2. **添加AGV** - 点击"添加AGV"按钮 - 新的AGV将在随机位置生成 3. **分配任务** - 在AGV列表中选择一个AGV - 设置目标位置坐标 - 点击"分配任务"按钮 4. **交互操作** - 点击AGV可以选中并查看详细信息 - 点击地图空白处可以设置目标位置 - 使用鼠标滚轮可以缩放视图 ### 地图编辑器使用 1. **打开地图编辑器** - 点击工具栏的"🗺️ 地图编辑器"按钮 - 或按F3快捷键 - 或通过菜单"地图" → "地图编辑器" 2. **编辑模式** - **🔍 选择模式**: 选择和移动已有元素 - **🚧 障碍物模式**: 添加矩形障碍物 - **🔋 充电站模式**: 添加圆形充电站 - **📍 路径点模式**: 添加导航路径点 - **📦 装载区模式**: 添加货物装载区域 - **�� 卸载区模式**: 添加货物卸载区域 - **🏢 站点模式**: 添加工作站点,支持多种类型和丰富属性 - **🔗 路径连接模式**: 创建元素间的路径连接,支持多路径 3. **基本操作** - 左键点击添加元素或选择元素 - 拖拽移动元素位置(自动更新相关路径) - 右键删除元素 - 鼠标滚轮缩放视图 - 中键拖拽平移视图 4. **属性编辑** - 选中元素后在右侧属性面板编辑 - **站点属性**: 类型、角度、容量、操作时间、优先级等 - **路径属性**: 距离(自动计算)、方向、速度、宽度、成本等 - 支持位置、尺寸、外观、行为等通用属性 - 修改实时生效 5. **路径连接功能** - 选择路径连接模式 - 点击起始元素,再点击目标元素 - 支持站点间多条路径 - 自动计算距离和方向 - 实时预览路径效果 6. **保存和加载** - **保存**: Ctrl+S 或菜单"文件→保存地图" - **加载**: Ctrl+O 或菜单"文件→打开地图" - **格式**: JSON格式,包含完整地图信息 - **数据完整性**: 确保所有属性正确保存和恢复 ### 界面说明 #### 主仿真界面 - **仿真视图(左侧)**: 显示AGV、障碍物、充电站和路径点 - **控制面板(右侧)**: 仿真控制、AGV管理、统计信息 #### 地图编辑器界面 - **工具面板(左侧)**: 编辑模式、视图控制、网格设置 - **编辑区域(中央)**: 主要的地图编辑画布 - **属性面板(右侧)**: 选中元素的详细属性编辑 ### AGV状态说明 - **空闲**: AGV处于待机状态 - **移动中**: AGV正在执行移动任务 - **装载中**: AGV正在装载货物(预留功能) - **卸载中**: AGV正在卸载货物(预留功能) - **充电中**: AGV正在充电 - **故障**: AGV出现故障(预留功能) ## 快捷键 ### 主程序快捷键 - **F5**: 开始仿真 - **F6**: 停止仿真 - **F3**: 打开地图编辑器 - **Ctrl+N**: 新建场景 - **Ctrl+O**: 打开场景 - **Ctrl+S**: 保存场景 ### 地图编辑器快捷键 - **Ctrl+N**: 新建地图 - **Ctrl+S**: 保存地图 - **Ctrl+C**: 复制元素 - **Ctrl+V**: 粘贴元素 - **Delete**: 删除选中元素 - **Ctrl++**: 放大视图 - **Ctrl+-**: 缩小视图 - **Ctrl+0**: 适合窗口 ## 扩展开发 ### 添加新功能 1. **新的AGV行为** - 在`src/core/agv.py`中添加新的状态和行为 - 更新状态机逻辑 2. **新的UI组件** - 在`src/ui/`目录下创建新的UI模块 - 在主窗口中集成新组件 3. **新的仿真算法** - 在`src/core/`目录下添加新的算法模块 - 在仿真器中调用新算法 4. **新的地图元素** - 在`src/ui/map_editor.py`中添加新的元素类 - 更新绘制和交互逻辑 ### 样式定制 - 修改`src/ui/styles.py`中的颜色和样式定义 - 支持完全自定义的主题配色 ## 技术架构 ### 核心类说明 - **AGV**: AGV实体类,包含位置、状态、电量等属性 - **Simulator**: 仿真器核心类,管理所有AGV和环境 - **SimulationView**: 仿真视图组件,负责2D渲染 - **ControlPanel**: 控制面板组件,提供用户交互界面 - **MainWindow**: 主窗口类,整合所有UI组件 - **MapEditor**: 地图编辑器核心类,处理地图编辑逻辑 - **MapEditorWindow**: 地图编辑器窗口,整合编辑界面 - **PropertyPanel**: 属性面板,提供详细的属性编辑 ### 设计模式 - **观察者模式**: 使用PyQt5信号槽机制 - **MVC模式**: 模型-视图-控制器分离 - **单例模式**: 仿真器核心类采用单例设计 - **工厂模式**: 地图元素的创建和管理 ## 文档 - [地图编辑器使用指南](MAP_EDITOR_GUIDE.md) - 详细的地图编辑器使用说明 - [地图编辑器高级功能指南](MAP_EDITOR_ADVANCED_GUIDE.md) - 站点系统、路径连接、保存加载等高级功能 - [多路径功能指南](MULTI_PATH_GUIDE.md) - 详细的多路径创建和管理说明 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进项目! ## 联系方式 如有问题或建议,请通过以下方式联系: - 联系人:UKIOT - 源码地址:https://gitee.com/openwcs/agv-map.git - 发送邮件至开发团队:ukiot1000@163.com --- **AGV模拟器** - 让AGV仿真变得简单而强大!