RosAGV - 企業級 AGV 車隊管理系統

基於 ROS 2 Jazzy 的現代化自動導引車控制系統

RosAGV - 企業級 AGV 車隊管理系統

專案簡介

RosAGV 是一套企業級自動導引車(AGV)車隊管理系統,採用 ROS 2 Jazzy 和 Zenoh RMW 打造。這個系統的特別之處在於採用雙環境容器化架構,將車載控制與中央管理功能分離,為工業自動化提供完整的車隊管理、任務調度和設備控制解決方案。

專案背景:


🎯 核心特色

1. 雙環境架構設計

設計理念: 分離關注點,將即時控制與管理功能分離,提高系統穩定性和可維護性

🚗 AGV 車載系統 (On-board)          🖥️ AGVC 管理系統 (Control Center)
├─ 即時控制和狀態管理                ├─ 車隊管理和任務調度
├─ PLC 設備直接通訊                 ├─ 資料庫管理和資料持久化
├─ 感測器資料處理                   ├─ Web 管理介面
├─ 手動控制(搖桿)支援             ├─ 外部系統整合(KUKA Fleet)
└─ 路徑規劃和導航                   └─ 系統監控和日誌管理
         ↕️ Zenoh RMW 通訊 ↕️

為什麼要分離環境?


2. 現代技術棧

核心技術:

前端技術:

資料庫:


3. 多車型支援

系統支援三種不同的 AGV 車型,每種車型都有專門的控制模組:

Cargo Mover(貨物搬運車)

Loader(上料車)

Unloader(下料車)


🏗️ 系統架構詳解

AGV 車載系統

部署特性:

容器名稱: rosagv
網路模式: host
部署位置: AGV 車輛上的邊緣計算設備
Docker Compose: docker-compose.yml

為什麼使用 Host 網路?

工作空間配置(7 個):

agv_ws/                    # 核心 AGV 控制
├── agv_base              # 基礎狀態機架構
├── cargo_mover_agv       # Cargo 車型實作
├── loader_agv            # Loader 車型實作
└── unloader_agv          # Unloader 車型實作

agv_cmd_service_ws/       # 手動指令服務
joystick_ws/              # 搖桿控制整合
sensorpart_ws/            # 工業相機整合(OCR 物料辨識)
keyence_plc_ws/           # Keyence PLC 通訊
plc_proxy_ws/             # PLC 代理服務
shared_constants_ws/      # 共享常數定義
path_algorithm/           # 路徑規劃演算法

AGVC 管理系統

部署特性:

容器名稱: agvc_server, postgres, nginx
網路模式: bridge (192.168.100.0/24)
部署位置: 中央管理伺服器
Docker Compose: docker-compose.agvc.yml

為什麼使用 Bridge 網路?

容器服務架構(4 個容器):

AGVC 系統
├── nginx (192.168.100.252)
│   ├── 反向代理服務
│   ├── 靜態文檔托管
│   └── WebSocket 支援
├── agvc_server (192.168.100.100)
│   ├── ROS 2 核心服務
│   ├── Web API (8000)
│   ├── AGVCUI (8001)
│   └── OPUI (8002)
├── postgres (192.168.100.254)
│   └── PostgreSQL 資料庫
└── pgadmin (192.168.100.101)
    └── 資料庫管理介面

工作空間配置(10 個):

web_api_ws/               # Web API 和 Socket.IO
├── web_api              # 核心 API 服務
├── agvcui               # 車隊管理介面
├── opui                 # 操作員介面
└── agvui                # AGV 車載監控介面

db_proxy_ws/              # 資料庫代理服務
ecs_ws/                   # 設備控制系統(Equipment Control System)
rcs_ws/                   # 機器人控制系統(Robot Control System)
kuka_wcs_ws/              # KUKA WCS 倉儲控制系統
kuka_fleet_ws/            # KUKA Fleet 整合
keyence_plc_ws/           # PLC 通訊 (共用)
plc_proxy_ws/             # PLC 代理 (共用)
path_algorithm/           # 路徑規劃 (共用)

# ⚠️ 已棄用 (2025)
# tafl_ws/                # TAFL 解析器(已改用 KUKA WCS)
# tafl_wcs_ws/            # TAFL WCS(已改用 kuka_wcs_ws)

⚡ Zenoh RMW:跨網路高效通訊

為什麼選擇 Zenoh RMW?

傳統 ROS 2 的 DDS 通訊協定在跨網路環境下有明顯限制:

Zenoh RMW 的優勢:

架構:

AGV 車載系統 (192.168.1.x)
    ↕️ Zenoh Router
AGVC 管理系統 (192.168.100.x)

🔧 核心功能模組

1. AGV 狀態機

三種 AGV 車型共享基礎狀態機架構(agv_base):

2. 路徑規劃與導航

