Files
RL-Sim-Framework/assets/rotary_cartpole/rotary_cartpole.urdf
2026-03-09 20:39:02 +01:00

107 lines
3.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<robot name="rotary_cartpole">
<!-- Fixed world frame -->
<link name="world"/>
<!-- Base: motor housing, fixed to world -->
<link name="base_link">
<inertial>
<origin xyz="-0.00011 0.00117 0.06055" rpy="0 0 0"/>
<mass value="0.921"/>
<inertia ixx="0.002385" iyy="0.002484" izz="0.000559"
ixy="0.0" iyz="-0.000149" ixz="6e-06"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="meshes/base_link.stl" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="meshes/base_link.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<joint name="base_joint" type="fixed">
<parent link="world"/>
<child link="base_link"/>
</joint>
<!-- Arm: horizontal rotating arm driven by motor.
Real mass ~10g (Fusion assumed dense material, exported 279g). -->
<link name="arm">
<inertial>
<origin xyz="0.00005 0.0065 0.00563" rpy="0 0 0"/>
<mass value="0.010"/>
<inertia ixx="2.70e-06" iyy="7.80e-07" izz="2.44e-06"
ixy="0.0" iyz="7.20e-08" ixz="0.0"/>
</inertial>
<visual>
<origin xyz="0.006947 -0.00395 -0.14796" rpy="0 0 0"/>
<geometry>
<mesh filename="meshes/arm_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0.006947 -0.00395 -0.14796" rpy="0 0 0"/>
<geometry>
<mesh filename="meshes/arm_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<!-- Motor joint: base → arm, rotates around vertical z-axis -->
<joint name="motor_joint" type="revolute">
<origin xyz="-0.006947 0.00395 0.14796" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="arm"/>
<axis xyz="0 0 1"/>
<limit lower="-1.5708" upper="1.5708" effort="10.0" velocity="200.0"/>
<dynamics damping="0.001"/>
</joint>
<!-- Pendulum: swings freely at the end of the arm.
Real mass: 5g pendulum + 10g weight at the tip (70mm from bearing) = 15g total.
(Fusion assumed dense material, exported 57g for the pendulum alone.) -->
<link name="pendulum">
<inertial>
<!-- Combined CoM: 5g rod (CoM ~35mm) + 10g tip weight at 70mm from pivot.
Tip at (0.07, -0.07, 0) → 45° diagonal in +X/-Y.
CoM = (5×0.035+10×0.07)/15 = 0.0583 along both +X and -Y.
Inertia tensor rotated 45° to match diagonal rod axis. -->
<origin xyz="0.1583 -0.0983 -0.0" rpy="0 0 0"/>
<mass value="0.015"/>
<inertia ixx="6.16e-06" iyy="6.16e-06" izz="1.23e-05"
ixy="6.10e-06" iyz="0.0" ixz="0.0"/>
</inertial>
<visual>
<origin xyz="0.006895 -0.023224 -0.162953" rpy="0 0 0"/>
<geometry>
<mesh filename="meshes/pendulum_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0.006895 -0.023224 -0.162953" rpy="0 0 0"/>
<geometry>
<mesh filename="meshes/pendulum_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<!-- Pendulum joint: arm → pendulum, bearing axis along Y.
Joint origin corrected from mesh analysis (Fusion2URDF was 180mm off).
rpy pitch +90° so qpos=0 = pendulum hanging down (gravity-stable). -->
<joint name="pendulum_joint" type="continuous">
<origin xyz="0.000052 0.019274 0.014993" rpy="0 1.5708 0"/>
<parent link="arm"/>
<child link="pendulum"/>
<axis xyz="0 -1 0"/>
<dynamics damping="0.0001"/>
</joint>
</robot>