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_statestopic)。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_statesrobot_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 的輸出
沒有留言:
張貼留言