Smart Field CMS 遵循 VDA5050 v2.0 的核心 MQTT 通訊協定。 六個 channel:order, instantActions, state, connection, visualization, factsheet。 任何機器人廠商接入本平台都必須實作本檔規範的 channel 與訊息格式。
詳見 docs/vda5050-unified-protocol.md 敘事文件。
EMQX Broker(生產)
EMQX 帳號密碼(實際值由環境變數提供)
本機開發 EMQX(無認證)
Master Control 下達任務給 AGV
Master Control 發送 Order 給 AGV
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
送餐任務
{
"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 下達任務給 AGV
AGV 接收 Order
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
送餐任務
{
"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 → AGV 下達即時動作;AGV / Dispatcher → Master 回應或請求。 注意:CMS 使用 state 訊息回報 action 狀態(見 T-Extension spec)。
Master Control 發送 InstantActions
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
取消訂單
{
"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 → AGV 下達即時動作;AGV / Dispatcher → Master 回應或請求。 注意:CMS 使用 state 訊息回報 action 狀態(見 T-Extension spec)。
AGV 接收 InstantActions
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
取消訂單
{
"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"
}
]
}
]
}
AGV → Master 狀態回報(1–10 Hz)
AGV 發布狀態
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
執行任務中
{
"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": []
}
AGV → Master 狀態回報(1–10 Hz)
Master Control 接收狀態
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
執行任務中
{
"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": []
}
AGV → Master 連線狀態(建議設 MQTT LWT)
AGV 發布連線狀態(可設 LWT)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
{
"headerId": 1,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "ONLINE"
}
LWT CONNECTIONBROKEN
{
"headerId": 0,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "CONNECTIONBROKEN"
}
AGV → Master 連線狀態(建議設 MQTT LWT)
Master Control 接收連線狀態
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
{
"headerId": 1,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "ONLINE"
}
LWT CONNECTIONBROKEN
{
"headerId": 0,
"timestamp": "2026-04-13T18:00:00.000Z",
"version": "2.0.0",
"manufacturer": "pudu",
"serialNumber": "ROBOT-001",
"connectionState": "CONNECTIONBROKEN"
}
AGV → Master 高頻位置更新(10–30 Hz)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 高頻位置更新(10–30 Hz)
{
"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
}
}
AGV → Master 高頻位置更新(10–30 Hz)
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
AGV → Master 高頻位置更新(10–30 Hz)
{
"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
}
}
AGV → Master AGV 規格
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
{
"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"
}
]
}
]
}
}
AGV → Master AGV 規格
Available only on servers:
廠商代碼
機器人序號
Accepts the following message:
{
"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"
}
]
}
]
}
}
AGV → Master 連線狀態訊息。建議設 MQTT LWT。
AGV → Master 高頻位置更新(10–30 Hz)