📌 建置 ROS + Gazebo + RViz Docker Compose
這份 docker-compose.yml
會建立 三個容器:
ros_core
:ROS Master,負責 ROS 通訊gazebo_sim
:Gazebo 模擬環境rviz_gui
:RViz 視覺化
✅ 支援 GUI (DISPLAY
變數),讓 Gazebo 和 RViz 在主機上顯示
✅ 透過 network
讓 ROS 節點能互相通訊
✅ 使用 volumes
保持開發環境穩定
🚀 docker-compose.yml
🚀 主要功能解析
🔹 1️⃣ ros_core
(ROS Master)
- 負責 ROS 訊息傳輸
- 使用
ros:noetic-ros-core
最小化的 ROS 版本 - 設定
ROS_MASTER_URI
讓其他容器能夠連接 ROS Master
🔹 2️⃣ gazebo_sim
(Gazebo 模擬環境)
- 使用
osrf/ros:noetic-desktop-full
,內建 Gazebo - 顯示 GUI(Gazebo)
DISPLAY=${DISPLAY}
volumes: /tmp/.X11-unix:/tmp/.X11-unix
- 設定
ROS_MASTER_URI
連接ros_core
🔹 3️⃣ rviz_gui
(RViz 視覺化)
- 使用
osrf/ros:noetic-desktop-full
- 顯示 GUI(RViz)
- 連接
ros_core
來讀取 ROS 資料
🚀 使用方式
1️⃣ 啟動 Docker Compose
🚀 這會自動啟動三個容器,Gazebo 和 RViz 會顯示在主機上!
2️⃣ 進入 gazebo_sim
容器
🔹 測試 ROS 是否正常運作
應該能看到 ROS Topic,例如:
3️⃣ 進入 rviz_gui
容器
🔹 手動啟動 RViz
🚀 你應該可以看到 RViz 的 GUI 介面!
🚀 停止與清理
📌 停止所有容器
📌 清理無用的 Docker 資源
📌 總結
服務名稱 | 用途 |
---|---|
ros_core | 啟動 ROS Master,處理 ROS 訊息 |
gazebo_sim | 啟動 Gazebo,執行機械手臂模擬 |
rviz_gui | 啟動 RViz,視覺化機械手臂 |
💡 這份 docker-compose.yml
讓 ROS、Gazebo、RViz 能夠無縫協作,並支援 GUI! 🚀
沒有留言:
張貼留言