Software
robot_descriptions.py
By Robot Descriptions, from github.com/robot-descriptions/robot_descriptions.py (opens in a new tab)
- Simulators
- Library
- Apache-2.0
A Python library that imports open-source robot descriptions as modules, downloading and caching their files on first use so they can be loaded into several robotics simulators and tools.
Facts
- GitHub stars
- 851read on 6 Nov 2026
- Last update
- 6 Nov 2026Newest commit on main
- Maintenance
- Activea commit in the last 90 days
- Difficulty
- Beginner
Checked on GitHub on 6 Nov 2026.
Licenses
- Code
- Apache-2.0 (opens in a new tab)
Read by Robotheca from LICENSE (opens in a new tab) (Apache-2.0) at commit 0cef1e2 (opens in a new tab), on 6 Nov 2026.
- Commercial use
- Yes
Overview
What it does: Robotheca's summary
- Loads robot descriptions into MuJoCo, Pinocchio, iDynTree, PyBullet, RoboMeshCat and yourdfpy through dedicated loader functions.
- Downloads and caches a description automatically the first time it is imported or loaded.
- Exposes paths such as URDF_PATH, MJCF_PATH and PACKAGE_PATH for each description submodule.
- Renders Xacro-based descriptions to a cached URDF when loading them.
- Provides command line commands to pull a description to cache and display it in a viewer.
- Includes a large catalogue of arms, bipeds, quadrupeds, humanoids and other robots, listed by category.
Written by Robotheca from the project's README (opens in a new tab) at commit 0160f8c, not by its creator.
The README
The creator's own README, copied as written: README.md by Robot Descriptions, at commit 0cef1e2, under Apache-2.0 (opens in a new tab). The original on GitHub (opens in a new tab).
Read the README here
Robot descriptions in Python
(opens in a new tab) (opens in a new tab) (opens in a new tab) (opens in a new tab) (opens in a new tab) (opens in a new tab)
Import open source robot descriptions as Python modules.
Importing a description for the first time automatically downloads and caches files for future imports. Most Awesome Robot Descriptions (opens in a new tab) are available. All of them load successfully in respectively MuJoCo (MJCF) or Pinocchio, iDynTree, PyBullet and yourdfpy (URDF).
Installation
From conda-forge
conda install -c conda-forge robot_descriptions
From PyPI
pip install robot_descriptions
Usage
The library provides load_robot_description functions that return an instance of a robot description directly usable in the corresponding software. For example:
from robot_descriptions.loaders.pinocchio import load_robot_description
robot = load_robot_description("upkie_description")
Loaders are implemented for the following robotics software:
| Software | Loader |
|---|---|
| iDynTree (opens in a new tab) | robot_descriptions.loaders.idyntree |
| MuJoCo (opens in a new tab) | robot_descriptions.loaders.mujoco |
| Pinocchio (opens in a new tab) | robot_descriptions.loaders.pinocchio |
| PyBullet (opens in a new tab) | robot_descriptions.loaders.pybullet |
| RoboMeshCat (opens in a new tab) | robot_descriptions.loaders.robomeshcat |
| yourdfpy (opens in a new tab) | robot_descriptions.loaders.yourdfpy |
Loading will automatically download the robot description if needed, and cache it to a local directory.
Command line
You can use uv (opens in a new tab) to manipulate robot descriptions directly from the command line:
# Download a robot description to cache
uvx robot_descriptions pull iiwa14_description
# Display a robot description
uvx --with mujoco-python-viewer robot_descriptions show_in_mujoco go2_mj_description
uvx --with meshcat --with pin robot_descriptions show_in_meshcat go2_description
uvx --with robomeshcat robot_descriptions show_in_meshcat go2_description
uvx --with pybullet robot_descriptions show_in_pybullet go2_description
uvx --with yourdfpy robot_descriptions show_in_yourdfpy go2_description
Try uvx robot_descriptions -h to see the list of available commands. Alternatively, once the package is installed from PyPI or conda-forge, you can call the robot_descriptions alias directly from the command line, or replace uvx by uv run, or python -m robot_descriptions (old school).
Import as submodule
You can also import a robot description directly as a submodule of robot_descriptions:
from robot_descriptions import my_robot_description
The import will automatically download the robot description if you don't have it already, and cache it to a local directory. The submodule then provides the following paths:
Some robot descriptions include additional fields. For instance, the iiwa14_description exports URDF_PATH_POLYTOPE_COLLISION with more detailed collision meshes.
Descriptions can also define XACRO_PATH (and optional XACRO_ARGS) instead
of a static URDF_PATH. In that case, robot_descriptions renders the Xacro
to a cached URDF transparently when loading the description.
Examples
Loading a robot description:
- iDynTree (opens in a new tab)
- MuJoCo (opens in a new tab)
- Pinocchio (opens in a new tab)
- PyBullet (opens in a new tab)
- RoboMeshCat (opens in a new tab)
- yourdfpy (opens in a new tab)
Visualizing a robot description:
- MeshCat (opens in a new tab)
- MuJoCo (opens in a new tab)
- PyBullet (opens in a new tab)
- RoboMeshCat (opens in a new tab)
- yourdfpy (opens in a new tab)
Descriptions
Available robot descriptions (gallery (opens in a new tab)) are listed in the following categories:
- Arms
- Bipeds
- Dual arms
- Drones
- Educational
- End effectors
- Humanoids
- Mobile manipulators
- Quadrupeds
- Wheeled
The DOF column denotes the number of actuated degrees of freedom. Descriptions may appear in more than one category when tags overlap.
Arms
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
arx_l5_mj_description | L5 | ARX | MJCF | BSD-3-Clause (opens in a new tab) | |
big_yam_description | Big YAM | I2RT Robotics | URDF | MIT (opens in a new tab) | |
big_yam_mj_description | Big YAM | I2RT Robotics | MJCF | MIT (opens in a new tab) | |
edo_description | e.DO | Comau | URDF | BSD-3-Clause (opens in a new tab) | |
enlight_description | Enlight-L | Flexiv Robotics | 7 | URDF | Apache-2.0 (opens in a new tab) |
fanuc_m710ic_description | M-710iC | Fanuc | URDF | BSD-3-Clause (opens in a new tab) | |
fer_description | FER | Franka Robotics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
fr3_description | FR3 | Franka Robotics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
fr3_mj_description | FR3 | Franka Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
fr3_v2_1_description | FR3 v2.1 | Franka Robotics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
fr3_v2_description | FR3 v2 | Franka Robotics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
fr3_v2_mj_description | FR3 v2 | Franka Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
gen2_description | Gen2 | Kinova | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
gen3_description | Gen3 | Kinova | URDF | BSD-3-Clause (opens in a new tab) | |
gen3_lite_description | Gen3 Lite | Kinova | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
gen3_mj_description | Gen3 | Kinova | MJCF | BSD-3-Clause (opens in a new tab) | |
iiwa14_description | iiwa 14 | KUKA | URDF | BSD-3-Clause (opens in a new tab) | |
iiwa14_mj_description | iiwa 14 | KUKA | MJCF | BSD-3-Clause (opens in a new tab) | |
iiwa7_description | iiwa 7 | KUKA | URDF | MIT (opens in a new tab) | |
iiwa7_epfl_description | iiwa 7 | KUKA | URDF | GPL-3.0 (opens in a new tab) | |
j2n4s300_description | Jaco2 j2n4s300 | Kinova | URDF | BSD-3-Clause (opens in a new tab) | |
j2n6s200_description | Jaco2 j2n6s200 | Kinova | URDF | BSD-3-Clause (opens in a new tab) | |
j2n6s300_description | Jaco2 j2n6s300 | Kinova | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
j2n7s300_description | Jaco2 j2n7s300 | Kinova | URDF | BSD-3-Clause (opens in a new tab) | |
j2s6s200_description | Jaco2 j2s6s200 | Kinova | URDF | BSD-3-Clause (opens in a new tab) | |
j2s6s300_description | Jaco2 j2s6s300 | Kinova | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
j2s7s300_description | Jaco2 j2s7s300 | Kinova | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
low_cost_robot_arm_mj_description | Low-cost robot arm | Alexander Koch | MJCF | Apache-2.0 (opens in a new tab) | |
omx_f_description | OMX-F | ROBOTIS | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
omx_l_description | OMX-L | ROBOTIS | URDF | Apache-2.0 (opens in a new tab) | |
omy_3m_description | OMY-3M | ROBOTIS | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
omy_f3m_description | OMY-F3M | ROBOTIS | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
omy_l100_description | OMY-L100 | ROBOTIS | URDF | Apache-2.0 (opens in a new tab) | |
open_manipulator_x_description | OpenMANIPULATOR-X | ROBOTIS | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
panda_description | Panda | Franka Robotics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
panda_mj_description | Panda | Franka Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
piper_description | PiPER | AgileX | URDF | MIT (opens in a new tab) | |
piper_mj_description | PiPER | AgileX | MJCF | MIT (opens in a new tab) | |
poppy_ergo_jr_description | Poppy Ergo Jr | Poppy Project | URDF | GPL-3.0 (opens in a new tab) | |
rizon10_description | Rizon10 | Flexiv Robotics | 7 | URDF | Apache-2.0 (opens in a new tab) |
rizon4_description | Rizon4 | Flexiv Robotics | URDF | Apache-2.0 (opens in a new tab) | |
rizon4_mj_description | Rizon4 | Flexiv Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
sawyer_mj_description | Sawyer | Rethink Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
so_arm100_description | SO-ARM100 | The Robot Studio | URDF | Apache-2.0 (opens in a new tab) | |
so_arm100_mj_description | SO-ARM100 | The Robot Studio | MJCF | Apache-2.0 (opens in a new tab) | |
so_arm101_description | SO-ARM101 | The Robot Studio | URDF | Apache-2.0 (opens in a new tab) | |
so_arm101_mj_description | SO-ARM101 | The Robot Studio | MJCF | Apache-2.0 (opens in a new tab) | |
so_arm102_description | SO-ARM102 | Robonine | 6 | URDF | CC-BY-4.0 (opens in a new tab) |
ur10_official_description | UR10 (official) | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur10e_description | UR10e | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur10e_mj_description | UR10e | Universal Robots | MJCF | BSD-3-Clause (opens in a new tab) | |
ur12e_description | UR12e | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur15_description | UR15 | Universal Robots | URDF | Universal Robots Terms for Graphical Documentation ✖️ (opens in a new tab) | |
ur16e_description | UR16e | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur18_description | UR18 | Universal Robots | URDF | Universal Robots Terms for Graphical Documentation ✖️ (opens in a new tab) | |
ur20_description | UR20 | Universal Robots | URDF | Universal Robots Terms for Graphical Documentation ✖️ (opens in a new tab) | |
ur30_description | UR30 | Universal Robots | URDF | Universal Robots Terms for Graphical Documentation ✖️ (opens in a new tab) | |
ur3_official_description | UR3 (official) | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur3e_description | UR3e | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur5_official_description | UR5 (official) | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur5e_description | UR5e | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur5e_mj_description | UR5e | Universal Robots | MJCF | BSD-3-Clause (opens in a new tab) | |
ur7e_description | UR7e | Universal Robots | URDF | BSD-3-Clause (opens in a new tab) | |
ur8long_description | UR8 Long | Universal Robots | URDF | Universal Robots Terms for Graphical Documentation ✖️ (opens in a new tab) | |
viper_mj_description | ViperX | Trossen Robotics | MJCF | BSD-3-Clause (opens in a new tab) | |
widow_mj_description | WidowX | Trossen Robotics | MJCF | BSD-3-Clause (opens in a new tab) | |
xarm6_description | xArm6 | UFACTORY | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
xarm7_description | xArm7 | UFACTORY | URDF, SRDF | BSD-3-Clause (opens in a new tab) | |
xarm7_mj_description | xArm7 | UFACTORY | MJCF | BSD-3-Clause (opens in a new tab) | |
yam_description | YAM | I2RT Robotics | URDF | MIT (opens in a new tab) | |
yam_mj_description | YAM | I2RT Robotics | MJCF | MIT (opens in a new tab) | |
yam_pro_description | YAM Pro | I2RT Robotics | URDF | MIT (opens in a new tab) | |
yam_pro_mj_description | YAM Pro | I2RT Robotics | MJCF | MIT (opens in a new tab) | |
yam_ultra_v1_description | YAM Ultra v1 | I2RT Robotics | URDF | MIT (opens in a new tab) | |
yam_ultra_v1_mj_description | YAM Ultra v1 | I2RT Robotics | MJCF | MIT (opens in a new tab) | |
yam_ultra_v2_description | YAM Ultra v2 | I2RT Robotics | URDF | MIT (opens in a new tab) | |
yam_ultra_v2_mj_description | YAM Ultra v2 | I2RT Robotics | MJCF | MIT (opens in a new tab) | |
z1_description | Z1 | UNITREE Robotics | URDF | BSD-3-Clause (opens in a new tab) | |
z1_mj_description | Z1 | UNITREE Robotics | MJCF | BSD-3-Clause (opens in a new tab) |
Bipeds
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
bolt_description | Bolt | ODRI | 6 | URDF, SRDF | BSD-3-Clause (opens in a new tab) |
cassie_description | Cassie | Agility Robotics | 16 | URDF | MIT (opens in a new tab) |
cassie_mj_description | Cassie | Agility Robotics | 16 | MJCF | MIT (opens in a new tab) |
cookie_description | Cookie | Upkie Project | 6 | URDF | Apache-2.0 (opens in a new tab) |
rhea_description | Rhea | Gabrael Levine | 7 | URDF | Apache-2.0 (opens in a new tab) |
spryped_description | Spryped | Benjamin Bokser | 8 | URDF | BSD (opens in a new tab) |
tron1_pf_tron1a_mj_description | TRON1 PF TRON1A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron1_pf_tron1b_mj_description | TRON1 PF TRON1B | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron1_sf_tron1a_mj_description | TRON1 SF TRON1A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron1_sf_tron1b_mj_description | TRON1 SF TRON1B | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron1_wf_tron1a_mj_description | TRON1 WF TRON1A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron1_wf_tron1b_mj_description | TRON1 WF TRON1B | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
upkie_description | Upkie | Upkie Project | 6 | URDF | Apache-2.0 (opens in a new tab) |
Dual arms
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
aloha_mj_description | Aloha 2 | Trossen Robotics | 14 | MJCF | BSD-3-Clause (opens in a new tab) |
baxter_description | Baxter | Rethink Robotics | 15 | URDF | BSD-3-Clause (opens in a new tab) |
mico_description | MICO-Core | Flexiv Robotics | 14 | URDF | Apache-2.0 (opens in a new tab) |
nextage_description | NEXTAGE | Kawada Robotics | 15 | URDF, SRDF | BSD (opens in a new tab) |
openarm_v1_description | OpenArm v1 | Enactic | 18 | URDF | Apache-2.0 (opens in a new tab) |
openarm_v1_mj_description | OpenArm | Enactic | 16 | MJCF | Apache-2.0 (opens in a new tab) |
openarm_v2_description | OpenArm v2 | Enactic | 18 | URDF | Apache-2.0 (opens in a new tab) |
openarm_v2_mj_description | OpenArm | Enactic | 16 | MJCF | Apache-2.0 (opens in a new tab) |
poppy_torso_description | Poppy Torso | Poppy Project | 13 | URDF | GPL-3.0 (opens in a new tab) |
pr2_description | PR2 | Willow Garage | URDF | BSD (opens in a new tab) | |
r1_pro_description | R1 Pro | Galaxea AI | 22 | URDF, SRDF | Apache-2.0 (opens in a new tab) |
yumi_description | YuMi | ABB | 16 | URDF | BSD (opens in a new tab) |
Drones
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
cf2_description | Crazyflie 2.0 | Bitcraze | 0 | URDF | MIT (opens in a new tab) |
cf2_mj_description | Crazyflie 2.0 | Bitcraze | 6 | MJCF | MIT (opens in a new tab) |
skydio_x2_description | Skydio X2 | Skydio | 6 | URDF | Apache-2.0 (opens in a new tab) |
skydio_x2_mj_description | Skydio X2 | Skydio | 6 | MJCF | Apache-2.0 (opens in a new tab) |
Educational
| Name | Robot | DOF | Format | License |
|---|---|---|---|---|
double_pendulum_description | Double Pendulum | 2 | URDF | BSD-3-Clause (opens in a new tab) |
dynamixel_2r_mj_description | Dynamixel 2R | 2 | MJCF | MIT (opens in a new tab) |
finger_edu_description | FingerEdu | 3 | URDF, SRDF | BSD-3-Clause (opens in a new tab) |
mujoco_humanoid_mj_description | MuJoCo Humanoid | 27 | MJCF | Apache-2.0 (opens in a new tab) |
simple_humanoid_description | Simple Humanoid | 29 | URDF, SRDF | BSD-2-Clause (opens in a new tab) |
trifinger_edu_description | TriFingerEdu | 9 | URDF | MIT (opens in a new tab) |
End effectors
| Name | Robot | Maker | Format | License |
|---|---|---|---|---|
ability_hand_description | Ability Hand | PSYONIC, Inc. | URDF | MIT (opens in a new tab) |
ability_hand_mj_description | Ability Hand | PSYONIC, Inc. | MJCF | MIT (opens in a new tab) |
aero_hand_open_description | Aero Hand Open | TetherIA | URDF | CC-BY-SA-4.0 ✖️ (opens in a new tab) |
aero_hand_open_mj_description | Aero Hand Open | TetherIA | MJCF | Apache-2.0 (opens in a new tab) |
allegro_hand_description | Allegro Hand | Wonik Robotics | URDF | BSD (opens in a new tab) |
allegro_hand_mj_description | Allegro Hand | Wonik Robotics | MJCF | BSD-2-Clause (opens in a new tab) |
barrett_hand_description | BarrettHand | Barrett Technology | URDF | BSD (opens in a new tab) |
leap_hand_mj_description | LEAP Hand | Carnegie Mellon University | MJCF | MIT (opens in a new tab) |
leap_hand_v1_description | LEAP Hand v1 | Carnegie Mellon University | URDF | MIT (opens in a new tab) |
robotiq_2f85_description | Robotiq 2F-85 | Robotiq | URDF | BSD (opens in a new tab) |
robotiq_2f85_mj_description | Robotiq 2F-85 | Robotiq | MJCF | BSD-2-Clause (opens in a new tab) |
robotiq_2f85_v4_description | Robotiq 2F-85 v4 | Robotiq | URDF | BSD-2-Clause (opens in a new tab) |
robotiq_2f85_v4_mj_description | Robotiq 2F-85 | Robotiq | MJCF | BSD-2-Clause (opens in a new tab) |
shadow_dexee_mj_description | Shadow DEX-EE | The Shadow Robot Company | MJCF | Apache-2.0 (opens in a new tab) |
shadow_hand_mj_description | Shadow Hand | The Shadow Robot Company | MJCF | Apache-2.0 (opens in a new tab) |
so_arm101_parallel_gripper_description | SO-ARM101 Parallel Gripper | Robonine | URDF | GPL-3.0 (opens in a new tab) |
Humanoids
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
adam_lite_mj_description | Adam Lite | PNDBotics | MJCF | MIT (opens in a new tab) | |
apollo_mj_description | Apollo | Apptronik | MJCF | Apache-2.0 (opens in a new tab) | |
atlas_drc_description | Atlas DRC (v3) | Boston Dynamics | URDF | BSD-3-Clause (opens in a new tab) | |
atlas_v4_description | Atlas v4 | Boston Dynamics | URDF | MIT (opens in a new tab) | |
berkeley_humanoid_description | Berkeley Humanoid | Hybrid Robotics | URDF | BSD-3-Clause (opens in a new tab) | |
booster_t1_description | Booster T1 | Booster Robotics | URDF | Apache-2.0 (opens in a new tab) | |
booster_t1_mj_description | Booster T1 | Booster Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
draco3_description | Draco3 | Apptronik | URDF | BSD-2-Clause (opens in a new tab) | |
elf2_description | Elf2 | BXI Robotics | URDF | Apache-2.0 (opens in a new tab) | |
elf2_mj_description | Elf2 | BXI Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
ergocub_description | ergoCub | IIT | URDF | BSD-3-Clause (opens in a new tab) | |
g1_description | G1 | UNITREE Robotics | URDF | BSD-3-Clause (opens in a new tab) | |
g1_mj_description | G1 | UNITREE Robotics | MJCF | BSD-3-Clause (opens in a new tab) | |
gene01_description | GENE.01 | Generative Bionics | URDF | CC-BY-NC-4.0 ✖️ (opens in a new tab) | |
gr1_description | GR-1 | Fourier | URDF | GPL-3.0 (opens in a new tab) | |
h1_2_description | H1_2 | UNITREE Robotics | URDF | BSD-3-Clause (opens in a new tab) | |
h1_2_mj_description | H1_2 | UNITREE Robotics | MJCF | BSD-3-Clause (opens in a new tab) | |
h1_description | H1 | UNITREE Robotics | URDF | BSD-3-Clause (opens in a new tab) | |
h1_mj_description | H1 | UNITREE Robotics | MJCF | BSD-3-Clause (opens in a new tab) | |
icub_description | iCub | IIT | URDF | CC-BY-SA-4.0 ✖️ (opens in a new tab) | |
jaxon_description | JAXON | JSK | URDF | CC-BY-SA-4.0 ✖️ (opens in a new tab) | |
jvrc_description | JVRC-1 | AIST | URDF | BSD-2-Clause (opens in a new tab) | |
jvrc_mj_description | JVRC-1 | AIST | MJCF | BSD-2-Clause (opens in a new tab) | |
luna_description | Luna | LimX Dynamics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
luna_mj_description | Luna | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
microban_mj_description | Microban | Rhoban | 19 | MJCF | GPL-3.0 (opens in a new tab) |
mujoco_humanoid_mj_description | MuJoCo Humanoid | 27 | MJCF | Apache-2.0 (opens in a new tab) | |
n1_description | N1 | Fourier | URDF | Apache-2.0 (opens in a new tab) | |
n1_mj_description | N1 | Fourier | MJCF | Apache-2.0 (opens in a new tab) | |
oli_description | Oli | LimX Dynamics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
oli_mj_description | Oli | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
op3_mj_description | OP3 | ROBOTIS | MJCF | Apache-2.0 (opens in a new tab) | |
r2_description | Robonaut 2 | NASA JSC Robotics | URDF | NASA-1.3 (opens in a new tab) | |
romeo_description | Romeo | Aldebaran Robotics | URDF | BSD (opens in a new tab) | |
sigmaban_description | SigmaBan | Rhoban | URDF | MIT (opens in a new tab) | |
simple_humanoid_description | Simple Humanoid | 29 | URDF, SRDF | BSD-2-Clause (opens in a new tab) | |
talos_description | TALOS | PAL Robotics | URDF, SRDF | LGPL-3.0 (opens in a new tab) | |
talos_mj_description | TALOS | PAL Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
toddlerbot_2xc_mj_description | ToddlerBot 2XC | Stanford University | MJCF | MIT (opens in a new tab) | |
toddlerbot_2xm_mj_description | ToddlerBot 2XM | Stanford University | MJCF | MIT (opens in a new tab) | |
toddlerbot_description | ToddlerBot | Stanford University | URDF | MIT (opens in a new tab) | |
tron2_dach_tron2a_mj_description | TRON2 DACH TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron2_sf_tron2a_mj_description | TRON2 SF TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron2_sfyg_tron2a_mj_description | TRON2 SFYG TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron2_wf_tron2a_mj_description | TRON2 WF TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron2_wfyg_tron2a_mj_description | TRON2 WFYG TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
valkyrie_description | Valkyrie | NASA JSC Robotics | URDF | NASA-1.3 (opens in a new tab) |
Mobile manipulators
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
bambot_description | BamBot | Tim Qian | URDF | Apache-2.0 (opens in a new tab) | |
eve_r3_description | Eve R3 | Halodi | URDF | Apache-2.0 (opens in a new tab) | |
fetch_description | Fetch | Fetch Robotics | URDF | MIT (opens in a new tab) | |
ginger_description | Ginger | Paaila Technology | URDF | BSD (opens in a new tab) | |
hsrb_description | HSR-B | Toyota Motor Corporation | URDF | BSD-3-Clause-Clear (opens in a new tab) | |
hsrc_description | HSR-C | Toyota Motor Corporation | URDF | BSD-3-Clause-Clear (opens in a new tab) | |
pepper_description | Pepper | SoftBank Robotics | URDF | BSD-2-Clause (opens in a new tab) | |
pr2_description | PR2 | Willow Garage | URDF | BSD (opens in a new tab) | |
r1_pro_description | R1 Pro | Galaxea AI | 22 | URDF, SRDF | Apache-2.0 (opens in a new tab) |
rby1_description | RBY1 | Rainbow Robotics | URDF | MIT (opens in a new tab) | |
rby1_mj_description | RBY1 | Rainbow Robotics | MJCF | MIT (opens in a new tab) | |
reachy_description | Reachy | Pollen Robotics | URDF | Apache-2.0 (opens in a new tab) | |
stretch_3_mj_description | Stretch 3 | Hello Robot | MJCF | Apache-2.0 (opens in a new tab) | |
stretch_4_description | Stretch 4 | Hello Robot | URDF | BSD-3-Clause-Clear (opens in a new tab) | |
stretch_description | Stretch RE1 | Hello Robot | URDF | CC-BY-NC-SA-4.0 ✖️ (opens in a new tab) | |
stretch_mj_description | Stretch 2 | Hello Robot | MJCF | Clear BSD (opens in a new tab) | |
stretch_se3_description | Stretch SE3 | Hello Robot | URDF | Clear BSD (opens in a new tab) | |
tiago++_mj_description | TIAGo++ | PAL Robotics | MJCF | Apache-2.0 (opens in a new tab) | |
tiago_description | TIAGo | PAL Robotics | URDF | CC-BY-NC-ND-3.0 ✖️ (opens in a new tab) | |
tiago_official_description | TIAGo (official) | PAL Robotics | URDF | Apache-2.0 (opens in a new tab) |
Quadrupeds
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
a1_description | A1 | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
a1_mj_description | A1 | UNITREE Robotics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
aliengo_description | Aliengo | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
aliengo_mj_description | Aliengo | UNITREE Robotics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
anymal_b_description | ANYmal B | ANYbotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
anymal_b_mj_description | ANYmal B | ANYbotics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
anymal_c_description | ANYmal C | ANYbotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
anymal_c_mj_description | ANYmal C | ANYbotics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
anymal_d_description | ANYmal D | ANYbotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
b1_description | B1 | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
b2_description | B2 | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
go1_description | Go1 | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
go1_mj_description | Go1 | UNITREE Robotics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
go2_description | Go2 | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
go2_mj_description | Go2 | UNITREE Robotics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
hyq_description | HyQ | IIT | 12 | URDF, SRDF | Apache-2.0 (opens in a new tab) |
laikago_description | Laikago | UNITREE Robotics | 12 | URDF | BSD-3-Clause (opens in a new tab) |
mini_cheetah_description | Mini Cheetah | MIT | 12 | URDF | BSD (opens in a new tab) |
minitaur_description | Minitaur | Ghost Robotics | 16 | URDF | BSD-2-Clause (opens in a new tab) |
solo_description | Solo | ODRI | 12 | URDF, SRDF | BSD-3-Clause (opens in a new tab) |
spot_mj_description | Spot | Boston Dynamics | 12 | MJCF | BSD-3-Clause (opens in a new tab) |
wl_p311d_description | WL P311D | LimX Dynamics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
wl_p311e_description | WL P311E | LimX Dynamics | URDF, SRDF | Apache-2.0 (opens in a new tab) |
Wheeled
| Name | Robot | Maker | DOF | Format | License |
|---|---|---|---|---|---|
cookie_description | Cookie | Upkie Project | 6 | URDF | Apache-2.0 (opens in a new tab) |
rsk_description | RSK Omnidirectional | Robot Soccer Kit | URDF | MIT (opens in a new tab) | |
rsk_mj_description | RSK Omnidirectional | Robot Soccer Kit | MJCF | MIT (opens in a new tab) | |
tron1_wf_tron1a_mj_description | TRON1 WF TRON1A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron1_wf_tron1b_mj_description | TRON1 WF TRON1B | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron2_wf_tron2a_mj_description | TRON2 WF TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
tron2_wfyg_tron2a_mj_description | TRON2 WFYG TRON2A | LimX Dynamics | MJCF | Apache-2.0 (opens in a new tab) | |
upkie_description | Upkie | Upkie Project | 6 | URDF | Apache-2.0 (opens in a new tab) |
wl_p311d_description | WL P311D | LimX Dynamics | URDF, SRDF | Apache-2.0 (opens in a new tab) | |
wl_p311e_description | WL P311E | LimX Dynamics | URDF, SRDF | Apache-2.0 (opens in a new tab) |
Contributing
New robot descriptions are welcome! Check out the guidelines (opens in a new tab) then open a PR.
Thanks
Thanks to the maintainers of all the git repositories that made these robot descriptions available.
Citation
If you use this project in your work, please cite as follows:
@software{robot_descriptions_py,
title = {{robot_descriptions.py: Robot descriptions in Python}},
author = {Caron, Stéphane and Romualdi, Giulio and Kozlov, Lev and Ordoñez Apraez, Daniel Felipe and Tadashi Kussaba, Hugo and Bang, Seung Hyeon and Zakka, Kevin and Schramm, Fabian and Uru\c{c}, Jafar and Traversaro, Silvio and Zamora, Jonathan and Castro, Sebastian and Tao, Haixuan Xavier and Yu, Justin and Jallet, Wilson and Zhang, Yutong and Walker, Nick and Bragin, Nikita and Wie, Woojin and Skuric, Antun},
license = {Apache-2.0},
url = {https://github.com/robot-descriptions/robot_descriptions.py},
version = {3.3.0},
year = {2026}
}
Don't forget to add yourself to the BibTeX above and to CITATION.cff if you contribute to this repository.
See also
- Awesome Robot Descriptions (opens in a new tab): curated list of robot descriptions in URDF, Xacro or MJCF formats.
- drake_models (opens in a new tab): collection of URDF and SDF descriptions curated for the Drake framework.
- MuJoCo Menagerie (opens in a new tab): collection of MJCF robot descriptions curated for the MuJoCo physics engine.
- robot_descriptions.cpp (opens in a new tab): package to use
robot_descriptions.pyin C++.
Files and versions
- Repository on GitHubgithub.com/robot-descriptions/robot_descriptions.py (opens in a new tab)
- The version Robotheca read0cef1e2 (opens in a new tab)
- Latest releasev3.3.0 (12 Oct 2026)
Robotheca read the repository at two versions: the summary at 0160f8c and the facts and the README at 0cef1e2 (read on 6 Nov 2026).
Robotheca never hosts the code: each link goes to the creator's own page.
Use it
How to install it, in the creator's words: The project's README (opens in a new tab)
Robotheca doesn't review code. Read it before running it.
Robotheca lists software as a reference: nothing is hosted or run here, and every fact links to where it was read.