Skydio X2
Skydio · licence Apache-2.0 · source: github.com/lvjonok/skydio_x2_description @ 9a6a057a0
What you are looking at is RobotDescription.from_urdf(original).to_urdf_string(): the reference implementation's re-serialisation of the original file, not the original file itself.
Loading the model…
drag to orbit · scroll to zoom · right-drag to pan
robot.urdf
<?xml version="1.0" encoding="UTF-8"?>
<!-- generated by bam_robot_descriptions (py backend), content 67530af00de8a9c4 -->
<robot name="skydio_x2">
<link name="world" />
<joint name="floating_base_joint" type="fixed">
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<parent link="world" />
<child link="x2" />
</joint>
<link name="x2">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.025" radius="0.06" />
</geometry>
</visual>
<collision>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.025" radius="0.06" />
</geometry>
</collision>
<inertial>
<origin xyz="0.0 0.0 0.1" rpy="0.0 0.0 0.0" />
<mass value="0.0" />
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0" />
</inertial>
</link>
<link name="rotor1">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.005" radius="0.13" />
</geometry>
</visual>
<inertial>
<origin xyz="0.0 0.0 0.0" />
<mass value="0.25" />
<inertia ixx="0.00085" ixy="0.0" ixz="0.0" iyy="0.00085" iyz="0.0" izz="0.00169" />
</inertial>
</link>
<link name="rotor2">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.005" radius="0.13" />
</geometry>
</visual>
<inertial>
<origin xyz="0.0 0.0 0.0" />
<mass value="0.25" />
<inertia ixx="0.00085" ixy="0.0" ixz="0.0" iyy="0.00085" iyz="0.0" izz="0.00169" />
</inertial>
</link>
<link name="rotor3">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.005" radius="0.13" />
</geometry>
</visual>
<inertial>
<origin xyz="0.0 0.0 0.0" />
<mass value="0.25" />
<inertia ixx="0.00085" ixy="0.0" ixz="0.0" iyy="0.00085" iyz="0.0" izz="0.00169" />
</inertial>
</link>
<link name="rotor4">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.005" radius="0.13" />
</geometry>
</visual>
<inertial>
<origin xyz="0.0 0.0 0.0" />
<mass value="0.25" />
<inertia ixx="0.00085" ixy="0.0" ixz="0.0" iyy="0.00085" iyz="0.0" izz="0.00169" />
</inertial>
</link>
<link name="center_of_mass_link">
<inertial>
<origin xyz="0.0 0.0 0.02" rpy="0.0 0.0 0.0" />
<mass value="0.325" />
<inertia ixx="0.00013" ixy="0.0" ixz="0.0" iyy="0.00169" iyz="0.0" izz="0.001768" />
</inertial>
</link>
<joint name="center_of_mass_joint" type="fixed">
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<parent link="x2" />
<child link="center_of_mass_link" />
</joint>
<joint name="prop0_joint" type="fixed">
<origin xyz="-0.14 -0.18 0.05" rpy="0.0 0.0 0.0" />
<parent link="x2" />
<child link="rotor1" />
</joint>
<joint name="prop1_joint" type="fixed">
<origin xyz="-0.14 0.18 0.05" rpy="0.0 0.0 0.0" />
<parent link="x2" />
<child link="rotor2" />
</joint>
<joint name="prop2_joint" type="fixed">
<origin xyz="0.14 0.18 0.08" rpy="0.0 0.0 0.0" />
<parent link="x2" />
<child link="rotor3" />
</joint>
<joint name="prop3_joint" type="fixed">
<origin xyz="0.14 -0.18 0.08" rpy="0.0 0.0 0.0" />
<parent link="x2" />
<child link="rotor4" />
</joint>
</robot>
robot.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- generated by bam_robot_descriptions (mjcf backend), content 67530af00de8a9c4 -->
<mujoco model="skydio_x2">
<compiler angle="radian" autolimits="true" meshdir="assets/" inertiafromgeom="false" balanceinertia="false" />
<worldbody>
<body name="x2">
<inertial pos="0.0 0.0 0.1" mass="0.0" diaginertia="0 0 0" />
<geom name="x2_vis_0" type="cylinder" size="0.06 0.0125" contype="0" conaffinity="0" group="2" />
<geom name="x2_col_0" type="cylinder" size="0.06 0.0125" group="3" />
<body name="center_of_mass_link">
<inertial pos="0.0 0.0 0.02" mass="0.325" fullinertia="0.00013 0.00169 0.001768 0.0 0.0 0.0" />
</body>
<body name="rotor1" pos="-0.14 -0.18 0.05">
<inertial pos="0.0 0.0 0.0" mass="0.25" fullinertia="0.00085 0.00085 0.00169 0.0 0.0 0.0" />
<geom name="rotor1_vis_0" type="cylinder" size="0.13 0.0025" contype="0" conaffinity="0" group="2" />
</body>
<body name="rotor2" pos="-0.14 0.18 0.05">
<inertial pos="0.0 0.0 0.0" mass="0.25" fullinertia="0.00085 0.00085 0.00169 0.0 0.0 0.0" />
<geom name="rotor2_vis_0" type="cylinder" size="0.13 0.0025" contype="0" conaffinity="0" group="2" />
</body>
<body name="rotor3" pos="0.14 0.18 0.08">
<inertial pos="0.0 0.0 0.0" mass="0.25" fullinertia="0.00085 0.00085 0.00169 0.0 0.0 0.0" />
<geom name="rotor3_vis_0" type="cylinder" size="0.13 0.0025" contype="0" conaffinity="0" group="2" />
</body>
<body name="rotor4" pos="0.14 -0.18 0.08">
<inertial pos="0.0 0.0 0.0" mass="0.25" fullinertia="0.00085 0.00085 0.00169 0.0 0.0 0.0" />
<geom name="rotor4_vis_0" type="cylinder" size="0.13 0.0025" contype="0" conaffinity="0" group="2" />
</body>
</body>
</worldbody>
<contact>
<exclude body1="x2" body2="center_of_mass_link" />
<exclude body1="x2" body2="rotor1" />
<exclude body1="x2" body2="rotor2" />
<exclude body1="x2" body2="rotor3" />
<exclude body1="x2" body2="rotor4" />
</contact>
</mujoco>
Import report
Counts
| Links | 7 |
|---|---|
| Joints | 6 |
| Moving joints | 0 |
| Visuals | 5 |
| Collisions | 1 |
| Materials | 0 |
Meshes
Formats: none (primitive shapes).
Asset size: 0.0 MB.
Dropped on import
| Tag | Count | Why |
|---|---|---|
@type | 1 | joint type floating not representable; imported as fixed |
mujoco | 1 | <mujoco> is not part of the URDF subset RobotDescription mirrors |
Forward-kinematics check
Forward kinematics of 7 link frames at 20 random joint positions within limits, original URDF against robot.urdf, computed by pinocchio 3.8.0. Worst difference: 0.
MuJoCo
robot.xml compiles in MuJoCo with its meshes (nq = 0).
Source & licence
| Repository | https://github.com/lvjonok/skydio_x2_description |
|---|---|
| Commit | 9a6a057a055babaf47119fac42c361fffc189128 |
| Original file | urdf/skydio_x2.urdf |
| Licence | Apache-2.0 · the upstream LICENSE file |
| Files | robot.urdf · robot.xml |
Meshes are copied verbatim from the repository at the pinned commit and keep their upstream licence.