基於 ROS 2 Navigation Stack:

3. PLC 整合

Keyence PLC 通訊:

4. KUKA Fleet 整合

與 KUKA 機器人系統協同:

5. 工業相機 OCR 整合(Sensorpart)

物料辨識與門禁控制:

AGV 車載配備工業相機,與車上的 KUKA 協作手臂協同工作:

系統架構:

工業相機 (Sensorpart)
    ├─ 直接通訊 → KUKA 協作手臂
    └─ TCP 連接 → 車載 ROS2 系統

核心功能:

應用場景:


6. Rack 管理系統

貨架管理功能(Cargo Mover 專用):

7. WCS 倉儲控制系統

KUKA WCS(Warehouse Control System):

採用純 Python 實作的現代化倉儲控制系統:

⚠️ 歷史資訊:TAFL WCS(基於 TAFL v1.1.2 語言)已於 2025 年棄用,現已改用 KUKA WCS 進行倉儲控制。


💻 Web 管理介面系統

RosAGV 提供完整的 Web 介面體系,從管理員到現場操作人員,從中央控制到車載監控,全面覆蓋各種使用場景。

1. AGVCUI - 車隊管理介面(Port 8001)

定位: 管理員級別的企業級車隊管理系統

核心功能:

技術架構:

存取方式: http://agvc.ui/http://localhost:8001/


2. OPUI - 操作員介面(Port 8002)

定位: 現場操作員的工作站介面

核心功能:

技術特色:

技術架構:

存取方式: http://localhost:8002/


3. HMI Station - 人機介面終端(Port 8002)

定位: 觸控操作的現場終端介面(基於 OPUI 的擴展功能)

核心特色:

雙層路由機制:

核心功能:

視覺設計:

技術架構:

存取方式: http://localhost:8002/?deviceId=hmi0000000000001


4. AGVUI - AGV 車載監控界面(Port 8003)

定位: 輕量級 AGV 車載設備監控界面

核心特色:

雙模式支援:

身份識別機制:

  1. 讀取 /app/.device_identity 確認容器類型
  2. 如果是 AGV 容器,讀取 /app/.agv_identity
  3. 備用:從環境變數 AGV_ID 讀取
  4. 無法識別時顯示所有 AGV 狀態

狀態資料結構:

技術架構:

存取方式:


UI 系統技術對比

特性 AGVCUI OPUI HMI Station AGVUI
Port 8001 8002 8002 8003
目標用戶 系統管理員 現場操作員 現場操作人員 車載設備
介面複雜度 高(完整功能) 中(簡化操作) 低(大按鈕) 低(單頁監控)
狀態管理 無(DOM 直接操作) miniStore miniStore
資料庫 PostgreSQL PostgreSQL PostgreSQL 檔案系統
即時通訊 Socket.IO Socket.IO Socket.IO Socket.IO
地圖功能 ✅ Leaflet.js
權限控制 ✅ 多用戶 ✅ 設備授權 ✅ 設備授權
部署位置 AGVC 伺服器 AGVC 伺服器 AGVC 伺服器 AGV 車載

🛠️ 統一工具系統

RosAGV 提供強大的統一工具系統,只需一個字母 r 即可存取所有管理功能。

系統診斷工具

命令 功能
r agvc-check AGVC 管理系統健康檢查
r agv-check AGV 車載系統健康檢查
r system-health 完整系統健康檢查
r quick-diag 快速綜合診斷

容器管理工具

命令 功能
r containers-status 檢查所有容器狀態
r agv-start / r agv-stop AGV 容器啟停
r agvc-start / r agvc-stop AGVC 系統啟停

網路診斷工具

命令 功能
r network-check 系統連接埠檢查
r zenoh-check Zenoh 連接檢查

日常運維範例:

# 每日系統檢查
r agvc-check && r containers-status && r network-check

# 系統啟動
r agvc-start

# 故障排除
r quick-diag

📋 應用場景

1. 智慧工廠

物料搬運自動化:

OCR 門禁控制:

2. 倉儲管理

倉庫自動化:

3. 製造業產線

產線物流自動化:


🎯 技術亮點

1. 完整容器化部署

所有服務容器化:

2. ROS 2 現代架構

採用最新 ROS 2 Jazzy:

3. 跨平台 Web 管理

不需要專用軟體:

4. 模組化設計

17 個專用工作空間:

5. 多層級 Web 介面系統

4 個不同層級的 Web 介面:

6. 完整的開發文件系統

超過 50 份技術文件:


💡 開發體會

這個專案讓我深刻體會到:

雙環境架構的必要性:

Zenoh RMW 的強大:

容器化的價值:

模組化的重要性:

UI 分層設計的智慧:

文檔架構的前瞻性:


🚀 未來發展

目前系統持續優化中,未來計畫:


專案資訊


Happy Coding! 🤖