好的,由於 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 容器
為了能夠執行帶有圖形介面(例如 rqt 或 Gazebo)的 ROS 應用程式,您需要將主機的 X11 顯示環境共享給容器。
執行以下指令來啟動一個 ROS Noetic 容器:
# 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:
檢查 ROS 環境設定:
Bashprintenv ROS_DISTRO # 應該顯示 noetic運行 ROS Master:
Bashroscoresource /opt/ros/noetic/setup.bash
(在另一個容器終端機或 tmux session 中)運行 ROS 節點:
開啟另一個終端機,並進入正在運行的容器:
Bashdocker exec -it ros_noetic /bin/bash在新的容器終端機中,執行一個
turtlesim範例:Bashrosrun turtlesim turtlesim_node再開啟一個終端機,執行鍵盤控制節點:
Bashdocker exec -it ros_noetic /bin/bash rosrun turtlesim turtle_teleop_key
這樣您就可以在 Ubuntu 22.04 上透過 Docker 完整使用 ROS 1 Noetic 的所有功能了。
yt videolink => https://youtu.be/yEbkF9HxzV0
沒有留言:
張貼留言