<?xml version="1.0"?>
<!-- ============================================================
  ar4_real.urdf · LateAI 站内原创教学模型（真实零件网格版）
  用途：在 MIT Drake (pydrake) + Meshcat 中做「真机外观」的动力学模拟
  ============================================================
  网格来源：real_arm4/meshes/*.obj —— 由官方 Annin AR4 (MK5) STL 转换而来，
    共 18 个零件（银铝件 / 黑电机 / 蓝盖 / 白标 / 灰罩）。
    这些 OBJ 已在转换阶段按官方 xacro 的 <origin xyz rpy> 预先变换进各自
    link frame，因此这里 <visual> 的 origin 一律为 0 0 0，无需再补偏移。
  关节链：与同目录 ar4_arm.urdf 完全一致（逐字段取自官方 ar_macro.xacro）
  网格路径：相对本文件所在目录（可整目录拷走后直接运行）
  碰撞体：用长方体近似（与 ar4_arm.urdf 同尺寸），避免用高面数网格做碰撞
  ============================================================ -->
<robot name="ar4_real">

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

  <!-- ===== base：铝底座 + 电控罩 + 电机 ===== -->
  <link name="base">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/base_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/base_enclosure.obj"/></geometry>
      <material name="enclosure"><color rgba="0.616 0.616 0.616 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/base_motor.obj"/></geometry>
      <material name="motor"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 0 0.046" rpy="0 0 0"/>
      <geometry><box size="0.10 0.10 0.092"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 0 0.046" rpy="0 0 0"/>
      <mass value="1.20"/>
      <inertia ixx="0.001810" ixy="0" ixz="0" iyy="0.001810" iyz="0" izz="0.002000"/>
    </inertial>
  </link>

  <joint name="J1" type="revolute">
    <parent link="base"/>
    <child link="link1"/>
    <origin xyz="0 0 0.092" rpy="3.14159265 0 0"/>
    <axis xyz="0 0 1"/>
    <limit lower="-2.96705973" upper="2.96705973" effort="20" velocity="1.8"/>
    <dynamics damping="0.10"/>
  </joint>

  <!-- ===== link1：肩座铝件 + 电机 ===== -->
  <link name="link1">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link1_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link1_motor.obj"/></geometry>
      <material name="motor"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 0 0.05" rpy="0 0 0"/>
      <geometry><box size="0.09 0.09 0.10"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 0 0.05" rpy="0 0 0"/>
      <mass value="0.90"/>
      <inertia ixx="0.001360" ixy="0" ixz="0" iyy="0.001360" iyz="0" izz="0.001215"/>
    </inertial>
  </link>

  <joint name="J2" type="revolute">
    <parent link="link1"/>
    <child link="link2"/>
    <origin xyz="0 0.06415 -0.07778" rpy="1.57079633 0 -1.57079633"/>
    <axis xyz="0 0 -1"/>
    <limit lower="-0.73303829" upper="1.57079633" effort="20" velocity="1.5"/>
    <dynamics damping="0.10"/>
  </joint>

  <!-- ===== link2：大臂铝件 + 蓝盖 + 白标 + 电机 ===== -->
  <link name="link2">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link2_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link2_cover.obj"/></geometry>
      <material name="cover"><color rgba="0.000 0.349 1.000 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link2_logo.obj"/></geometry>
      <material name="logo"><color rgba="1.000 1.000 1.000 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link2_motor.obj"/></geometry>
      <material name="motor"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 -0.15 0" rpy="0 0 0"/>
      <geometry><box size="0.07 0.30 0.07"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 -0.15 0" rpy="0 0 0"/>
      <mass value="1.10"/>
      <inertia ixx="0.008700" ixy="0" ixz="0" iyy="0.000898" iyz="0" izz="0.008700"/>
    </inertial>
  </link>

  <joint name="J3" type="revolute">
    <parent link="link2"/>
    <child link="link3"/>
    <origin xyz="0 -0.305 0" rpy="0 0 3.14159265"/>
    <axis xyz="0 0 -1"/>
    <limit lower="-1.55334303" upper="0.90757121" effort="15" velocity="1.5"/>
    <dynamics damping="0.08"/>
  </joint>

  <!-- ===== link3：小臂铝件 + 电机 ===== -->
  <link name="link3">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link3_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link3_motor.obj"/></geometry>
      <material name="motor"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 -0.14 0" rpy="0 0 0"/>
      <geometry><box size="0.06 0.28 0.06"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 -0.14 0" rpy="0 0 0"/>
      <mass value="0.80"/>
      <inertia ixx="0.005470" ixy="0" ixz="0" iyy="0.000480" iyz="0" izz="0.005470"/>
    </inertial>
  </link>

  <joint name="J4" type="revolute">
    <parent link="link3"/>
    <child link="link4"/>
    <origin xyz="0 0 0" rpy="1.57079633 0 -1.57079633"/>
    <axis xyz="0 0 -1"/>
    <limit lower="-3.14159265" upper="3.14159265" effort="8" velocity="2.0"/>
    <dynamics damping="0.06"/>
  </joint>

  <!-- ===== link4：腕段一铝件 + 蓝盖 + 白标 + 电机 ===== -->
  <link name="link4">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link4_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link4_cover.obj"/></geometry>
      <material name="cover"><color rgba="0.000 0.349 1.000 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link4_logo.obj"/></geometry>
      <material name="logo"><color rgba="1.000 1.000 1.000 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link4_motor.obj"/></geometry>
      <material name="motor"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 0 -0.11" rpy="0 0 0"/>
      <geometry><box size="0.06 0.06 0.22"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 0 -0.11" rpy="0 0 0"/>
      <mass value="0.50"/>
      <inertia ixx="0.002166" ixy="0" ixz="0" iyy="0.002166" iyz="0" izz="0.000300"/>
    </inertial>
  </link>

  <joint name="J5" type="revolute">
    <parent link="link4"/>
    <child link="link5"/>
    <origin xyz="0 0 -0.22294" rpy="3.14159265 0 -1.57079633"/>
    <axis xyz="1 0 0"/>
    <limit lower="-1.83259571" upper="1.83259571" effort="8" velocity="2.5"/>
    <dynamics damping="0.05"/>
  </joint>

  <!-- ===== link5：腕段二铝件 + 电机 ===== -->
  <link name="link5">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link5_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link5_motor.obj"/></geometry>
      <material name="motor"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 0 0.04" rpy="0 0 0"/>
      <geometry><box size="0.05 0.05 0.08"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 0 0.04" rpy="0 0 0"/>
      <mass value="0.35"/>
      <inertia ixx="0.000309" ixy="0" ixz="0" iyy="0.000309" iyz="0" izz="0.000146"/>
    </inertial>
  </link>

  <joint name="J6" type="revolute">
    <parent link="link5"/>
    <child link="link6"/>
    <origin xyz="0 0 0.041" rpy="0 0 0"/>
    <axis xyz="0 0 1"/>
    <limit lower="-3.14159265" upper="3.14159265" effort="5" velocity="3.0"/>
    <dynamics damping="0.04"/>
  </joint>

  <!-- ===== link6：末端法兰铝件 ===== -->
  <link name="link6">
    <visual>
      <geometry><mesh filename="real_arm4/meshes/link6_aluminum.obj"/></geometry>
      <material name="aluminum"><color rgba="0.812 0.812 0.812 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 0 0.015" rpy="0 0 0"/>
      <geometry><box size="0.05 0.05 0.03"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 0 0.015" rpy="0 0 0"/>
      <mass value="0.20"/>
      <inertia ixx="0.0000567" ixy="0" ixz="0" iyy="0.0000567" iyz="0" izz="0.0000833"/>
    </inertial>
  </link>

  <joint name="tool_joint" type="fixed">
    <parent link="link6"/>
    <child link="tool_link"/>
    <origin xyz="0 0 0.03" rpy="0 0 0"/>
  </joint>

  <link name="tool_link">
    <visual>
      <origin xyz="0 0 0.025" rpy="0 0 0"/>
      <geometry><box size="0.03 0.03 0.05"/></geometry>
      <material name="end_effector"><color rgba="0.100 0.100 0.100 1"/></material>
    </visual>
    <collision>
      <origin xyz="0 0 0.025" rpy="0 0 0"/>
      <geometry><box size="0.03 0.03 0.05"/></geometry>
    </collision>
    <inertial>
      <origin xyz="0 0 0.025" rpy="0 0 0"/>
      <mass value="0.05"/>
      <inertia ixx="0.0000142" ixy="0" ixz="0" iyy="0.0000142" iyz="0" izz="0.0000075"/>
    </inertial>
  </link>

</robot>
