解析 link_1
在 URDF 中的結構
link_1
是機械手臂的一部分,它在 URDF (Unified Robot Description Format) 中描述了
#慣性(Inertial)、
#可視化 (visual)、
#碰撞 (collision) ,
#關節 (joint) 屬性。
以下是對 link_1
的詳細解析。
📌 1️⃣ link_1
結構解析
🔹 link_1
定義
✅ link_1
是機械手臂的一個連結 (link),在 URDF
內負責表示該部件的物理屬性
📌 2️⃣ 慣性 (Inertial) – 定義 link_1
的質量與慣性張量
✅ 慣性描述 link_1
的物理屬性
mass
(質量) 👉3.0905 kg
origin
👉 慣性中心 (CoG
),位置(-2.5757E-14, 0.11047, -7.8988E-11)
inertia
(慣性張量) 👉ixx, iyy, izz
為慣性矩,ixy, ixz, iyz
為慣性積- 這些參數影響機械手臂的動力學計算 (如 MoveIt! 規劃)
📌 3️⃣ 可視化 (Visual) – 定義 link_1
的外觀
✅ 描述 link_1
在 RViz / Gazebo 中的外觀
mesh
(STL 模型檔) 👉link_1.STL
(在package://robot_arm_urdf/meshes/
目錄內)color
(顏色) 👉 白色 (1 1 1 1
)origin
👉 可視化模型的偏移 (目前為0,0,0
)
📌 4️⃣ 碰撞 (Collision) – 定義 link_1
的物理碰撞檢測
✅ collision
描述碰撞檢測的形狀
- 使用 STL 模型作為碰撞幾何
origin
位置與visual
一樣- 影響 MoveIt! 規劃與 Gazebo 碰撞檢測
📌 5️⃣ joint_1
– link_1
與 base_link
的關節
✅ joint_1
負責連接 link_1
與 base_link
name="joint_1"
👉 關節名稱 (重要,ROS 控制器會使用)type="revolute"
👉 旋轉關節 (Revolute Joint),可旋轉parent
/child
👉base_link
是父節點,link_1
是子節點origin
👉xyz="0 0 0.2"
代表關節位置,rpy="1.5708 0 1.5708"
代表旋轉axis xyz="0 1 0"
👉 關節旋轉軸 (Y 軸)limit
👉 旋轉範圍lower="0"
(最小角度0 rad
)upper="6.284"
(最大角度6.284 rad ≈ 360°
)effort="300"
(最大施加力矩300 Nm
)velocity="3"
(最大旋轉速度3 rad/s
)
📌 6️⃣ link_1
在 ROS Gazebo / MoveIt! 中的用途
🔹 (1) 在 Gazebo 內的影響
- 使用
mesh
來顯示機械手臂 - 碰撞 (
collision
) 用於物理模擬與碰撞檢測 - 慣性 (
inertial
) 影響 Gazebo 內的物理運算
🔹 (2) 在 MoveIt! 內的影響
joint_1
影響 IK 逆運動學計算limit
限制手臂的運動範圍- MoveIt! 規劃時會考慮
collision
來避免碰撞
🚀 總結
屬性 | 功能 |
---|---|
<inertial> | 設定 link_1 的質量與慣性張量 (影響物理運動) |
<visual> | 設定 link_1 在 RViz / Gazebo 內的外觀 |
<collision> | 設定 link_1 的物理碰撞檢測 |
<joint> | joint_1 連接 link_1 與 base_link ,允許旋轉 |
<limit> | 設定關節運動範圍與速度限制 |
Gazebo 內用途 | 影響手臂的重力、碰撞、物理模擬 |
MoveIt! 內用途 | 影響運動規劃與逆運動學 (IK) |
🚀 這樣 link_1
就能在 ROS Gazebo / MoveIt! 內被正確模擬與控制! 🚀
link_1 URDF 定義 code
===========================================
<link name="link_1">
<inertial>
<origin
xyz="-2.5757E-14 0.11047 -7.8988E-11"
rpy="0 0 0" />
<mass
value="3.0905" />
<inertia
ixx="0.026302"
ixy="-2.5267E-15"
ixz="-1.4177E-12"
iyy="0.019632"
iyz="-7.4535E-12"
izz="0.025388" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot_arm_urdf/meshes/link_1.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot_arm_urdf/meshes/link_1.STL" />
</geometry>
</collision>
</link>
<joint name="joint_1" type="revolute">
<origin
xyz="0 0 0.2"
rpy="1.5708 0 1.5708" />
<parent
link="base_link" />
<child
link="link_1" />
<axis
xyz="0 1 0" />
<limit
lower="0"
upper="6.284"
effort="300"
velocity="3" />
</joint>
沒有留言:
張貼留言