2025年12月10日 星期三

Docker run ros( noetic )

 好的,由於 ROS 1 Noetic 官方並沒有直接支援 Ubuntu 22.04 (Jammy Jellyfish),因為 Noetic 專門針對 Ubuntu 20.04 (Focal Fossa),所以使用 Docker 容器 是在 Ubuntu 22.04 上執行 ROS 1 Noetic 的最佳最推薦方法。

這樣可以利用官方維護的映像檔,避免在 22.04 系統上處理複雜的編譯和依賴問題。

🐳 使用 Docker 執行 ROS 1 Noetic 的步驟

主要步驟是拉取官方 osrf/ros:noetic-desktop-full 映像檔並啟動容器。

步驟 1: 確保 Docker 已安裝並運行

如果您尚未安裝 Docker,請先在您的 Ubuntu 22.04 主機上安裝。

  • 安裝 Docker (如果尚未安裝):

    Bash
    # 更新系統套件
    sudo apt update
    # 安裝必要的工具
    sudo apt install ca-certificates curl
    # 安裝 Docker
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    # 將您的用戶加入 docker 群組 (這樣就不用每次都用 sudo 執行 docker 命令)
    sudo usermod -aG docker $USER
    # 登出再重新登入,或運行 newgrp docker 使設定生效
    

步驟 2: 啟動 ROS Noetic 容器

為了能夠執行帶有圖形介面(例如 rqtGazebo)的 ROS 應用程式,您需要將主機的 X11 顯示環境共享給容器。

執行以下指令來啟動一個 ROS Noetic 容器:

Bash
# 1. 允許容器存取 X 伺服器 (在主機終端機運行)
xhost +local:docker

# 2. 運行 ROS Noetic 容器
# -it: 互動式終端
# --rm: 容器停止時自動移除
# --env="DISPLAY": 將主機的 DISPLAY 環境變數傳入容器 (用於顯示 GUI)
# --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw": 允許 X11 通訊
# --name=ros_noetic: 為容器命名
# osrf/ros:noetic-desktop-full: 官方 ROS Noetic 映像檔
docker run -it --rm \
    --env="DISPLAY" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --name=ros_noetic \
    osrf/ros:noetic-desktop-full \
    /bin/bash
  • 如果您需要使用 GPU 執行 Gazebo 或 Rviz (推薦 NVIDIA GPU): 您需要先安裝 NVIDIA Container Toolkit,然後在 docker run 命令中添加 --gpus all

    Bash
    # (假設已安裝 NVIDIA Container Toolkit)
    docker run -it --rm \
        --env="DISPLAY" \
        --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
        --gpus all \
        --name=ros_noetic_gpu \
        osrf/ros:noetic-desktop-full \
        /bin/bash
    

步驟 3: 在容器內測試 ROS Noetic

容器啟動後,您會進入容器的終端機。您可以直接開始使用 ROS:

  1. 檢查 ROS 環境設定:

    Bash
    printenv ROS_DISTRO
    # 應該顯示 noetic
    
  2. 運行 ROS Master:

    Bash
    roscore
  3. source   /opt/ros/noetic/setup.bash

  4. (在另一個容器終端機或 tmux session 中)運行 ROS 節點:

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

      Bash
      docker exec -it ros_noetic /bin/bash
      
    • 在新的容器終端機中,執行一個 turtlesim 範例:

      Bash
      rosrun turtlesim turtlesim_node
      
    • 再開啟一個終端機,執行鍵盤控制節點:

      Bash
      docker exec -it ros_noetic /bin/bash
      rosrun turtlesim turtle_teleop_key
      

這樣您就可以在 Ubuntu 22.04 上透過 Docker 完整使用 ROS 1 Noetic 的所有功能了。


yt videolink => https://youtu.be/yEbkF9HxzV0


沒有留言:

張貼留言