要在 Ubuntu 22.04 或任何支援 Docker 的系統上執行 ROS 2 Humble Hawksbill(這是與 Ubuntu 22.04 搭配的官方發行版),最簡單且最推薦的方法就是使用官方的 Docker 映像檔。
以下是使用 Docker 執行 ROS 2 Humble 容器的步驟和常用指令。
🐳 使用 Docker 執行 ROS 2 Humble 的步驟
步驟 1: 拉取 ROS 2 Humble 映像檔
您可以從 Docker Hub 拉取官方維護的 osrf/ros 映像檔。最常用的是 humble-desktop-full,它包含了大部分開發所需的工具和桌面環境(例如 Rviz 和 Gazebo)。
docker pull osrf/ros:humble-desktop-full
步驟 2: 啟動 ROS 2 Humble 容器
A. 僅運行 CLI (無圖形介面/GUI)
如果您只需要執行 ROS 2 的命令列工具 (如 ros2 run, ros2 topic), 這是最簡單的方式。
docker run -it --rm \
--name ros2_humble_cli \
osrf/ros:humble-desktop-full \
/bin/bash
| 參數 | 說明 |
| -it | interactive (互動) 和 tty (終端機)。讓您可以在容器內輸入指令。 |
| --rm | 容器停止時自動移除它。用於測試或臨時任務。 |
| --name | 為容器指定一個易記的名稱。 |
| /bin/bash | 容器啟動後要執行的命令 (進入 bash shell)。 |
B. 運行 GUI 應用程式 (如 Rviz, Gazebo)
如果想在容器內使用 Rviz 或 Gazebo 等圖形介面工具,您需要啟用 X11 轉發 (X11 Forwarding)。
執行指令 (在您的主機終端機運行):
# 1. 允許容器存取 X 伺服器
xhost +local:docker
# 2. 運行 ROS 2 Humble 容器 (支援 GUI)
docker run -it --rm \
--env="DISPLAY" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--name ros2_humble_gui \
osrf/ros:humble-desktop-full \
/bin/bash
步驟 3: 在容器內測試 ROS 2 Humble
一旦容器啟動,您會看到 bash 提示符號,表示您已進入 ROS 2 Humble 環境。
檢查 ROS 環境設定:
Bashprintenv ROS_DISTRO # 應該顯示 humble執行一個 Publisher/Subscriber 範例:
終端機 1 (Publisher):
Bashros2 run demo_nodes_cpp talker終端機 2 (Subscriber):
您需要開啟另一個終端機,並進入正在運行的容器:
Bashdocker exec -it ros2_humble_gui /bin/bash在新的容器終端機中執行 Subscriber:
Bashros2 run demo_nodes_py listener
測試 GUI (如果您使用了 B 選項):
Bashrviz2這應該會彈出 Rviz 視窗。
💡 額外提示:使用工作區和掛載
在實際開發中,您通常會希望將主機上的 ROS 2 工作區 (Workspaces) 掛載 (mount) 到容器內,這樣您在主機上編輯的程式碼就可以直接在容器內編譯和運行。
# 假設您的 ROS 2 工作區在主機的 ~/ros2_ws
HOST_WS_DIR=~/ros2_ws
docker run -it --rm \
--env="DISPLAY" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--volume="$HOST_WS_DIR:/home/user/ros2_ws" \
--name ros2_dev \
osrf/ros:humble-desktop-full \
/bin/bash
在容器內,您的工作區就會在 /home/user/ros2_ws。
您目前已經成功地在 Docker 中運行了 ROS 2 Humble。請問您接下來希望執行 ROS 2 的哪個應用程式或功能呢?
沒有留言:
張貼留言