🚀 ROS Gazebo 啟動後的內建節點 (nodes
) 和話題 (topics
)
當 Gazebo 與 ROS 整合 後,啟動 Gazebo 模擬環境 (gazebo_ros
) 會產生一系列 內建的 ROS 節點與話題,這些節點和話題用於:
- 控制模擬機器人
- 發佈模擬環境的狀態
- 提供感測器數據
- 允許 ROS 節點與 Gazebo 互動
📌 如何啟動 Gazebo 與 ROS
這將會啟動 Gazebo 並加載一個空場景 (empty_world
)。
如果你要載入機器人:
例如:
🟢 啟動後的內建節點 (rosnode list
)
當 Gazebo 啟動後,執行:
你會看到以下內建節點:
節點名稱 | 功能 |
---|---|
/gazebo | Gazebo 主控節點,負責整個模擬環境的運行 |
/gazebo_gui | 控制 Gazebo 圖形界面 (GUI) |
/clock | 提供模擬時間 |
/rosout | 記錄並發布 ROS 記錄訊息 |
如果有加載機器人,可能還會有:
機器人相關節點 | 功能 |
---|---|
/robot_state_publisher | 發佈機器人連桿 (TF) 變換關係 |
/controller_manager | 控制器管理,負責運動控制 |
/joint_state_publisher | 發佈關節 (/joint_states ) |
🔵 啟動後的內建話題 (rostopic list
)
你會看到以下話題:
1️⃣ Gazebo 基礎話題
話題名稱 | 類型 | 功能 |
---|---|---|
/gazebo/link_states | gazebo_msgs/LinkStates | 發佈所有模型的 link 狀態 (位置、方向) |
/gazebo/model_states | gazebo_msgs/ModelStates | 發佈所有模型的 整體位姿 (pose, twist) |
/gazebo/set_model_state | gazebo_msgs/SetModelState | 設定 模型的位置 |
/gazebo/set_link_state | gazebo_msgs/SetLinkState | 設定 Link 的狀態 |
/gazebo/reset_simulation | std_srvs/Empty | 重置整個模擬 |
/gazebo/reset_world | std_srvs/Empty | 重置世界但不影響時間 |
/gazebo/pause_physics | std_srvs/Empty | 暫停物理模擬 |
/gazebo/unpause_physics | std_srvs/Empty | 恢復物理模擬 |
2️⃣ 模擬時間 (/clock
)
話題名稱 | 類型 | 功能 |
---|---|---|
/clock | rosgraph_msgs/Clock | Gazebo 內部時間,ROS 會根據此時間同步 |
📌 使用範例
輸出:
這表示 Gazebo 模擬時間 已經運行 123 秒。
3️⃣ 機器人控制 (/cmd_vel
、/joint_states
)
話題名稱 | 類型 | 功能 |
---|---|---|
/cmd_vel | geometry_msgs/Twist | 控制機器人速度 (線速度 + 角速度) |
/joint_states | sensor_msgs/JointState | 提供機器人的關節狀態 (位置、速度、力矩) |
📌 控制機器人移動
如果機器人支援 cmd_vel
,可用以下方式讓機器人前進:
這會讓機器人 以 0.5 m/s 的速度前進。
4️⃣ 感測器數據 (/camera/image_raw
、/scan
)
如果模擬環境中有感測器,例如相機或雷射雷達 (LiDAR),會額外出現這些話題:
話題名稱 | 類型 | 功能 |
---|---|---|
/camera/image_raw | sensor_msgs/Image | 相機拍攝的影像 |
/scan | sensor_msgs/LaserScan | 雷射雷達 (LiDAR) 掃描數據 |
/imu/data | sensor_msgs/Imu | IMU 傳感器數據 (加速度、角速度) |
📌 監聽相機影像
📌 監聽 LiDAR 掃描數據
📌 Gazebo 內建節點與話題列表
🌟 1. Gazebo 內建節點 (rosnode list
)
節點名稱 | 功能 |
---|---|
/gazebo | Gazebo 模擬管理 |
/gazebo_gui | 控制 Gazebo 圖形界面 |
/clock | 提供模擬時間 |
/rosout | 記錄 ROS 記錄訊息 |
/robot_state_publisher | 發佈機器人狀態 |
/joint_state_publisher | 發佈關節狀態 |
🌟 2. Gazebo 內建話題 (rostopic list
)
話題名稱 | 類型 | 功能 |
---|---|---|
/gazebo/model_states | gazebo_msgs/ModelStates | 獲取機器人和物體的狀態 |
/gazebo/set_model_state | gazebo_msgs/SetModelState | 設定機器人的位置 |
/cmd_vel | geometry_msgs/Twist | 控制機器人運動 |
/joint_states | sensor_msgs/JointState | 監測機器人關節狀態 |
/scan | sensor_msgs/LaserScan | 雷射雷達 (LiDAR) 數據 |
/camera/image_raw | sensor_msgs/Image | 相機影像 |
/clock | rosgraph_msgs/Clock | 模擬時間 |
🔎 總結
✅ Gazebo 在 ROS 中是一個強大的模擬工具,啟動後會產生許多內建節點與話題,用於控制機器人、監測環境以及提供模擬時間。
✅ 關鍵節點 包括 /gazebo
(管理模擬)、/clock
(同步時間) 和 /cmd_vel
(控制機器人移動)。
✅ 關鍵話題 包括 /gazebo/model_states
(獲取機器人位置)、/cmd_vel
(控制機器人) 和 /scan
(雷射雷達數據)。
🚀 這些知識對於開發 ROS 機器人模擬與控制至關重要! 🚀
沒有留言:
張貼留言