welcom ! Handel home

2025年2月16日 星期日

ROS 2 Humble 與 Gazebo 相容版本對應

 ROS 2 Humble 與 Gazebo 版本對應

在 ROS 2 Humble 版本中,推薦使用 Gazebo FortressIgnition Gazebo Fortress 來進行模擬。

  • Gazebo Classic(Gazebo 11) 仍然可以與 ROS 2 Humble 搭配,但 Gazebo Classic 逐步被 Ignition Gazebo(現在改名為 Gazebo)取代。
  • Gazebo FortressIgnition Gazebo 系列的 LTS 版本,與 ROS 2 Humble 兼容性最佳,並且會持續獲得官方支持。

對應表

ROS 2 版本建議 Gazebo 版本備註
HumbleGazebo Fortress (Ignition)建議使用
HumbleGazebo 11 (Gazebo Classic)仍可使用,但未來不建議

官方建議新專案使用 Gazebo Fortress,因為 Gazebo Classic(Gazebo 11)未來可能不再更新。


Dockerfile:ROS 2 Humble + Gazebo Fortress

以下 Dockerfile 會:

  1. 基於 ROS 2 Humble 建立 Docker 環境。
  2. 安裝 Gazebo Fortress
  3. 安裝 ros_gz(Gazebo 與 ROS 2 的整合工具)
  4. 測試 Gazebo 來確保安裝成功。

🔹 Dockerfile

[dockerfile]

# 使用官方 ROS 2 Humble 映像 FROM ros:humble # 設定環境變數 ENV DEBIAN_FRONTEND=noninteractive # 更新系統並安裝必要的工具 RUN apt update && apt install -y \ lsb-release wget gnupg2 curl \ && rm -rf /var/lib/apt/lists/* # 設定 Gazebo 官方的 APT 軟體庫 RUN sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" > /etc/apt/sources.list.d/gazebo-stable.list' \ && wget https://packages.osrfoundation.org/gazebo.key -O - | apt-key add - # 安裝 Gazebo Fortress(Ignition Gazebo LTS 版本) RUN apt update && apt install -y \ gazebo-fortress \ ros-humble-ros-gz \ && rm -rf /var/lib/apt/lists/* # 設定環境變數以啟動 Gazebo ENV GZ_SIM_RESOURCE_PATH=/usr/share/gz # 設定 Bash 啟動時自動載入 ROS 2 及 Gazebo 環境 RUN echo "source /usr/share/gazebo/setup.sh" >> ~/.bashrc RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc # 設定工作目錄 WORKDIR /root/ros2_ws # 預設執行指令 CMD ["bash"]

構建 Docker 映像

Dockerfile 所在的目錄執行:

bash
docker build -t ros2_humble_gazebo .

這將建立 包含 ROS 2 Humble 和 Gazebo Fortress 的 Docker 映像。


測試 Gazebo

1️⃣ 啟動 Docker 容器

運行 ROS 2 和 Gazebo 容器:

bash
docker run -it --rm --net=host ros2_humble_gazebo

使用 --net=host 可以讓 Gazebo 使用 X11 來顯示 GUI(如果在 Linux 環境下運行)。

2️⃣ 測試 Gazebo

在 Docker 內執行:

bash
gz sim shapes.sdf

這將打開一個簡單的 Gazebo 模擬場景。

3️⃣ 測試 ROS 2 與 Gazebo 通訊

運行 Gazebo

bash
gz sim -v 4

在新終端檢查 ROS 2 話題

bash
ros2 topic list

你應該會看到一些 Gazebo 發布的話題,例如:

bash
/clock /model/info /physics/step

結論

這個 Dockerfile 能夠快速建立 ROS 2 Humble + Gazebo Fortress 環境,並測試 ROS 2 與 Gazebo 的通訊。

📌 適用場景

  • 開發 ROS 2 與 Gazebo 整合的機器人模擬
  • 確保 Gazebo 在 Docker 內可正常運行
  • 減少在本機安裝 Gazebo 的負擔

🚀 現在你可以使用 Gazebo Fortress 來模擬 ROS 2 機器人了! 🎉

沒有留言: