← 全部作品实验室项目 · KIT 工业移动机器人实验室(IFL)
VDA5050 多机器人调度系统
KIT IFL 工业移动机器人实验,从仿真到两台真实移动机器人
基于 VDA 5050 与 MQTT 实现车队管理和运动控制,从仿真迁移到两台不同车型的真实移动机器人,按车型约束规划路径、锁定工站,在最终现场评估中稳定运行。
- 协调的真实移动机器人(台)
- 2
- 测试区拓扑(节点 / 边)
- 16 / 23
- 工站
- 6
概览
- 时间与性质:2026.04 – 2026.06,KIT 输送技术与物流系统研究所(IFL)的 Industrial Mobile Robotics Lab;先在仿真中完成个人任务,再以小组形式上真机
- 我的角色:个人任务全部由我完成(车队管理 10 项、运动控制 3 项);小组中负责车队管理核心,并参与真机联调与最终现场演示
- 要解决的问题:让两台车型不同的真实移动机器人按给定顺序并行完成搬运任务——订单怎么下发、状态怎么同步、路径冲突与死锁怎么避免
- 结果:从仿真迁移到真实工业移动机器人(GEBHARDT),在最终现场评估中验证稳定运行
我做了什么
- VDA 5050 订单与状态:按规范构建途经取货、加工、卸货工站的多节点、多边订单,经 MQTT 下发;解析机器人回传的 state,只有剩余节点和边都清空、所有动作均为 FINISHED 时,才把车辆置为空闲
- 拓扑地图与 A* 路径规划:把 LIF 布局文件解析成节点与边的图;用
heapq 优先队列和欧氏距离启发函数实现 A* 算法,朝终点有方向地搜索,而不是像 Dijkstra 那样盲目扩散
- 多站订单流水线:把「当前位置 → 取货 → 加工 → 卸货 → 驻留点」拆成多段 A* 再拼接,剔除衔接处的重复节点,并在进站前一个节点注入
init_fine_positioning 精定位动作
- 后台自动派单:派单循环跑在守护线程里,持续把任务分配给就近的空闲车辆,不阻塞仿真界面和 MQTT 通信;新增车辆只需在初始化配置里加一条
- 运动控制:从订单中提取已放行(released)的节点作为航点,用比例控制逐点跟踪,到点后上报
lastNodeId 解锁后续订单;针对执行噪声和加减速约束,加入位姿滑动平均 / 低通滤波和速度斜坡
- 两台真机的车队管理(小组):协调 cat001(纵向输送)和 mouse001(横向输送)两台机器人;A* 按车型过滤进站边,保证以正确朝向对接工站;同一时刻一个工站只允许一台车,避免碰撞与死锁
- 真机联调与现场演示(小组):切换到真机模式并连接实验室 MQTT broker,按真车表现调整速度、装卸与精定位时间参数;最终现场的任务当天才给出,车辆可从测试区任意位置出发
技术细节
布局与车型约束
- 测试区布局固定:16 个节点、23 条边、6 个工站(3 个转运站、3 个加工站)和 2 个充电驻留点
- 两种车型:cat001 是纵向输送车,mouse001 是横向输送车。每种车型进入每个转运站只有一条合法进站边,边上带切向朝向约束,车到站时已经朝向正确,不允许在站点原地转向
- 精定位参数(
init_fine_pos_*、fine_pos_control_*)从布局文件读出后原样转发给运动控制,由车端完成最后几厘米的对接
系统分层
| 层 |
内容 |
| 协议 |
VDA 5050 order / state 消息,JSON Schema 校验,MQTT 发布与订阅 |
| 调度 |
任务管理、就近派单、车辆状态的数字孪生 |
| 规划 |
LIF 图解析、按车型过滤边的 A* 规划、多段路径拼接、动作注入 |
| 控制 |
航点跟踪、状态上报、滤波与速度斜坡 |
| 验证 |
每个开发任务配 pytest 测试;图形化仿真;实验室真机 |
局限与复盘
- 派单是就近贪心:按给定顺序把任务交给最近的空闲车,没有做全局最优分配
- 仿真与真机的差距在不确定性:真车会被临时挡住,速度和装卸时间也和仿真不同;车队管理必须能消化这些延迟,不崩溃、不碰撞、不死锁