welcom ! Handel home

2025年3月20日 星期四

解析 link_1 在 URDF 中的結構

 解析 link_1 在 URDF 中的結構

link_1 是機械手臂的一部分,它在 URDF (Unified Robot Description Format) 中描述了 

#慣性(Inertial)、

#可視化 (visual)、

#碰撞 (collision) ,

#關節 (joint) 屬性


以下是對 link_1 的詳細解析。


📌 1️⃣ link_1 結構解析

🔹 link_1 定義

xml
<link name="link_1">

link_1 是機械手臂的一個連結 (link),在 URDF 內負責表示該部件的物理屬性


📌 2️⃣ 慣性 (Inertial) – 定義 link_1 的質量與慣性張量

xml
<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>

慣性描述 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 的外觀

xml
<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>

描述 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 的物理碰撞檢測

xml
<collision> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <mesh filename="package://robot_arm_urdf/meshes/link_1.STL" /> </geometry> </collision>

collision 描述碰撞檢測的形狀

  • 使用 STL 模型作為碰撞幾何
  • origin 位置與 visual 一樣
  • 影響 MoveIt! 規劃與 Gazebo 碰撞檢測

📌 5️⃣ joint_1link_1base_link 的關節

xml
<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>

joint_1 負責連接 link_1base_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_1base_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>







沒有留言: