背景故事:為什麼大家都在談「容器化」? #
想像一下,你要讓機器人服務在不同電腦、不同環境下穩定運作,傳統安裝步驟繁瑣、環境配置又容易出錯。這時候,Docker 容器就像是把你的服務裝進「行李箱」,不論走到哪都能「一鍵開箱」馬上啟動!
在智慧製造、物流、醫療等領域,ROS(Robot Operating System)已經是機器人開發的主力平台;而 ROS2 則為分散式、多設備協作帶來更多可能。容器化正好解決了部署 ROS2 服務時的「落地難題」——讓開發、測試、上線全都標準化。
Advantech 技術實驗:如何 5 步驟打造你的 ROS2 容器 #
這次實驗,我們以 Advantech 自家開發的 ROS2 基底映像(advigw/dev-ros2-<ROS_DISTRO>:1.0.0),示範如何用 Docker 快速包裝一個 ROS2 應用服務。以下是我們實際操作的步驟:
步驟一:打造專屬 Dockerfile #
首先,建立一個名為 Dockerfile 的文件。這份文件就像「食譜」,決定你的 ROS2 服務容器會有哪些配料(依賴)、怎麼煮(安裝指令)、以及開箱即用的自動啟動功能。
FROM advigw/dev-ros2-<ROS_DISTRO>:1.0.0
# 1. 複製應用所需檔案到容器
# WORKDIR /root
# COPY prerequisite/<your_application> /root/prerequisite
# 2. 安裝相關套件或依賴
# RUN apt-get update
# RUN apt-get install <some_dependency>
# 3. 設定容器啟動時自動執行的應用
# CMD [<application_command>]
步驟二:用 Docker CLI 建置映像檔 #
開啟終端機,在專案目錄下輸入:
docker build -t ros-example -f Dockerfile .
這樣就會產生一個名為 ros-example 的容器映像,之後就能輕鬆複製、部署啦!
步驟三:撰寫 docker-compose.yml 統籌多服務 #
想同時管理多個服務?用 docker-compose.yml 檔案就對了!這份設定檔能一次定義好所有容器要怎麼啟動、彼此怎麼連線,還能輕鬆調整環境變數。
version: '2.1'
services:
ros-example:
image: ros-example
container_name: ros-example
restart: always
networks:
- adv-ros-network
logging:
options:
max-size: 10M
environment:
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID}
networks:
adv-ros-network:
name: adv-ros-network
步驟四:一鍵啟動所有容器 #
所有設定完成後,在有 docker-compose.yml 的資料夾輸入:
docker-compose -f docker-compose.yml up -d
小提醒: 執行這步時,建議不要加上
sudo,否則ROS_DOMAIN_ID這個重要環境變數可能會失效喔!
步驟五:即時進入容器驗證 #
最後,開一個互動式 shell,直接進到 ROS2 服務容器裡面進行測試:
docker exec -it ros-example bash
這樣就能隨時檢查應用運作狀態,或進行進一步開發啦!
實驗亮點與應用價值 #
- 快速部署,省時省力:開發人員、客戶只要幾行指令,就能把 ROS2 服務搬到任何一台裝有 Docker 的電腦上。
- 環境一致,減少錯誤:不用再擔心「我這邊可以,你那邊不行」的問題,容器幫你把軟體環境都包好!
- 彈性擴展,未來無限:利用 Compose 管理多個 ROS2 服務,未來要串接 AI、IoT 或其他先進應用都超簡單。
- Advantech 持續創新:這套流程建立在我們自家開發的 ROS2 映像,並結合產業實際需求,展現我們在機器人與自動化領域的深厚實力。
結語與未來展望 #
這次的實驗證明,只要善用容器技術,ROS2 的部署與管理可以變得如此簡單!Advantech 不僅提供穩定可靠的開發基礎,更持續研發更聰明、更彈性的技術解決方案,助攻客戶快速落地 AIoT、智慧機器人等創新應用。
未來,我們將繼續優化容器化流程,導入更多自動化、遠端維運與安全性強化功能,攜手夥伴一起開創智慧產業新局!想知道更多技術細節或應用案例?持續鎖定 Advantech 部落格,讓我們一起玩轉科技新未來!