<?xml version="1.0"?>
<!-- ============================================================
  faze4_real.urdf · LateAI 站内原创教学模型（真实零件网格版）
  用途：在 MIT Drake (pydrake) + Meshcat 中做「真机外观」的动力学模拟
  ============================================================
  网格来源：real_faze4/meshes/*.obj —— 由官方 Faze4 STL 转换而来，共 7 个零件
    （base_link / rotary_base / nadlaktica / lakat / podlaktica / saka / hvataljka）。
    官方 URDF 中这些零件的 <visual><origin> 全为单位阵，即 STL 本身已在各自 link frame 内，
    因此这里 <visual> 一律不加 origin 偏移。
  关节链：与同目录 faze4_arm.urdf 完全一致（逐字段取自官方 URDF）
  网格路径：相对本文件所在目录（可整目录拷走后直接运行）
  碰撞体：用长方体近似（与 faze4_arm.urdf 同尺寸），避免用高面数网格做碰撞
  ============================================================ -->
<robot name="faze4_real">

  <link name="world"/>
  <joint name="world_joint" type="fixed">
    <parent link="world"/>
    <child link="base_link"/>
    <origin xyz="0 0 0" rpy="0 0 0"/>
  </joint>

  <!-- ===== base_link ===== -->
  <link name="base_link">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/base_link.obj"/></geometry>
      <material name="c_base_link"><color rgba="0.22 0.24 0.28 1"/></material>
    </visual>
    <collision>
      <origin xyz="0.0756304 -0.169659 0.0768031" rpy="0 -0 0"/>
      <geometry><box size="0.167956 0.253995 0.122138"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0.0754452 0.0706654 0.174716" rpy="0 0 0"/>
      <mass value="1.75591"/>
      <inertia ixx="0.010690165" ixy="1.2533292e-05" ixz="-1.7880249e-05" iyy="0.012138954" iyz="-0.00017261475" izz="0.0052308761"/>
    </inertial>
  </link>

  <!-- rotary_base：base_link → rotary_base（官方 origin xyz="0.075629 -0.21266 0.050734" rpy="-1.5708 -6.123e-17 -1.5708"，axis 0 -1 0） -->
  <joint name="rotary_base" type="revolute">
    <parent link="base_link"/>
    <child link="rotary_base"/>
    <origin xyz="0.075629 -0.21266 0.050734" rpy="-1.5708 -6.123e-17 -1.5708"/>
    <axis xyz="0 -1 0"/>
    <limit lower="-3.14159265" upper="3.14159265" effort="25.0" velocity="1.6"/>
    <dynamics damping="0.10"/>
  </joint>

  <!-- ===== rotary_base ===== -->
  <link name="rotary_base">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/rotary_base.obj"/></geometry>
      <material name="c_rotary_base"><color rgba="0.80 0.42 0.10 1"/></material>
    </visual>
    <collision>
      <origin xyz="-0.0367826 -0.0343283 0.123077" rpy="1.34969 0 0.341685"/>
      <geometry><box size="0.166683 0.254382 0.265826"/></geometry>
    </collision>
    <inertial>
      <origin xyz="3.6594e-07 -0.12491 -0.0091222" rpy="0 0 0"/>
      <mass value="1.8968"/>
      <inertia ixx="0.011703" ixy="6.2683e-07" ixz="2.7765e-07" iyy="0.010005" iyz="-0.00096832" izz="0.0065158"/>
    </inertial>
  </link>

  <!-- nadlaktica：rotary_base → nadlaktica（官方 origin xyz="0 -0.20182 0" rpy="2.7756e-15 -1.3878e-15 -1.8111"，axis 0 0 1） -->
  <joint name="nadlaktica" type="revolute">
    <parent link="rotary_base"/>
    <child link="nadlaktica"/>
    <origin xyz="0 -0.20182 0" rpy="2.7756e-15 -1.3878e-15 -1.8111"/>
    <axis xyz="0 0 1"/>
    <limit lower="-2.09439510" upper="2.09439510" effort="40.0" velocity="1.5"/>
    <dynamics damping="0.12"/>
  </joint>

  <!-- ===== nadlaktica ===== -->
  <link name="nadlaktica">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/nadlaktica.obj"/></geometry>
      <material name="c_nadlaktica"><color rgba="0.30 0.33 0.38 1"/></material>
    </visual>
    <collision>
      <origin xyz="0.156248 -0.00245 0.00745552" rpy="1.5708 0 0"/>
      <geometry><box size="0.417496 0.1853 0.119911"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0.11187 -0.011704 0.007695" rpy="0 0 0"/>
      <mass value="3.097"/>
      <inertia ixx="0.011686" ixy="0.0012432" ixz="-0.0018781" iyy="0.03891" iyz="-5.4012e-05" izz="0.032612"/>
    </inertial>
  </link>

  <!-- lakat：nadlaktica → lakat（官方 origin xyz="0.32 0 0" rpy="3.1416 -6.3895e-16 -1.1753"，axis 0 0 -1） -->
  <joint name="lakat" type="revolute">
    <parent link="nadlaktica"/>
    <child link="lakat"/>
    <origin xyz="0.32 0 0" rpy="3.1416 -6.3895e-16 -1.1753"/>
    <axis xyz="0 0 -1"/>
    <limit lower="-2.61799388" upper="2.61799388" effort="25.0" velocity="2.0"/>
    <dynamics damping="0.10"/>
  </joint>

  <!-- ===== lakat ===== -->
  <link name="lakat">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/lakat.obj"/></geometry>
      <material name="c_lakat"><color rgba="0.14 0.15 0.18 1"/></material>
    </visual>
    <collision>
      <origin xyz="-0.0335 0.0037 0.04635" rpy="1.5708 -0 1.5708"/>
      <geometry><box size="0.157 0.1368 0.1827"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0.02031 -0.0354589 0.00171229" rpy="0 0 0"/>
      <mass value="1.27265"/>
      <inertia ixx="0.0043093507" ixy="-0.00047266367" ixz="2.1079369e-05" iyy="0.0038887332" iyz="-0.00010292281" izz="0.0051254945"/>
    </inertial>
  </link>

  <!-- podlaktica：lakat → podlaktica（官方 origin xyz="0 -0.0735 0" rpy="-0.5648 -0.78173 1.7809"，axis 0.14804 0.90477 0.39934） -->
  <joint name="podlaktica" type="revolute">
    <parent link="lakat"/>
    <child link="podlaktica"/>
    <origin xyz="0 -0.0735 0" rpy="-0.5648 -0.78173 1.7809"/>
    <axis xyz="0.14804 0.90477 0.39934"/>
    <limit lower="-3.14159265" upper="3.14159265" effort="10.0" velocity="3.0"/>
    <dynamics damping="0.06"/>
  </joint>

  <!-- ===== podlaktica ===== -->
  <link name="podlaktica">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/podlaktica.obj"/></geometry>
      <material name="c_podlaktica"><color rgba="0.30 0.33 0.38 1"/></material>
    </visual>
    <collision>
      <origin xyz="0.0182435 0.0575665 -0.112235" rpy="1.5708 0 0"/>
      <geometry><box size="0.140282 0.190526 0.317813"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0.015666 0.10444 0.04524" rpy="0 0 0"/>
      <mass value="0.8658"/>
      <inertia ixx="0.0043737" ixy="-0.00033248" ixz="-0.00029637" iyy="0.0017275" iyz="-0.0011009" izz="0.0039233"/>
    </inertial>
  </link>

  <!-- saka：podlaktica → saka（官方 origin xyz="0.037114 0.22683 0.10011" rpy="2.2965 -0.74045 -0.57161"，axis -1 0 0） -->
  <joint name="saka" type="revolute">
    <parent link="podlaktica"/>
    <child link="saka"/>
    <origin xyz="0.037114 0.22683 0.10011" rpy="2.2965 -0.74045 -0.57161"/>
    <axis xyz="-1 0 0"/>
    <limit lower="-2.09439510" upper="2.09439510" effort="10.0" velocity="3.0"/>
    <dynamics damping="0.05"/>
  </joint>

  <!-- ===== saka ===== -->
  <link name="saka">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/saka.obj"/></geometry>
      <material name="c_saka"><color rgba="0.14 0.15 0.18 1"/></material>
    </visual>
    <collision>
      <origin xyz="-0.00123359 -0.00651481 -0.00344319" rpy="1.16002 -0 2.97941"/>
      <geometry><box size="0.0792062 0.110543 0.0892108"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0.00102127 0.00173769 -0.00307333" rpy="0 0 0"/>
      <mass value="0.195661"/>
      <inertia ixx="0.00019616327" ixy="-1.1991521e-07" ixz="-4.9991032e-07" iyy="0.00019526394" iyz="9.0736479e-06" izz="0.0001361324"/>
    </inertial>
  </link>

  <!-- hvataljka：saka → hvataljka（官方 origin xyz="0 0 -0.042312" rpy="-3.1416 2.5362e-15 0.2419"，axis 0 0 1） -->
  <joint name="hvataljka" type="revolute">
    <parent link="saka"/>
    <child link="hvataljka"/>
    <origin xyz="0 0 -0.042312" rpy="-3.1416 2.5362e-15 0.2419"/>
    <axis xyz="0 0 1"/>
    <limit lower="-3.14159265" upper="3.14159265" effort="5.0" velocity="4.0"/>
    <dynamics damping="0.04"/>
  </joint>

  <!-- ===== hvataljka ===== -->
  <link name="hvataljka">
    <visual>
      <geometry><mesh filename="real_faze4/meshes/hvataljka.obj"/></geometry>
      <material name="c_hvataljka"><color rgba="0.85 0.55 0.12 1"/></material>
    </visual>
    <collision>
      <origin xyz="0.00064493 0.000214886 -0.00793783" rpy="3.14159 -0 1.5708"/>
      <geometry><box size="0.0580952 0.0574298 0.0135"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0.00017222 0.00017758 0.00947" rpy="0 0 0"/>
      <mass value="0.020284"/>
      <inertia ixx="3.4622e-06" ixy="-9.927e-08" ixz="-2.2616e-08" iyy="3.4561e-06" iyz="-2.332e-08" izz="6.3508e-06"/>
    </inertial>
  </link>

  <!-- tool_link：末端工具参考点（夹爪尖），官方 L5 = 0.057 m 的终点 -->
  <joint name="tool_joint" type="fixed">
    <parent link="hvataljka"/>
    <child link="tool_link"/>
    <origin xyz="0 0 0.0147" rpy="0 0 0"/>
  </joint>

  <link name="tool_link">
    <visual>
      <origin xyz="0 0 0.006" rpy="0 0 0"/>
      <geometry><box size="0.012 0.012 0.012"/></geometry>
      <material name="tool"><color rgba="0.10 0.10 0.10 1"/></material>
    </visual>
    <inertial>
      <mass value="0.001"/>
      <inertia ixx="1e-8" ixy="0" ixz="0" iyy="1e-8" iyz="0" izz="1e-8"/>
    </inertial>
  </link>

</robot>