robot_arm_control.launch
建立指南
這個 robot_arm_control.launch
檔案應該包含:
- 加載機械手臂的 URDF 模型 (
robot_description
) - 啟動 Gazebo 並載入機械手臂
- 啟動
joint_state_publisher
(發布關節狀態) - 啟動
robot_state_publisher
(發布 TF 變換) - 啟動
ros_control
控制器 (controller_manager
) - 啟動
joint_trajectory_controller
以控制機械手臂關節
🚀 robot_arm_control.launch
詳細內容
📌 在 robot_arm_urdf/launch/robot_arm_control.launch
建立以下內容
📌 robot_arm_control.launch
內容解析
1️⃣ 載入機械手臂 URDF
- 讀取
robot_arm_urdf.urdf
,並設定robot_description
參數,這是 ROS 控制器運行所必須的。
2️⃣ 啟動 Gazebo
- 啟動 Gazebo 的空白世界,準備加入機械手臂模型。
3️⃣ 在 Gazebo 中生成機械手臂
- 透過
gazebo_ros
將機械手臂模型載入 Gazebo。
4️⃣ 啟動 Joint State Publisher
joint_state_publisher
負責發布機械手臂的關節狀態 (/joint_states
topic)。use_gui
設定是否啟動 GUI 來手動控制關節。
5️⃣ 啟動 Robot State Publisher
robot_state_publisher
負責轉換機械手臂的 關節狀態 (/joint_states
) 成 TF 變換,讓 RViz 也能顯示。
6️⃣ 設定 TF (base_footprint → base_link
)
- 設定靜態變換,使
base_footprint
與base_link
保持一致。
7️⃣ 載入 ROS 控制器
- 讀取控制器設定 (
joint_trajectory_controller.yaml
),這個 YAML 檔案應該包含:- 關節控制模式 (
position_controllers/JointTrajectoryController
) - 關節名稱 (
joint_1
~joint_6
) - PID 參數等
- 關節控制模式 (
📌 🔹 joint_trajectory_controller.yaml
(範例)
8️⃣ 啟動 controller_manager
- 管理 ROS 控制器
joint_state_controller
:負責發布/joint_states
robot_arm_controller
:負責控制機械手臂 (joint_trajectory_controller
)
📌 總結
這個 robot_arm_control.launch
會:
✅ 載入機械手臂的 URDF
✅ 啟動 Gazebo 並載入機械手臂
✅ 啟動 robot_state_publisher
以發送 TF
✅ 啟動 joint_state_publisher
發布關節狀態
✅ 啟動 ROS 控制器 (joint_trajectory_controller
)
🚀 如何測試
📌 (1) 啟動 Gazebo 與機械手臂
📌 (2) 確認控制器已啟動
應該看到 /robot_arm_controller/command
。
📌 (3) 測試控制機械手臂
🚀 如果機械手臂沒有動,請提供 rostopic list
和 rosnode list
的輸出
沒有留言:
張貼留言