welcom ! Handel home

2025年1月16日 星期四

Gazebo ROS 套件 (gazebo_ros_pkgs) 使用指南

 

Gazebo ROS 套件 (gazebo_ros_pkgs) 使用指南


1. 簡介

gazebo_ros_pkgs 是一組 ROS(機器人操作系統) 套件,負責將 Gazebo 模擬器 與 ROS 整合,允許 ROS 節點與 Gazebo 進行通訊,並在 Gazebo 中模擬機器人。


2. 安裝 gazebo_ros_pkgs

2.1 確認 Gazebo 版本

  • 不同 ROS 版本 支援不同的 Gazebo 版本
    • ROS IndigoGazebo 2.x
    • ROS Kinetic建議使用 Gazebo 7.x
    • ROS Melodic建議使用 Gazebo 9.x
    • ROS Noetic建議使用 Gazebo 11.x

2.2 使用 apt-get 安裝

如果系統中的 Gazebo 版本與 ROS 相容,可直接安裝:

bash
sudo apt-get install ros-<ros_version>-gazebo-ros-pkgs ros-<ros_version>-gazebo-ros-control

注意:請將 <ros_version> 替換為你的 ROS 版本,例如 kineticmelodicnoetic

2.3 手動編譯安裝

如果 ROS 版本與 Gazebo 版本不匹配,或者需要較新版本的 Gazebo,可以手動編譯安裝:

  1. 安裝 Git
    bash
    sudo apt-get install git
  2. 移動到 ROS 工作區的 src/ 目錄並克隆 gazebo_ros_pkgs 倉庫
    bash
    cd ~/catkin_ws/src git clone -b <ros_version>-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git

    注意<ros_version>-devel 應替換為你的 ROS 版本(如 melodic-devel, noetic-devel)。

  3. 檢查並安裝缺少的相依性
    bash
    rosdep install --from-paths . --ignore-src -r -y
  4. 回到工作區的最上層,進行編譯
    bash
    cd ~/catkin_ws catkin_make
  5. 驗證安裝
    bash
    roslaunch gazebo_ros empty_world.launch
    • 若 Gazebo 介面成功啟動,則安裝成功。
    • 使用 rostopic list 確認 /gazebo 相關的 topic 是否存在。

3. gazebo_ros_pkgs 主要功能

3.1 ROS 與 Gazebo 連線

  • gazebo_ros 套件 允許 ROS 與 Gazebo 互動:
    • 提供 ROS 介面來讀取和控制 Gazebo 模擬。
    • 透過 ROS topic 和 service 與 Gazebo 進行資料交換。

3.2 啟動 Gazebo

  • 透過 rosrunroslaunch 啟動:
    bash
    roslaunch gazebo_ros empty_world.launch
  • 可以單獨啟動:
    • Gazebo Server(物理引擎 + 感測器數據)
    • Gazebo Client(GUI)
  • 可使用 roslaunch 來啟動包含 ROS 通訊節點的 Gazebo:
    bash
    roslaunch gazebo_ros willowgarage_world.launch

3.3 模型載入

  • 使用 spawn_model 節點將機器人模型載入 Gazebo
    bash
    rosrun gazebo_ros spawn_model -file <model_path> -sdf -model my_robot
  • 可以使用 URDF 或 SDF 格式
    bash
    rosrun gazebo_ros spawn_model -file ~/robot.urdf -urdf -model my_robot
  • 設定模型位置
    bash
    rosrun gazebo_ros spawn_model -file ~/robot.urdf -urdf -model my_robot -x 1 -y 2 -z 0

3.4 資料傳輸

  • Gazebo 發布模擬數據到 ROS topic

    bash
    rostopic echo /gazebo/model_states
    • /gazebo/link_states → 模擬中所有連桿的狀態。
    • /gazebo/model_states → 模擬中所有機器人的位置、方向等狀態。
  • ROS 可發布指令控制 Gazebo

    bash
    rostopic pub /gazebo/set_model_state gazebo_msgs/ModelState "{model_name: 'robot', pose: {position: {x: 1, y: 2, z: 0}}}"
  • 檢查 Gazebo 的 ROS topic

    bash
    rostopic list | grep /gazebo
  • 檢查 Gazebo 的 ROS 服務

    bash
    rosservice list | grep /gazebo

3.5 Plugin 支援

  • Gazebo Plugin 擴展機器人功能:
    • gazebo_ros_control → 控制機器人運動
    • gazebo_ros_diff_drive → 模擬差速驅動機器人
    • gazebo_joint_state_publisher → 發佈關節狀態到 /joint_states topic

3.6 時間同步

  • Gazebo 與 PX4(無人機控制)可透過 /clock topic 進行時間同步
  • 即使 Gazebo 的 real-time factor 不為 1,PX4 仍會等待 Gazebo 時間推進

4. 使用 gazebo_ros_pkgs 的基本流程

4.1 啟動 Gazebo

bash
roslaunch gazebo_ros empty_world.launch

或載入特定的 .world 檔案:

bash
roslaunch gazebo_ros my_custom_world.launch

4.2 載入機器人模型

bash
rosrun gazebo_ros spawn_model -file ~/my_robot.urdf -urdf -model my_robot

4.3 使用 ROS 互動

  • 監聽 Gazebo 發布的資料
    bash
    rostopic echo /gazebo/model_states
  • 發送移動指令到機器人
    bash
    rostopic pub /cmd_vel geometry_msgs/Twist "linear: {x: 1.0, y: 0, z: 0}"

5. 總結

  • gazebo_ros_pkgs 是 Gazebo 與 ROS 的整合橋樑,提供:
    • Gazebo 啟動與模型載入
    • ROS 與 Gazebo 之間的資料交換
    • Gazebo plugin 擴展
  • 安裝方式
    • 透過 apt-get 安裝
    • 或手動克隆 gazebo_ros_pkgs 進行編譯
  • 核心功能
    • 啟動 Gazebo
    • 載入機器人模型
    • 監聽與發布 ROS topic
    • 控制機器人運動
    • 時間同步

這套件能幫助 ROS 開發者在 Gazebo 中進行機器人模擬與測試。🚀

沒有留言: