2025年12月10日 星期三

Docker run ROS2 humble

 要在 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)。

Bash
docker pull osrf/ros:humble-desktop-full

步驟 2: 啟動 ROS 2 Humble 容器

A. 僅運行 CLI (無圖形介面/GUI)

如果您只需要執行 ROS 2 的命令列工具 (如 ros2 run, ros2 topic), 這是最簡單的方式。

Bash
docker run -it --rm \
    --name ros2_humble_cli \
    osrf/ros:humble-desktop-full \
    /bin/bash
參數說明
-itinteractive (互動) 和 tty (終端機)。讓您可以在容器內輸入指令。
--rm容器停止時自動移除它。用於測試或臨時任務。
--name為容器指定一個易記的名稱。
/bin/bash容器啟動後要執行的命令 (進入 bash shell)。

B. 運行 GUI 應用程式 (如 Rviz, Gazebo)

如果想在容器內使用 Rviz 或 Gazebo 等圖形介面工具,您需要啟用 X11 轉發 (X11 Forwarding)

執行指令 (在您的主機終端機運行):

Bash
# 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 環境。

  1. 檢查 ROS 環境設定:

    Bash
    printenv ROS_DISTRO
    # 應該顯示 humble
    
  2. 執行一個 Publisher/Subscriber 範例:

    • 終端機 1 (Publisher):

      Bash
      ros2 run demo_nodes_cpp talker
      
    • 終端機 2 (Subscriber):

      • 您需要開啟另一個終端機,並進入正在運行的容器:

        Bash
        docker exec -it ros2_humble_gui /bin/bash
        
      • 在新的容器終端機中執行 Subscriber:

        Bash
        ros2 run demo_nodes_py listener
        
  3. 測試 GUI (如果您使用了 B 選項):

    Bash
    rviz2
    

    這應該會彈出 Rviz 視窗。

💡 額外提示:使用工作區和掛載

在實際開發中,您通常會希望將主機上的 ROS 2 工作區 (Workspaces) 掛載 (mount) 到容器內,這樣您在主機上編輯的程式碼就可以直接在容器內編譯和運行。

Bash
# 假設您的 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 的哪個應用程式或功能呢?

沒有留言:

張貼留言