Files
cadSet/text-to-cad/models/robots/tom/v1/tom.urdf
T
2026-07-22 19:38:36 +08:00

458 lines
17 KiB
XML

<?xml version="1.0"?>
<!-- cadpy:sourcePath=tom.py -->
<!-- cadpy:sourceHash=64df050b0fac613a56c847e74999d0b9f21b62493b8e9e1bc78cc0320671fe27 -->
<robot name="tom">
<!-- Generated by tom.py for CAD Explorer and external URDF consumers. -->
<!-- Link inertials use STS3250 mass 74.5 g and STS3215 mass 55 g from Feetech, HFS5-2020 profile mass 0.5 kg/m from MISUMI, 5052-H32 density 0.097 lb/in^3 from SendCutSend, and Robonine gripper assembly mass 250 g distributed across generated gripper mesh volume estimates. Arm joint effort uses each servo family's rated torque: STS3250 16 kg-cm and STS3215 10 kg-cm at 12 V. -->
<link name="base_footprint" />
<link name="base_link">
<inertial>
<origin xyz="-0.013065695 0.018748416 -0.000001347" rpy="0 0 0" />
<mass value="0.089927257" />
<inertia ixx="0.000020029" ixy="0" ixz="0" iyy="0.000032723" iyz="0" izz="0.000036406" />
</inertial>
<visual>
<origin xyz="0 0.030575 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0 0.0329752 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/base_plate.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0.030575 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0 0.0329752 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/base_plate.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="shoulder_yaw_link">
<inertial>
<origin xyz="0.001212643 0.046188702 -0.00000152" rpy="0 0 0" />
<mass value="0.079694275" />
<inertia ixx="0.000021982" ixy="0" ixz="0" iyy="0.000013348" iyz="0" izz="0.000027213" />
</inertial>
<visual>
<origin xyz="0.0096 0.033940199 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.0096 0.033940199 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/servo_end_mount.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0.0096 0.033940199 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.0096 0.033940199 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/servo_end_mount.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="shoulder_pitch_link">
<inertial>
<origin xyz="-0.046864415 0.009984643 -0.000001415" rpy="0 0 0" />
<mass value="0.085578452" />
<inertia ixx="0.000026135" ixy="0" ixz="0" iyy="0.000051102" iyz="0" izz="0.000068521" />
</inertial>
<visual>
<origin xyz="0.0255 0.0091 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/servo_horn_yoke.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="-0.0594 0.0255 0" rpy="0 0 1.570796327" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0.0255 0.0091 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/servo_horn_yoke.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="-0.0594 0.0255 0" rpy="0 0 1.570796327" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="shoulder_roll_link">
<inertial>
<origin xyz="0.000577873 0.14416741 -0.000000724" rpy="0 0 0" />
<mass value="0.167235213" />
<inertia ixx="0.000595051" ixy="0" ixz="0" iyy="0.00002801" iyz="0" izz="0.000606028" />
</inertial>
<visual>
<origin xyz="0 0.0190404 0" rpy="-1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0 0.0190404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/hfs5_2020_150.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0 0.1690404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.0096 0.186981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/servo_end_mount.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.0096 0.186981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0.0190404 0" rpy="-1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0 0.0190404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/hfs5_2020_150.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0 0.1690404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.0096 0.186981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/servo_end_mount.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.0096 0.186981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/sts3250.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="elbow_pitch_link">
<inertial>
<origin xyz="0.000001711 0.009998836 0.046867544" rpy="0 0 0" />
<mass value="0.066078452" />
<inertia ixx="0.000068566" ixy="0" ixz="0" iyy="0.000051122" iyz="0" izz="0.000026174" />
</inertial>
<visual>
<origin xyz="0.00000347 0.009086927 -0.025496532" rpy="-1.570796327 1.570419537 -1.570419537" />
<geometry>
<mesh filename="3MF/servo_horn_yoke.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="-0.000002722 0.025518914 0.059397282" rpy="1.570796327 0.00037679 1.571173117" />
<geometry>
<mesh filename="3MF/sts3215.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0.00000347 0.009086927 -0.025496532" rpy="-1.570796327 1.570419537 -1.570419537" />
<geometry>
<mesh filename="3MF/servo_horn_yoke.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="-0.000002722 0.025518914 0.059397282" rpy="1.570796327 0.00037679 1.571173117" />
<geometry>
<mesh filename="3MF/sts3215.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="elbow_roll_link">
<inertial>
<origin xyz="0.000680967 0.113970513 -0.000000851" rpy="0 0 0" />
<mass value="0.122735213" />
<inertia ixx="0.000292565" ixy="0" ixz="0" iyy="0.000023823" iyz="0" izz="0.000301901" />
</inertial>
<visual>
<origin xyz="0.000003466 0.0190404 0" rpy="-1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.000003466 0.0190404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/hfs5_2020_100.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.000003466 0.1190404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.0096 0.136981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/servo_end_mount.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="0.0096 0.136981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/sts3215.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0.000003466 0.0190404 0" rpy="-1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.000003466 0.0190404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/hfs5_2020_100.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.000003466 0.1190404 0" rpy="1.570796327 0 0" />
<geometry>
<mesh filename="3MF/extrusion_bracket_2020.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.0096 0.136981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/servo_end_mount.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="0.0096 0.136981399 0" rpy="0 0 -1.570796327" />
<geometry>
<mesh filename="3MF/sts3215.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="wrist_pitch_link">
<inertial>
<origin xyz="-0.046864415 0.009984643 -0.000001415" rpy="0 0 0" />
<mass value="0.066078452" />
<inertia ixx="0.000026135" ixy="0" ixz="0" iyy="0.000051102" iyz="0" izz="0.000068521" />
</inertial>
<visual>
<origin xyz="0.0255 0.0091 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/servo_horn_yoke.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<visual>
<origin xyz="-0.0594 0.0255 0" rpy="0 0 1.570796327" />
<geometry>
<mesh filename="3MF/sts3215.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0.0255 0.0091 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/servo_horn_yoke.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
<collision>
<origin xyz="-0.0594 0.0255 0" rpy="0 0 1.570796327" />
<geometry>
<mesh filename="3MF/sts3215.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="wrist_roll_link" />
<link name="gripper_base_link">
<inertial>
<origin xyz="-0.00001263 0.015522068 -0.01137827" rpy="0 0 0" />
<mass value="0.158659843" />
<inertia ixx="0.000164543" ixy="0" ixz="0" iyy="0.000214657" iyz="0" izz="0.000288427" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_static.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_static.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="gripper_servo_link">
<inertial>
<origin xyz="0 0 -0.000668503" rpy="0 0 0" />
<mass value="0.002542102" />
<inertia ixx="0.000000064" ixy="0" ixz="0" iyy="0.000000064" iyz="0" izz="0.0000001" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_servo_gear.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_servo_gear.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="gripper_right_claw_link">
<inertial>
<origin xyz="0.045565996 -0.001484787 0.02203618" rpy="0 0 0" />
<mass value="0.044399027" />
<inertia ixx="0.00002472" ixy="0" ixz="0" iyy="0.000021229" iyz="0" izz="0.000011883" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_right_claw.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_right_claw.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<link name="gripper_left_claw_link">
<inertial>
<origin xyz="-0.045565996 0.001484787 0.02203618" rpy="0 0 0" />
<mass value="0.044399027" />
<inertia ixx="0.00002472" ixy="0" ixz="0" iyy="0.000021229" iyz="0" izz="0.000011883" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_left_claw.3mf" scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="3MF/gripper_left_claw.3mf" scale="0.001 0.001 0.001" />
</geometry>
</collision>
</link>
<!-- Joint frames use the horn-center line resolved from @cad[STEP/imports/sts3250#o1.4.f2,o1.5.f3]. -->
<joint name="base_footprint_to_base_link" type="fixed">
<parent link="base_footprint" />
<child link="base_link" />
<origin xyz="0.014635742 0 0" rpy="1.570796327 0 0" />
</joint>
<joint name="base_yaw" type="continuous">
<parent link="base_link" />
<child link="shoulder_yaw_link" />
<origin xyz="-0.0255 0.021475 0" rpy="0 0 0" />
<axis xyz="0 1 0" />
<limit effort="1.569064" velocity="4.000000" />
</joint>
<joint name="shoulder_pitch" type="revolute">
<parent link="shoulder_yaw_link" />
<child link="shoulder_pitch_link" />
<origin xyz="0.0005 0.059440199 0" rpy="0 0 -1.570796327" />
<axis xyz="0 1 0" />
<limit lower="-2.356194490" upper="2.356194490" effort="1.569064" velocity="4.000000" />
</joint>
<joint name="shoulder_roll" type="continuous">
<parent link="shoulder_pitch_link" />
<child link="shoulder_roll_link" />
<origin xyz="-0.0503 0 0" rpy="0 0 1.570796327" />
<axis xyz="0 1 0" />
<limit effort="1.569064" velocity="4.000000" />
</joint>
<joint name="elbow_pitch" type="revolute">
<parent link="shoulder_roll_link" />
<child link="elbow_pitch_link" />
<origin xyz="0.0005 0.212481399 0" rpy="0 0 -1.570796327" />
<axis xyz="0 1 0" />
<limit lower="-2.356194490" upper="2.356194490" effort="1.569064" velocity="4.000000" />
</joint>
<joint name="elbow_roll" type="continuous">
<parent link="elbow_pitch_link" />
<child link="elbow_roll_link" />
<origin xyz="0.000006888 0.000015489 0.050306891" rpy="1.570796327 0.00037679 1.571173117" />
<axis xyz="0 1 0" />
<limit effort="0.980665" velocity="4.000000" />
</joint>
<joint name="wrist_pitch" type="revolute">
<parent link="elbow_roll_link" />
<child link="wrist_pitch_link" />
<origin xyz="0.0005 0.162481399 0" rpy="0 0 -1.570796327" />
<axis xyz="0 1 0" />
<limit lower="-2.356194490" upper="2.356194490" effort="0.980665" velocity="4.000000" />
</joint>
<joint name="wrist_roll" type="continuous">
<parent link="wrist_pitch_link" />
<child link="wrist_roll_link" />
<origin xyz="-0.0503 0 0" rpy="0 0 1.570796327" />
<axis xyz="0 1 0" />
<limit effort="0.980665" velocity="4.000000" />
</joint>
<joint name="wrist_roll_to_gripper_base" type="fixed">
<parent link="wrist_roll_link" />
<child link="gripper_base_link" />
<origin xyz="-0.00003287 0.0674104 0.000002072" rpy="-1.570796185 -0.00037679 0" />
</joint>
<joint name="gripper_servo" type="revolute">
<parent link="gripper_base_link" />
<child link="gripper_servo_link" />
<origin xyz="0 0 0" rpy="0 0 0" />
<axis xyz="0 0 1" />
<limit lower="0" upper="5.846154862" effort="2.941995" velocity="4.615385" />
</joint>
<joint name="gripper_right_claw_slide" type="prismatic">
<parent link="gripper_base_link" />
<child link="gripper_right_claw_link" />
<origin xyz="0 0 0" rpy="0 0 0" />
<axis xyz="-1 0 0" />
<limit lower="0" upper="0.038000" effort="150" velocity="0.03" />
<mimic joint="gripper_servo" multiplier="0.006499998870" offset="0" />
</joint>
<joint name="gripper_left_claw_slide" type="prismatic">
<parent link="gripper_base_link" />
<child link="gripper_left_claw_link" />
<origin xyz="0 0 0" rpy="0 0 0" />
<axis xyz="1 0 0" />
<limit lower="0" upper="0.038000" effort="150" velocity="0.03" />
<mimic joint="gripper_servo" multiplier="0.006499998870" offset="0" />
</joint>
</robot>