Skip to content

VDA 5050 实现指南

本指南帮助开发者实现 VDA 5050 接口。

系统架构

系统架构图

消息流程

1. 连接建立

mermaid
sequenceDiagram
    participant FC as 车队控制
    participant Broker as MQTT Broker
    participant Robot as 移动机器人

    Robot->>Broker: CONNECT
    Broker->>Robot: CONNACK
    Robot->>FC: connection (ONLINE)
    FC->>Robot: SUBSCRIBE topics
    Robot->>FC: factsheet

2. 订单执行

mermaid
sequenceDiagram
    participant FC as 车队控制
    participant Robot as 移动机器人

    FC->>Robot: order (orderId: "001", orderUpdateId: 0)
    Robot->>FC: state (nodeStates, actionStates)
    FC->>Robot: order (orderUpdateId: 1, 新节点)
    Robot->>FC: state

3. 动作执行

mermaid
sequenceDiagram
    participant FC as 车队控制
    participant Robot as 移动机器人

    FC->>Robot: order (包含 pick 动作)
    Robot->>FC: state (actionStatus: RUNNING)
    Robot->>FC: state (actionStatus: FINISHED)

MQTT 主题结构

vda5050/v3/{manufacturer}/{serialNumber}/{topic}

示例

场景主题
接收订单vda5050/v3/RobotCorp/AGV-001/order
发送状态vda5050/v3/RobotCorp/AGV-001/state
接收即时动作vda5050/v3/RobotCorp/AGV-001/instantActions
发送连接状态vda5050/v3/RobotCorp/AGV-001/connection

关键实现要点

1. 订单处理

  • 验证订单 JSON 格式
  • 检查 orderIdorderUpdateId
  • 处理基线(Base)和视界(Horizon)
  • 实现节点/边遍历逻辑

2. 状态管理

  • 维护当前订单状态
  • 跟踪节点和边状态
  • 报告动作执行进度
  • 处理错误和信息

3. 动作执行

  • 实现阻塞类型逻辑
  • 处理并行动作
  • 管理动作状态转换
  • 支持重试机制

4. 连接管理

  • 实现 Last Will 消息
  • 处理断开/重连
  • 支持休眠模式

常见实现问题

问题 1:订单丢失

症状:机器人未收到订单

解决方案

  • 使用 QoS 1 确保交付
  • 实现订单确认机制
  • 定期检查订单状态

问题 2:状态消息丢失

症状:车队控制看不到机器人状态

解决方案

  • 状态消息使用 QoS 0(高频)
  • 实现增量状态更新
  • 添加心跳机制

问题 3:动作执行失败

症状:动作无法完成

解决方案

  • 使用 RETRIABLE 状态
  • 实现 retryskipRetry 动作
  • 记录详细错误信息

测试工具

MQTT 测试

bash
# 订阅状态
mosquitto_sub -t "vda5050/v3/+/+/state"

# 发布订单
mosquitto_pub -t "vda5050/v3/RobotCorp/AGV-001/order" -f order.json

JSON Schema 验证

使用官方提供的 JSON Schema 验证消息:

  • order.schema.json
  • state.schema.json
  • instantActions.schema.json

参考实现

基于 VDA 5050 Version 3.0.0