對於您的 Ubuntu 20.04/ROS Noetic 專案,使用 Docker 是最佳的環境管理方式。
ROS 官方在 Docker Hub 上提供了多種映像檔(Image)。最常用的是包含完整桌面的版本,讓您可以在容器內使用 Rviz 等圖形化工具。
官方 ROS Noetic Docker 映像檔選擇
我們以 osrf/ros:noetic-desktop-full
為例,演示如何啟動並在容器內運行 ROS 節點。
ROS Noetic Docker 啟動範例 (包含 GUI 支援)
由於您需要處理機械手臂和自走車的視覺化(例如 Rviz),您必須讓 Docker 容器能夠存取主機的圖形介面 (GUI)。
步驟 0: 啟用主機 X 伺服器存取 (僅 Linux 需要)
在主機 (Host) 終端機中執行此命令,允許 Docker 容器連接到您的顯示器:
xhost +local:docker
步驟 1: 運行 Docker 容器
在主機 (Host) 終端機中,使用以下指令啟動容器。這個指令包含了所有必要的參數來啟用互動模式和 GUI 顯示:
docker run -it --rm \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
osrf/ros:noetic-desktop-full \
/bin/bash
步驟 2: 在容器內運行 ROS 範例
一旦容器啟動,您的終端機提示符會變成容器內的 Bash 提示符 (通常是 root@<container-id>:/#
)。
A. 啟動 roscore
(ROS 1 的核心)
在容器內的第一個終端機執行:
roscore
(記得 ROS 1 必須先啟動 roscore
!)
B. 啟動視覺化節點 (turtlesim
)
在主機上新開一個終端機,再次使用 docker exec
進入同一個容器:
找出容器名稱/ID: 在主機終端機輸入
docker ps
例如,容器 ID 是
a1b2c3d4e5f6
。
進入容器並運行節點:
Bash# 使用容器 ID 或名稱 docker exec -it <容器 ID 或名稱> /bin/bash # 在容器內的終端機中執行: rosrun turtlesim turtlesim_node
驗證: 您應該會看到一個新的
turtlesim
視窗彈出在您的主機桌面。
C. 啟動控制節點
在主機上再新開一個終端機,再次進入同一個容器:
進入容器:
Bashdocker exec -it <容器 ID 或名稱> /bin/bash # 在容器內的終端機中執行: rosrun turtlesim turtle_teleop_key
驗證: 當您在此終端機按下鍵盤方向鍵時,
turtlesim
視窗中的烏龜將會移動。
總結
通過這個範例,您已經成功地在一個獨立、乾淨的 Docker 容器中啟動了完整的 ROS Noetic 環境,並實現了圖形介面 (GUI) 的顯示,這對您進行機械手臂的 Rviz 視覺化和 MoveIt! 規劃至關重要。
您現在就可以在這個環境中安裝 MoveIt! 或其他您需要的套件,而不會影響您主機的作業系統。
下一步: 您是否希望了解如何將您的本地 catkin_ws
工作空間或 URDF 檔案透過 Volume Mount 的方式掛載到這個容器內進行開發?
沒有留言:
張貼留言