NexOS Robotics 對 VDA5050 v3.0(2024 年發表,main 分支版本)的核心 MQTT 通訊規格。
與 v2.0(asyncapi-core.yaml)雙版本並行:v2 機器人沿用 /uagv/v2/ topic 樹,v3 機器人改走
/vda5050/v3/ topic 樹。Backend(雙 prefix 訂閱 + per-robot 版本鎖定)與 IoT Gateway(雙 Listener
docs/vda5050/v3-upgrade-strategy.html。目前狀態(Phase 4 完成):v3 leaf schema(common + enums)已由 bot codegen 從
packages/shared-types/src/vda5050.ts的Vda5050V3*介面產出於schemas/v3/, v3 message wrapper(order / instant-actions / state / connection / visualization / factsheet)由人類維護於schemas/v3/messages/,組合 v3 common 與 enums 的$ref。 Example payload 暫沿用 v2 examples(向後相容;待 v3 範例補完後切換)。
/uagv/v2/{mfr}/{sn}/{channel} → /vda5050/v3/{mfr}/{sn}/{channel}"version": "2.0.0" → "version": "3.0.0"agvPosition → mobileRobotPosition、agvActionScopes
→ mobileRobotActionScopes 等(state 訊息變動最多)CONNECTIONBROKEN → CONNECTION_BROKEN,新增 HIBERNATINGSTARTUP / INTERVENED;TEACHIN 改為 TEACH_INSINGLE(但 instantAction 強制只能用 NONE)RETRIABLEthetaX / thetaY)。
Stage 3 task-order task-order.service.ts 已依 robot capability 在派工層動態切換寫法。clearInstantActions、clearAllErrors(共 8 種標準動作)詳細對照表見 docs/vda5050/v3-upgrade-strategy.html §3。
schemas/v3/(29 份,由 bot codegen 產出)/vda5050/v3/ 前綴EMQX Broker(生產)
EMQX 帳號密碼(實際值由環境變數提供)
本機開發 EMQX(無認證)
Master Control 下達任務給 Mobile Robot(v3 — version 欄位需為 "3.0.0")
Master Control 發送 Order 給 Mobile Robot(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
Master Control → AGV 的任務訊息(VDA5050 v3.0)。 v3 變更:新增 orderDescription 頂層欄位;nodes/edges 使用 v3 common 結構。
送餐任務(payload `version` 應填 `"3.0.0"`)
{
"headerId": 1712995200000,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"orderId": "task_0f3a8b9c-0000-0000-0000-000000000001",
"orderUpdateId": 0,
"taskType": "delivery",
"nodes": [
{
"nodeId": "node_origin_task_0f3a8b9c",
"sequenceId": 0,
"released": true,
"nodePosition": {
"x": 12.345,
"y": 6.789,
"theta": 0,
"mapId": "map-lobby-v3",
"allowedDeviationXY": 0.3,
"allowedDeviationTheta": 0.1
},
"actions": []
},
{
"nodeId": "node_target_task_0f3a8b9c",
"sequenceId": 2,
"released": true,
"nodePosition": {
"x": 20,
"y": 8.5,
"mapId": "map-lobby-v3"
},
"actions": [
{
"actionId": "action_task_0f3a8b9c_drop",
"actionType": "drop",
"blockingType": "HARD",
"actionParameters": []
}
]
}
],
"edges": [
{
"edgeId": "edge_task_0f3a8b9c_0",
"sequenceId": 1,
"released": true,
"startNodeId": "node_origin_task_0f3a8b9c",
"endNodeId": "node_target_task_0f3a8b9c",
"actions": []
}
]
}
Master Control 下達任務給 Mobile Robot(v3 — version 欄位需為 "3.0.0")
Mobile Robot 接收 Order(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
Master Control → AGV 的任務訊息(VDA5050 v3.0)。 v3 變更:新增 orderDescription 頂層欄位;nodes/edges 使用 v3 common 結構。
送餐任務(payload `version` 應填 `"3.0.0"`)
{
"headerId": 1712995200000,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"orderId": "task_0f3a8b9c-0000-0000-0000-000000000001",
"orderUpdateId": 0,
"taskType": "delivery",
"nodes": [
{
"nodeId": "node_origin_task_0f3a8b9c",
"sequenceId": 0,
"released": true,
"nodePosition": {
"x": 12.345,
"y": 6.789,
"theta": 0,
"mapId": "map-lobby-v3",
"allowedDeviationXY": 0.3,
"allowedDeviationTheta": 0.1
},
"actions": []
},
{
"nodeId": "node_target_task_0f3a8b9c",
"sequenceId": 2,
"released": true,
"nodePosition": {
"x": 20,
"y": 8.5,
"mapId": "map-lobby-v3"
},
"actions": [
{
"actionId": "action_task_0f3a8b9c_drop",
"actionType": "drop",
"blockingType": "HARD",
"actionParameters": []
}
]
}
],
"edges": [
{
"edgeId": "edge_task_0f3a8b9c_0",
"sequenceId": 1,
"released": true,
"startNodeId": "node_origin_task_0f3a8b9c",
"endNodeId": "node_target_task_0f3a8b9c",
"actions": []
}
]
}
雙向 channel:Master → Mobile Robot 下達即時動作;Mobile Robot / Dispatcher → Master 回應。
v3 標準 instantAction 共 8 種:cancelOrder startPause stopPause stateRequest
factsheetRequest initPosition 加上 v3 新增的 clearInstantActions clearAllErrors。
blockingType 在 instantAction 上強制只能用 NONE。
Master Control 發送 InstantActions(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
雙向 instant actions 訊息(VDA5050 v3.0)。 v3 變更:欄位從 instantActions 改名為 actions;blockingType 限定為 NONE。
取消訂單
{
"headerId": 1712995202000,
"timestamp": "2026-04-13T18:00:02.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"instantActions": [
{
"actionId": "cancel_task_0f3a8b9c_1712995202000",
"actionType": "cancelOrder",
"blockingType": "HARD",
"actionParameters": []
}
]
}
初始化位置
{
"headerId": 1712995203000,
"timestamp": "2026-04-13T18:00:03.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"instantActions": [
{
"actionId": "initPos_1712995203000",
"actionType": "initPosition",
"blockingType": "HARD",
"actionParameters": [
{
"key": "x",
"value": 12
},
{
"key": "y",
"value": 7.5
},
{
"key": "theta",
"value": 1.5708
},
{
"key": "mapId",
"value": "map-lobby-v3"
}
]
}
]
}
雙向 channel:Master → Mobile Robot 下達即時動作;Mobile Robot / Dispatcher → Master 回應。
v3 標準 instantAction 共 8 種:cancelOrder startPause stopPause stateRequest
factsheetRequest initPosition 加上 v3 新增的 clearInstantActions clearAllErrors。
blockingType 在 instantAction 上強制只能用 NONE。
Mobile Robot 接收 InstantActions(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
雙向 instant actions 訊息(VDA5050 v3.0)。 v3 變更:欄位從 instantActions 改名為 actions;blockingType 限定為 NONE。
取消訂單
{
"headerId": 1712995202000,
"timestamp": "2026-04-13T18:00:02.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"instantActions": [
{
"actionId": "cancel_task_0f3a8b9c_1712995202000",
"actionType": "cancelOrder",
"blockingType": "HARD",
"actionParameters": []
}
]
}
初始化位置
{
"headerId": 1712995203000,
"timestamp": "2026-04-13T18:00:03.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"instantActions": [
{
"actionId": "initPos_1712995203000",
"actionType": "initPosition",
"blockingType": "HARD",
"actionParameters": [
{
"key": "x",
"value": 12
},
{
"key": "y",
"value": 7.5
},
{
"key": "theta",
"value": 1.5708
},
{
"key": "mapId",
"value": "map-lobby-v3"
}
]
}
]
}
Mobile Robot → Master 狀態回報(1–10 Hz)。v3 將 agvPosition 改為 mobileRobotPosition、
batteryState 改為 powerSupply,並新增 instantActionStates / maps / zoneSets /
plannedPath / intermediatePath 等欄位。payload 採用 schemas/v3/messages/state.yaml。
Mobile Robot 發布狀態(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 狀態訊息(VDA5050 v3.0)。 v3 變更:agvPosition→mobileRobotPosition、batteryState→powerSupply、informations→information; 新增 instantActionStates、zoneActionStates、maps、zoneSets、plannedPath、intermediatePath、 zoneRequests、edgeRequests。
執行任務中
{
"headerId": 1712995200100,
"timestamp": "2026-04-13T18:00:00.100Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"orderId": "task_0f3a8b9c-0000-0000-0000-000000000001",
"orderUpdateId": 0,
"lastNodeId": "node_origin_task_0f3a8b9c",
"lastNodeSequenceId": 0,
"driving": true,
"paused": false,
"operatingMode": "AUTOMATIC",
"nodeStates": [
{
"nodeId": "node_target_task_0f3a8b9c",
"sequenceId": 2,
"released": true,
"nodePosition": {
"x": 20,
"y": 8.5,
"mapId": "map-lobby-v3"
}
}
],
"edgeStates": [
{
"edgeId": "edge_task_0f3a8b9c_0",
"sequenceId": 1,
"released": true
}
],
"actionStates": [
{
"actionId": "action_task_0f3a8b9c_drop",
"actionType": "drop",
"actionStatus": "WAITING"
}
],
"batteryState": {
"batteryCharge": 72.5,
"batteryVoltage": 24.1,
"batteryHealth": 98,
"charging": false,
"reach": 5200
},
"errors": [],
"informations": [
{
"infoType": "agvIp",
"infoLevel": "INFO",
"infoDescription": "192.168.10.42"
}
],
"safetyState": {
"eStop": "NONE",
"fieldViolation": false
},
"agvPosition": {
"x": 13.579,
"y": 7.111,
"theta": 1.5708,
"mapId": "map-lobby-v3",
"positionInitialized": true,
"localizationScore": 0.98
},
"velocity": {
"vx": 0.45,
"vy": 0,
"omega": 0
},
"loads": []
}
Mobile Robot → Master 狀態回報(1–10 Hz)。v3 將 agvPosition 改為 mobileRobotPosition、
batteryState 改為 powerSupply,並新增 instantActionStates / maps / zoneSets /
plannedPath / intermediatePath 等欄位。payload 採用 schemas/v3/messages/state.yaml。
Master Control 接收狀態(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 狀態訊息(VDA5050 v3.0)。 v3 變更:agvPosition→mobileRobotPosition、batteryState→powerSupply、informations→information; 新增 instantActionStates、zoneActionStates、maps、zoneSets、plannedPath、intermediatePath、 zoneRequests、edgeRequests。
執行任務中
{
"headerId": 1712995200100,
"timestamp": "2026-04-13T18:00:00.100Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"orderId": "task_0f3a8b9c-0000-0000-0000-000000000001",
"orderUpdateId": 0,
"lastNodeId": "node_origin_task_0f3a8b9c",
"lastNodeSequenceId": 0,
"driving": true,
"paused": false,
"operatingMode": "AUTOMATIC",
"nodeStates": [
{
"nodeId": "node_target_task_0f3a8b9c",
"sequenceId": 2,
"released": true,
"nodePosition": {
"x": 20,
"y": 8.5,
"mapId": "map-lobby-v3"
}
}
],
"edgeStates": [
{
"edgeId": "edge_task_0f3a8b9c_0",
"sequenceId": 1,
"released": true
}
],
"actionStates": [
{
"actionId": "action_task_0f3a8b9c_drop",
"actionType": "drop",
"actionStatus": "WAITING"
}
],
"batteryState": {
"batteryCharge": 72.5,
"batteryVoltage": 24.1,
"batteryHealth": 98,
"charging": false,
"reach": 5200
},
"errors": [],
"informations": [
{
"infoType": "agvIp",
"infoLevel": "INFO",
"infoDescription": "192.168.10.42"
}
],
"safetyState": {
"eStop": "NONE",
"fieldViolation": false
},
"agvPosition": {
"x": 13.579,
"y": 7.111,
"theta": 1.5708,
"mapId": "map-lobby-v3",
"positionInitialized": true,
"localizationScore": 0.98
},
"velocity": {
"vx": 0.45,
"vy": 0,
"omega": 0
},
"loads": []
}
Mobile Robot → Master 連線狀態(建議設 MQTT LWT)。v3 列舉變更:
CONNECTIONBROKEN → CONNECTION_BROKEN,並新增 HIBERNATING。
Mobile Robot 發布連線狀態(v3,建議搭配 LWT)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 連線狀態訊息(VDA5050 v3.0)。建議設 MQTT LWT。 v3 變更:connectionState enum 與 v2 結構相同,但走 v3 topic prefix(/vda5050/v3/…)。
{
"headerId": 1,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "ONLINE"
}
LWT CONNECTION_BROKEN
{
"headerId": 0,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "CONNECTIONBROKEN"
}
Mobile Robot → Master 連線狀態(建議設 MQTT LWT)。v3 列舉變更:
CONNECTIONBROKEN → CONNECTION_BROKEN,並新增 HIBERNATING。
Master Control 接收連線狀態(v3)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 連線狀態訊息(VDA5050 v3.0)。建議設 MQTT LWT。 v3 變更:connectionState enum 與 v2 結構相同,但走 v3 topic prefix(/vda5050/v3/…)。
{
"headerId": 1,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "ONLINE"
}
LWT CONNECTION_BROKEN
{
"headerId": 0,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "CONNECTIONBROKEN"
}
Mobile Robot → Master 高頻位置更新(10–30 Hz)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 高頻位置更新(VDA5050 v3.0,10–30 Hz)。 v3 變更:新增必需欄位 referenceStateHeaderId;agvPosition→mobileRobotPosition; 新增 plannedPath / intermediatePath。
{
"headerId": 1234567,
"timestamp": "2026-04-13T18:00:00.050Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"agvPosition": {
"x": 13.6,
"y": 7.1,
"theta": 1.57,
"mapId": "map-lobby-v3",
"positionInitialized": true
},
"velocity": {
"vx": 0.45,
"vy": 0,
"omega": 0
}
}
Mobile Robot → Master 高頻位置更新(10–30 Hz)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 高頻位置更新(VDA5050 v3.0,10–30 Hz)。 v3 變更:新增必需欄位 referenceStateHeaderId;agvPosition→mobileRobotPosition; 新增 plannedPath / intermediatePath。
{
"headerId": 1234567,
"timestamp": "2026-04-13T18:00:00.050Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"agvPosition": {
"x": 13.6,
"y": 7.1,
"theta": 1.57,
"mapId": "map-lobby-v3",
"positionInitialized": true
},
"velocity": {
"vx": 0.45,
"vy": 0,
"omega": 0
}
}
Mobile Robot → Master 規格表(v3 新增 protocolVersion / supportedV3Capabilities 等欄位)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 功能規格表(VDA5050 v3.0)。 v3 變更:agvKinematic/agvClass→mobileRobotKinematic/mobileRobotClass; physicalParameters 多欄位改名(speedMin→minimumSpeed 等);agvActions→mobileRobotActions; agvGeometry→mobileRobotGeometry;新增 mobileRobotConfiguration 頂層欄位。
{
"headerId": 1,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"typeSpecification": {
"seriesName": "PuduBot 2",
"seriesDescription": "Delivery robot series",
"agvKinematic": "DIFF",
"agvClass": "CARRIER",
"maxLoadMass": 40,
"localizationTypes": [
"NATURAL"
],
"navigationTypes": [
"VIRTUAL_LINE_GUIDED"
]
},
"physicalParameters": {
"speedMin": 0.1,
"speedMax": 1.2,
"accelerationMax": 0.5,
"decelerationMax": 0.8,
"heightMin": 1,
"heightMax": 1.3,
"width": 0.52,
"length": 0.58
},
"protocolLimits": {
"maxStringLens": {
"msgLen": 65535
},
"maxArrayLens": {
"order.nodes": 100
},
"timing": {
"minOrderInterval": 1,
"minStateInterval": 0.1,
"defaultStateInterval": 1,
"visualizationInterval": 0.1
}
},
"protocolFeatures": {
"optionalParameters": [
{
"parameter": "trajectory",
"support": "SUPPORTED"
}
],
"agvActions": [
{
"actionType": "drop",
"actionScopes": [
"NODE"
],
"actionParameters": []
},
{
"actionType": "wait",
"actionScopes": [
"NODE"
],
"actionParameters": [
{
"key": "duration",
"valueDataType": "STRING"
}
]
}
]
}
}
Mobile Robot → Master 規格表(v3 新增 protocolVersion / supportedV3Capabilities 等欄位)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 功能規格表(VDA5050 v3.0)。 v3 變更:agvKinematic/agvClass→mobileRobotKinematic/mobileRobotClass; physicalParameters 多欄位改名(speedMin→minimumSpeed 等);agvActions→mobileRobotActions; agvGeometry→mobileRobotGeometry;新增 mobileRobotConfiguration 頂層欄位。
{
"headerId": 1,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"typeSpecification": {
"seriesName": "PuduBot 2",
"seriesDescription": "Delivery robot series",
"agvKinematic": "DIFF",
"agvClass": "CARRIER",
"maxLoadMass": 40,
"localizationTypes": [
"NATURAL"
],
"navigationTypes": [
"VIRTUAL_LINE_GUIDED"
]
},
"physicalParameters": {
"speedMin": 0.1,
"speedMax": 1.2,
"accelerationMax": 0.5,
"decelerationMax": 0.8,
"heightMin": 1,
"heightMax": 1.3,
"width": 0.52,
"length": 0.58
},
"protocolLimits": {
"maxStringLens": {
"msgLen": 65535
},
"maxArrayLens": {
"order.nodes": 100
},
"timing": {
"minOrderInterval": 1,
"minStateInterval": 0.1,
"defaultStateInterval": 1,
"visualizationInterval": 0.1
}
},
"protocolFeatures": {
"optionalParameters": [
{
"parameter": "trajectory",
"support": "SUPPORTED"
}
],
"agvActions": [
{
"actionType": "drop",
"actionScopes": [
"NODE"
],
"actionParameters": []
},
{
"actionType": "wait",
"actionScopes": [
"NODE"
],
"actionParameters": [
{
"key": "duration",
"valueDataType": "STRING"
}
]
}
]
}
}
Master Control → AGV 的任務訊息(VDA5050 v3.0)。 v3 變更:新增 orderDescription 頂層欄位;nodes/edges 使用 v3 common 結構。
雙向 instant actions 訊息(VDA5050 v3.0)。 v3 變更:欄位從 instantActions 改名為 actions;blockingType 限定為 NONE。
AGV → Master 狀態訊息(VDA5050 v3.0)。 v3 變更:agvPosition→mobileRobotPosition、batteryState→powerSupply、informations→information; 新增 instantActionStates、zoneActionStates、maps、zoneSets、plannedPath、intermediatePath、 zoneRequests、edgeRequests。
AGV → Master 連線狀態訊息(VDA5050 v3.0)。建議設 MQTT LWT。 v3 變更:connectionState enum 與 v2 結構相同,但走 v3 topic prefix(/vda5050/v3/…)。
AGV → Master 高頻位置更新(VDA5050 v3.0,10–30 Hz)。 v3 變更:新增必需欄位 referenceStateHeaderId;agvPosition→mobileRobotPosition; 新增 plannedPath / intermediatePath。
AGV → Master 功能規格表(VDA5050 v3.0)。 v3 變更:agvKinematic/agvClass→mobileRobotKinematic/mobileRobotClass; physicalParameters 多欄位改名(speedMin→minimumSpeed 等);agvActions→mobileRobotActions; agvGeometry→mobileRobotGeometry;新增 mobileRobotConfiguration 頂層欄位。