# AMR机器人管理系统 - 详细说明文档 ## 📋 项目概述 AMR(Autonomous Mobile Robot)机器人管理系统是一个基于Vue3 + TypeScript + Ant Design Vue开发的前端应用。该系统主要用于管理和监控AMR机器人,提供场景编辑、机器人组管理、路径规划和实时监控等功能。 ### 🎯 核心功能 - **场景编辑器** - 可视化编辑机器人运行场景地图 - **机器人组管理** - 管理机器人分组和配置 - **路径规划** - 设计和管理机器人运行路径 - **实时监控** - 监控机器人运行状态和位置 - **点位管理** - 管理充电点、停靠点、动作点等特殊点位 - **区域管理** - 管理库区、互斥区等功能区域 ## 🏗️ 技术架构 ### 前端技术栈 ```mermaid graph TB A[Vue 3.5.13] --> B[TypeScript] A --> C[Ant Design Vue 4.2.6] A --> D[Vue Router 4.5.0] A --> E[Vue I18n 11.1.3] A --> F[Vite 6.3.1] B --> G[RxJS 7.8.2] C --> H[@ant-design/icons-vue] D --> I[动态路由] E --> J[多语言支持] F --> K[热重载开发] L[Meta2d 1.0.78] --> M[2D图形引擎] N[VueUse] --> O[组合式API工具] P[Lodash-es] --> Q[工具函数库] R[Axios] --> S[HTTP客户端] T[Day.js] --> U[时间处理] ``` ### 项目结构图 ``` web-amr/ ├── 📁 src/ # 源代码目录 │ ├── 📁 pages/ # 页面组件 │ │ ├── 🎨 scene-editor.vue # 场景编辑器页面 │ │ ├── 🎨 group-editor.vue # 机器人组编辑页面 │ │ ├── 📊 movement-supervision.vue # 运行监控页面 │ │ └── ❌ exception.vue # 异常页面 │ ├── 📁 components/ # 通用组件 │ │ ├── 📁 modal/ # 弹窗组件 │ │ ├── 📁 card/ # 卡片组件 │ │ ├── 🤖 robot-groups.vue # 机器人组组件 │ │ ├── 📍 pen-groups.vue # 点位组组件 │ │ └── 🛠️ editor-toolbar.vue # 编辑器工具栏 │ ├── 📁 apis/ # API接口层 │ │ ├── 📁 scene/ # 场景相关API │ │ ├── 📁 robot/ # 机器人相关API │ │ └── 📁 map/ # 地图相关API │ ├── 📁 services/ # 核心服务层 │ │ ├── ⚙️ editor.service.ts # 编辑器服务(核心) │ │ ├── 🎨 theme.service.ts # 主题服务 │ │ ├── 🌍 locale.service.ts # 国际化服务 │ │ ├── 🛤️ router.ts # 路由配置 │ │ ├── 🌐 http.ts # HTTP请求服务 │ │ └── 🔌 ws.ts # WebSocket服务 │ ├── 📁 assets/ # 静态资源 │ │ ├── 📁 themes/ # 主题文件 │ │ ├── 📁 images/ # 图片资源 │ │ ├── 📁 locales/ # 语言包 │ │ ├── 📁 icons/ # 图标资源 │ │ └── 📁 fonts/ # 字体文件 │ ├── 🎯 main.ts # 应用入口 │ ├── 📱 App.vue # 根组件 │ └── 🎨 style.scss # 全局样式 ├── 📁 mocks/ # 模拟数据 ├── 📁 public/ # 公共资源 ├── ⚙️ vite.config.ts # Vite配置 ├── 📦 package.json # 项目配置 └── 📝 README.md # 说明文档 ``` ## 🔧 核心模块详细说明 ### 1. 场景编辑器模块 (Scene Editor) **功能描述**: 提供可视化的2D场景编辑功能,允许用户创建和修改机器人运行环境。 **技术实现**: - 基于 `Meta2d` 图形引擎构建可视化编辑器 - 使用 `EditorService` 服务类封装所有编辑功能 - 支持点、线、面的绘制和编辑 - 实时保存和加载场景配置 **核心组件**: ```vue ``` ### 2. 机器人管理模块 (Robot Management) **功能描述**: 管理机器人设备,包括注册、分组、状态监控等功能。 **数据结构**: ```typescript interface RobotInfo { id: string; // 机器人ID label: string; // 机器人名称 brand: string; // 品牌 type: RobotType; // 机器人类型 ip: string; // IP地址 isConnected?: boolean; // 连接状态 state?: number; // 运行状态 canOrder?: boolean; // 可否下达指令 canStop?: boolean; // 可否停止 canControl?: boolean; // 可否控制 } interface RobotGroup { sid: string; // 场景ID id: string; // 组ID label: string; // 组名称 robots: string[]; // 机器人ID列表 } ``` **核心功能实现**: - **机器人注册**: 通过表单收集机器人基本信息 - **分组管理**: 支持创建、删除、重命名机器人组 - **状态监控**: 实时显示机器人连接和运行状态 - **批量操作**: 支持批量添加、移除机器人 ### 3. 地图编辑系统 (Map Editor System) **功能描述**: 基于Meta2d的强大地图编辑功能,支持多种地图元素的创建和编辑。 **地图元素类型**: #### 📍 点位系统 (Point System) ```typescript enum MapPointType { 普通点 = 0, 充电点 = 1, 停靠点 = 2, 动作点 = 3, 等待点 = 4, 禁行点 = 5, } ``` #### 🛤️ 路径系统 (Route System) ```typescript enum MapRouteType { 直线 = 'line', 二阶贝塞尔曲线 = 'bezier2', 三阶贝塞尔曲线 = 'bezier3', } ``` #### 🏢 区域系统 (Area System) ```typescript enum MapAreaType { 库区 = 1, 互斥区 = 2, 非互斥区 = 3, } ``` ### 4. 编辑器服务 (Editor Service) **功能描述**: 系统核心服务类,继承自Meta2d,提供完整的编辑器功能。 **核心方法**: ```typescript class EditorService extends Meta2d { // 场景管理 async load(map?: string, editable?: boolean): Promise; save(): string; // 机器人管理 addRobots(gid: string, robots: RobotInfo[]): void; removeRobots(ids: string[]): void; updateRobot(id: string, value: Partial): void; // 点位管理 async addPoint(p: Point, type?: MapPointType, id?: string): Promise; updatePoint(id: string, info: Partial): void; changePointType(id: string, type: MapPointType): void; // 路径管理 addRoute(p: [string, string], type?: MapRouteType, id?: string): void; updateRoute(id: string, info: Partial): void; // 区域管理 async addArea(p1: Point, p2: Point, type?: MapAreaType, id?: string): Promise; updateArea(id: string, info: Partial): void; } ``` ### 5. 实时监控模块 (Movement Supervision) **功能描述**: 实时监控机器人运行状态,显示位置、路径、状态等信息。 **技术实现**: - 使用WebSocket建立实时连接 - 基于RxJS处理实时数据流 - Canvas渲染机器人实时位置和路径 **数据流程**: ```mermaid sequenceDiagram participant C as 客户端 participant W as WebSocket服务 participant S as 后端服务 participant R as 机器人设备 C->>W: 建立WebSocket连接 W->>S: 订阅机器人状态 R->>S: 上报状态数据 S->>W: 推送实时数据 W->>C: 广播状态更新 C->>C: 更新界面显示 ``` ## 🎨 UI/UX设计特色 ### 主题系统 - **双主题支持**: 明亮主题和暗黑主题 - **动态切换**: 实时主题切换无需刷新 - **一致性设计**: 基于Ant Design设计语言 ### 响应式布局 ```scss // 布局适配 .full { width: 100%; height: 100vh; } .editor-container { background-color: transparent !important; } // 悬浮工具栏 .toolbar-container { position: fixed; bottom: 40px; left: 50%; transform: translateX(-50%); } ``` ### 交互体验 - **拖拽编辑**: 支持元素拖拽创建和编辑 - **快捷键**: 常用操作快捷键支持 - **上下文菜单**: 右键菜单功能 - **实时预览**: 编辑结果实时反馈 ## 🔗 API接口设计 ### RESTful API结构 #### 场景管理API ```typescript // 获取场景详情 POST /scene/getById Request: { id: string } Response: SceneDetail // 保存场景 POST /scene/saveById Request: { id: string; json: string; png?: string } // 推送场景到数据库 POST /scene/pushById Request: { id: string } // 获取组场景 POST /scene/getByGroupId Request: { id: string; sid: string } Response: GroupSceneDetail ``` #### 机器人管理API ```typescript // 获取所有机器人 POST / robot / getAll; Response: Array; // 注册机器人 POST / robot / register; Request: RobotDetail; Response: RobotInfo; ``` #### WebSocket实时通信 ```typescript // 场景监控WebSocket WebSocket /scene/monitor/:id // 实时数据格式 interface RobotRealtimeInfo { id: string; x: number; // X坐标 y: number; // Y坐标 angle: number; // 角度 active: boolean; // 是否激活 path: [number, number][]; // 路径轨迹 } ``` ## 🚀 开发和部署 ### 开发环境启动 ```bash # 安装依赖 npm install # 或 pnpm install # 启动开发服务器 npm run start # 访问 http://localhost:8888 ``` ### 构建和部署 ```bash # 构建生产版本 npm run build # 预览构建结果 npm run preview ``` ### 项目配置 #### Vite配置特色 ```typescript export default defineConfig({ plugins: [ vue(), Components({ dts: true, resolvers: [ AntDesignVueResolver({ importStyle: false, resolveIcons: true, }), ], }), ], // 路径别名 resolve: { alias: { '@': resolve(__dirname, 'src/pages/'), '@api': resolve(__dirname, 'src/apis/'), '@common': resolve(__dirname, 'src/components/'), '@core': resolve(__dirname, 'src/services/'), }, }, // 开发服务器 server: { port: 8888, host: true, proxy: { // API代理配置 }, }, }); ``` ## 🔧 核心服务详解 ### 1. 主题服务 (Theme Service) - 支持明暗主题切换 - 动态CSS变量管理 - 主题配置持久化存储 ### 2. 国际化服务 (Locale Service) - 多语言支持框架 - 动态语言切换 - 语言包懒加载 ### 3. HTTP服务 (HTTP Service) - 基于Axios的请求封装 - 请求/响应拦截器 - 错误统一处理 ### 4. WebSocket服务 (WS Service) - 实时通信连接管理 - 自动重连机制 - 消息队列处理 ## 📈 性能优化策略 ### 代码分割 - 路由级别懒加载 - 组件按需导入 - 第三方库代码分割 ### 构建优化 ```typescript build: { target: 'es2020', outDir: 'dist', sourcemap: false, minify: 'esbuild', chunkSizeWarningLimit: 2000 } ``` ### 运行时优化 - 虚拟滚动大列表 - 图片懒加载 - 防抖节流处理 - 内存泄漏防护 ## 🛡️ 代码质量保障 ### 类型安全 - 完整的TypeScript类型定义 - 严格的类型检查配置 - 接口类型统一管理 ### 代码规范 ```json { "eslint": "代码质量检查", "prettier": "代码格式化", "stylelint": "样式规范检查", "husky": "Git钩子管理" } ``` ### 测试策略 - 组件单元测试 - API接口测试 - E2E端到端测试 ## 🔮 未来发展规划 ### 功能扩展 - [ ] 3D场景编辑支持 - [ ] AI路径优化算法 - [ ] 多机器人协作调度 - [ ] 实时视频监控集成 ### 技术升级 - [ ] Vue 3.6+ 新特性应用 - [ ] WebGL图形渲染优化 - [ ] PWA渐进式Web应用 - [ ] 微前端架构迁移 ## 📞 技术支持 ### 开发团队联系方式 - 技术负责人: [联系信息] - 项目经理: [联系信息] - 运维支持: [联系信息] ### 文档更新 - 最后更新时间: 2024年12月 - 文档版本: v1.0.0 - 维护状态: 积极维护中 --- **注意**: 本文档基于项目当前状态生成,随着项目发展会持续更新。如有疑问或建议,请联系开发团队。