welcom ! Handel home

2025年3月20日 星期四

讓 imu_link 貼近 link_1 並確保 IMU 隨 link_1 一起運動

  讓 imu_link 貼近 link_1 並確保 IMU 隨 link_1 一起運動

目前 IMU 可能與 link_1 沒有貼合,導致它看起來懸浮或無法跟隨 link_1 運動。

我們需要 調整 imu_jointorigin 並確保它正確地附著到 link_1


📌 1️⃣ 修正 imu_joint 位置

目前 IMU 被定義為:

xml
<joint name="imu_joint" type="fixed"> <parent link="link_1"/> <child link="imu_link"/> <origin xyz="0 0 0.1"/> </joint>

🚨 問題:

  • imu_link 目前的 origin xyz="0 0 0.1",表示它在 link_1 上方 0.1m,但這可能不準確。
  • link_1 的實際幾何形狀 (STL 模型) 可能導致 IMU 懸空。

修正方法: 📌 imu_link 貼合 link_1

xml
<joint name="imu_joint" type="fixed"> <parent link="link_1"/> <child link="imu_link"/> <origin xyz="0 0 0.05"/> <!-- IMU 距離 link_1 只有 5cm --> </joint>

🔹 你可以根據 link_1 的 STL 模型來微調 xyz 位置!

  • 如果 IMU 懸浮,減小 z 值 (xyz="0 0 0.02")
  • 如果 IMU 被卡住或重疊,增加 z 值 (xyz="0 0 0.07")

📌 確保 IMUlink_1 適當位置

bash
roslaunch robot_arm_urdf robot_arm_control.launch

📌 如果 IMU 仍然沒有貼近 link_1,請用 rviz 查看模型

bash
rosrun rviz rviz

rviz 內手動檢查 imu_link 相對於 link_1 的位置


📌 2️⃣ 確保 IMU 正確感測 link_1 的運動

📌 加入 Gazebo IMU 插件

xml
<gazebo reference="imu_link"> <sensor type="imu" name="imu_sensor"> <update_rate>100.0</update_rate> <plugin name="imu_plugin" filename="libgazebo_ros_imu_sensor.so"> <alwaysOn>true</alwaysOn> <updateRate>100.0</updateRate> <bodyName>imu_link</bodyName> <topicName>imu/data</topicName> <frameName>imu_link</frameName> </plugin> </sensor> </gazebo>

這樣 IMU 會感測 link_1 的旋轉與加速度,並發送到 /imu/data

📌 監測 IMU 數據

bash
rostopic echo /imu/data

如果 IMU 沒有數據,請確認 imu_plugin 是否正確載入

bash
rosparam list | grep imu

📌 3️⃣ 測試 IMUlink_1 運動

📌 rosrun 直接控制 link_1 的旋轉

bash
rostopic pub -1 /robot_arm_controller/command trajectory_msgs/JointTrajectory '{ joint_names: ["joint_1"], points: [{ positions: [1.57], # 旋轉 90 度 time_from_start: {secs: 2} }] }'

IMU 數據應該會變化,並反映 link_1 的旋轉

📌 監聽 IMU 數據

bash
rostopic echo /imu/data

如果 IMU 設定正確,你應該會看到 angular_velocity 變化


🚀 總結

項目**設定 / 調整影響
imu_joint 位置xyz="0 0 0.05"IMU 貼近 link_1
IMU 連接的關節parent="link_1"確保 IMU 跟隨 link_1 運動
Gazebo 插件libgazebo_ros_imu_sensor.soIMU 發布 /imu/data
測試 IMU 旋轉數據rostopic pub /robot_arm_controller/command確認 IMU 能感測 link_1

🚀 這樣 IMU 就能正確貼近 link_1 並測量其運動! 🚀

沒有留言: