Robot descriptions in Python

May 5, 2026 · View on GitHub

Build Coverage Conda Version PyPI version PyPI downloads Contributing

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 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:

SoftwareLoader
iDynTreerobot_descriptions.loaders.idyntree
MuJoCorobot_descriptions.loaders.mujoco
Pinocchiorobot_descriptions.loaders.pinocchio
PyBulletrobot_descriptions.loaders.pybullet
RoboMeshCatrobot_descriptions.loaders.robomeshcat
yourdfpyrobot_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 to manipulate robot descriptions directly from the command line:

uvx robot_descriptions pull iiwa14_description          # download the robot description to cache
uvx robot_descriptions show_in_meshcat go2_description  # display the robot 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:

URDF_PATH / MJCF_PATH
Path to the main URDF/MJCF file of the robot description.
PACKAGE_PATH
Path to the root of the robot description package.
REPOSITORY_PATH
Path to the working directory of the git repository hosting the robot description.

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:

Visualizing a robot description:

Descriptions

Available robot descriptions (gallery) are listed in the following categories:

The DOF column denotes the number of actuated degrees of freedom. Descriptions may appear in more than one category when tags overlap.

Arms

NameRobotMakerFormatLicense
arx_l5_mj_descriptionL5ARXMJCFBSD-3-Clause
edo_descriptione.DOComauURDFBSD-3-Clause
fanuc_m710ic_descriptionM-710iCFanucURDFBSD-3-Clause
fer_descriptionFERFranka RoboticsURDFApache-2.0
fr3_descriptionFR3Franka RoboticsURDFApache-2.0
fr3_mj_descriptionFR3Franka RoboticsMJCFApache-2.0
fr3_v2_1_descriptionFR3 v2.1Franka RoboticsURDFApache-2.0
fr3_v2_descriptionFR3 v2Franka RoboticsURDFApache-2.0
fr3_v2_mj_descriptionFR3 v2Franka RoboticsMJCFApache-2.0
gen2_descriptionGen2KinovaURDFBSD-3-Clause
gen3_descriptionGen3KinovaURDFBSD-3-Clause
gen3_lite_descriptionGen3 LiteKinovaURDFBSD-3-Clause
gen3_mj_descriptionGen3KinovaMJCFBSD-3-Clause
iiwa14_descriptioniiwa 14KUKAURDFBSD-3-Clause
iiwa14_mj_descriptioniiwa 14KUKAMJCFBSD-3-Clause
iiwa7_descriptioniiwa 7KUKAURDFMIT
j2n4s300_descriptionJaco2 j2n4s300KinovaURDFBSD-3-Clause
j2n6s200_descriptionJaco2 j2n6s200KinovaURDFBSD-3-Clause
j2n6s300_descriptionJaco2 j2n6s300KinovaURDFBSD-3-Clause
j2n7s300_descriptionJaco2 j2n7s300KinovaURDFBSD-3-Clause
j2s6s200_descriptionJaco2 j2s6s200KinovaURDFBSD-3-Clause
j2s6s300_descriptionJaco2 j2s6s300KinovaURDFBSD-3-Clause
j2s7s300_descriptionJaco2 j2s7s300KinovaURDFBSD-3-Clause
low_cost_robot_arm_mj_descriptionLow-cost robot armAlexander KochMJCFApache-2.0
omx_f_descriptionOMX-FROBOTISURDFApache-2.0
omx_l_descriptionOMX-LROBOTISURDFApache-2.0
omy_3m_descriptionOMY-3MROBOTISURDFApache-2.0
omy_f3m_descriptionOMY-F3MROBOTISURDFApache-2.0
omy_l100_descriptionOMY-L100ROBOTISURDFApache-2.0
open_manipulator_x_descriptionOpenMANIPULATOR-XROBOTISURDFApache-2.0
panda_descriptionPandaFranka RoboticsURDFApache-2.0
panda_mj_descriptionPandaFranka RoboticsMJCFApache-2.0
piper_descriptionPiPERAgileXURDFMIT
piper_mj_descriptionPiPERAgileXMJCFMIT
poppy_ergo_jr_descriptionPoppy Ergo JrPoppy ProjectURDFGPL-3.0
rizon4_descriptionRizon4Flexiv RoboticsURDFApache-2.0
rizon4_mj_descriptionRizon4Flexiv RoboticsMJCFApache-2.0
sawyer_mj_descriptionSawyerRethink RoboticsMJCFApache-2.0
so_arm100_descriptionSO-ARM100The Robot StudioURDFApache-2.0
so_arm100_mj_descriptionSO-ARM100The Robot StudioMJCFApache-2.0
so_arm101_descriptionSO-ARM101The Robot StudioURDFApache-2.0
so_arm101_mj_descriptionSO-ARM101The Robot StudioMJCFApache-2.0
ur10_descriptionUR10Universal RobotsURDFBSD-3-Clause
ur10_official_descriptionUR10 (official)Universal RobotsURDFBSD-3-Clause
ur10e_descriptionUR10eUniversal RobotsURDFBSD-3-Clause
ur10e_mj_descriptionUR10eUniversal RobotsMJCFBSD-3-Clause
ur12e_descriptionUR12eUniversal RobotsURDFBSD-3-Clause
ur15_descriptionUR15Universal RobotsURDFUniversal Robots Terms for Graphical Documentation ✖️
ur16e_descriptionUR16eUniversal RobotsURDFBSD-3-Clause
ur18_descriptionUR18Universal RobotsURDFUniversal Robots Terms for Graphical Documentation ✖️
ur20_descriptionUR20Universal RobotsURDFUniversal Robots Terms for Graphical Documentation ✖️
ur30_descriptionUR30Universal RobotsURDFUniversal Robots Terms for Graphical Documentation ✖️
ur3_descriptionUR3Universal RobotsURDFBSD-3-Clause
ur3_official_descriptionUR3 (official)Universal RobotsURDFBSD-3-Clause
ur3e_descriptionUR3eUniversal RobotsURDFBSD-3-Clause
ur5_descriptionUR5Universal RobotsURDFBSD-3-Clause
ur5_official_descriptionUR5 (official)Universal RobotsURDFBSD-3-Clause
ur5e_descriptionUR5eUniversal RobotsURDFBSD-3-Clause
ur5e_mj_descriptionUR5eUniversal RobotsMJCFBSD-3-Clause
ur7e_descriptionUR7eUniversal RobotsURDFBSD-3-Clause
ur8long_descriptionUR8 LongUniversal RobotsURDFUniversal Robots Terms for Graphical Documentation ✖️
viper_mj_descriptionViperXTrossen RoboticsMJCFBSD-3-Clause
widow_mj_descriptionWidowXTrossen RoboticsMJCFBSD-3-Clause
xarm6_descriptionxArm6UFACTORYURDFBSD-3-Clause
xarm7_descriptionxArm7UFACTORYURDFBSD-3-Clause
xarm7_mj_descriptionxArm7UFACTORYMJCFBSD-3-Clause
yam_descriptionYAMI2RT RoboticsURDFMIT
yam_mj_descriptionYAMI2RT RoboticsMJCFMIT
z1_descriptionZ1UNITREE RoboticsURDFBSD-3-Clause
z1_mj_descriptionZ1UNITREE RoboticsMJCFBSD-3-Clause

Bipeds

NameRobotMakerDOFFormatLicense
bolt_descriptionBoltODRI6URDFBSD-3-Clause
cassie_descriptionCassieAgility Robotics16URDFMIT
cassie_mj_descriptionCassieAgility Robotics16MJCFMIT
rhea_descriptionRheaGabrael Levine7URDFApache-2.0
spryped_descriptionSprypedBenjamin Bokser8URDFBSD
upkie_descriptionUpkieTast's Robots6URDFApache-2.0

Dual arms

NameRobotMakerDOFFormatLicense
aloha_mj_descriptionAloha 2Trossen Robotics14MJCFBSD-3-Clause
baxter_descriptionBaxterRethink Robotics15URDFBSD-3-Clause
nextage_descriptionNEXTAGEKawada Robotics15URDFBSD
openarm_v1_mj_descriptionOpenArmEnactic16MJCFApache-2.0
poppy_torso_descriptionPoppy TorsoPoppy Project13URDFGPL-3.0
pr2_descriptionPR2Willow GarageURDFBSD
yumi_descriptionYuMiABB16URDFBSD

Drones

NameRobotMakerDOFFormatLicense
cf2_descriptionCrazyflie 2.0Bitcraze0URDFMIT
cf2_mj_descriptionCrazyflie 2.0Bitcraze6MJCFMIT
skydio_x2_descriptionSkydio X2Skydio6URDFApache-2.0
skydio_x2_mj_descriptionSkydio X2Skydio6MJCFApache-2.0

Educational

NameRobotDOFFormatLicense
double_pendulum_descriptionDouble Pendulum2URDFBSD-3-Clause
dynamixel_2r_mj_descriptionDynamixel 2R2MJCFMIT
finger_edu_descriptionFingerEdu3URDFBSD-3-Clause
mujoco_humanoid_mj_descriptionMuJoCo Humanoid27MJCFApache-2.0
simple_humanoid_descriptionSimple Humanoid29URDFBSD-2-Clause
trifinger_edu_descriptionTriFingerEdu9URDFMIT

End effectors

NameRobotMakerFormatLicense
ability_hand_descriptionAbility HandPSYONIC, Inc.URDFMIT
ability_hand_mj_descriptionAbility HandPSYONIC, Inc.MJCFMIT
aero_hand_open_descriptionAero Hand OpenTetherIAURDFCC-BY-SA-4.0 ✖️
aero_hand_open_mj_descriptionAero Hand OpenTetherIAMJCFApache-2.0
allegro_hand_descriptionAllegro HandWonik RoboticsURDFBSD
allegro_hand_mj_descriptionAllegro HandWonik RoboticsMJCFBSD-2-Clause
barrett_hand_descriptionBarrettHandBarrett TechnologyURDFBSD
leap_hand_mj_descriptionLEAP HandCarnegie Mellon UniversityMJCFMIT
leap_hand_v1_descriptionLEAP Hand v1Carnegie Mellon UniversityURDFMIT
robotiq_2f85_descriptionRobotiq 2F-85RobotiqURDFBSD
robotiq_2f85_mj_descriptionRobotiq 2F-85RobotiqMJCFBSD-2-Clause
robotiq_2f85_v4_descriptionRobotiq 2F-85 v4RobotiqURDFBSD-2-Clause
robotiq_2f85_v4_mj_descriptionRobotiq 2F-85RobotiqMJCFBSD-2-Clause
shadow_dexee_mj_descriptionShadow DEX-EEThe Shadow Robot CompanyMJCFApache-2.0
shadow_hand_mj_descriptionShadow HandThe Shadow Robot CompanyMJCFApache-2.0
so_arm101_parallel_gripper_descriptionSO-ARM101 Parallel GripperRobonineURDFGPL-3.0

Humanoids

NameRobotMakerDOFFormatLicense
adam_lite_mj_descriptionAdam LitePNDBoticsMJCFMIT
apollo_mj_descriptionApolloApptronikMJCFApache-2.0
atlas_drc_descriptionAtlas DRC (v3)Boston DynamicsURDFBSD-3-Clause
atlas_v4_descriptionAtlas v4Boston DynamicsURDFMIT
berkeley_humanoid_descriptionBerkeley HumanoidHybrid RoboticsURDFBSD-3-Clause
booster_t1_descriptionBooster T1Booster RoboticsURDFApache-2.0
booster_t1_mj_descriptionBooster T1Booster RoboticsMJCFApache-2.0
draco3_descriptionDraco3ApptronikURDFBSD-2-Clause
elf2_descriptionElf2BXI RoboticsURDFApache-2.0
elf2_mj_descriptionElf2BXI RoboticsMJCFApache-2.0
ergocub_descriptionergoCubIITURDFBSD-3-Clause
g1_descriptionG1UNITREE RoboticsURDFBSD-3-Clause
g1_mj_descriptionG1UNITREE RoboticsMJCFBSD-3-Clause
gr1_descriptionGR-1FourierURDFGPL-3.0
h1_2_descriptionH1_2UNITREE RoboticsURDFBSD-3-Clause
h1_2_mj_descriptionH1_2UNITREE RoboticsMJCFBSD-3-Clause
h1_descriptionH1UNITREE RoboticsURDFBSD-3-Clause
h1_mj_descriptionH1UNITREE RoboticsMJCFBSD-3-Clause
icub_descriptioniCubIITURDFCC-BY-SA-4.0 ✖️
jaxon_descriptionJAXONJSKURDFCC-BY-SA-4.0 ✖️
jvrc_descriptionJVRC-1AISTURDFBSD-2-Clause
jvrc_mj_descriptionJVRC-1AISTMJCFBSD-2-Clause
mujoco_humanoid_mj_descriptionMuJoCo Humanoid27MJCFApache-2.0
n1_descriptionN1FourierURDFApache-2.0
n1_mj_descriptionN1FourierMJCFApache-2.0
op3_mj_descriptionOP3ROBOTISMJCFApache-2.0
r2_descriptionRobonaut 2NASA JSC RoboticsURDFNASA-1.3
romeo_descriptionRomeoAldebaran RoboticsURDFBSD
sigmaban_descriptionSigmaBanRhobanURDFMIT
simple_humanoid_descriptionSimple Humanoid29URDFBSD-2-Clause
talos_descriptionTALOSPAL RoboticsURDFLGPL-3.0
talos_mj_descriptionTALOSPAL RoboticsMJCFApache-2.0
toddlerbot_2xc_mj_descriptionToddlerBot 2XCStanford UniversityMJCFMIT
toddlerbot_2xm_mj_descriptionToddlerBot 2XMStanford UniversityMJCFMIT
toddlerbot_descriptionToddlerBotStanford UniversityURDFMIT
valkyrie_descriptionValkyrieNASA JSC RoboticsURDFNASA-1.3

Mobile manipulators

NameRobotMakerFormatLicense
bambot_descriptionBamBotTim QianURDFApache-2.0
eve_r3_descriptionEve R3HalodiURDFApache-2.0
fetch_descriptionFetchFetch RoboticsURDFMIT
ginger_descriptionGingerPaaila TechnologyURDFBSD
pepper_descriptionPepperSoftBank RoboticsURDFBSD-2-Clause
pr2_descriptionPR2Willow GarageURDFBSD
rby1_descriptionRBY1Rainbow RoboticsURDFMIT
reachy_descriptionReachyPollen RoboticsURDFApache-2.0
stretch_3_mj_descriptionStretch 3Hello RobotMJCFApache-2.0
stretch_descriptionStretch RE1Hello RobotURDFCC-BY-NC-SA-4.0 ✖️
stretch_mj_descriptionStretch 2Hello RobotMJCFClear BSD
stretch_se3_descriptionStretch SE3Hello RobotURDFClear BSD
tiago++_mj_descriptionTIAGo++PAL RoboticsMJCFApache-2.0
tiago_descriptionTIAGoPAL RoboticsURDFCC-BY-NC-ND-3.0 ✖️

Quadrupeds

NameRobotMakerDOFFormatLicense
a1_descriptionA1UNITREE Robotics12URDFBSD-3-Clause
a1_mj_descriptionA1UNITREE Robotics12MJCFBSD-3-Clause
aliengo_descriptionAliengoUNITREE Robotics12URDFBSD-3-Clause
aliengo_mj_descriptionAliengoUNITREE Robotics12MJCFBSD-3-Clause
anymal_b_descriptionANYmal BANYbotics12URDFBSD-3-Clause
anymal_b_mj_descriptionANYmal BANYbotics12MJCFBSD-3-Clause
anymal_c_descriptionANYmal CANYbotics12URDFBSD-3-Clause
anymal_c_mj_descriptionANYmal CANYbotics12MJCFBSD-3-Clause
anymal_d_descriptionANYmal DANYbotics12URDFBSD-3-Clause
b1_descriptionB1UNITREE Robotics12URDFBSD-3-Clause
b2_descriptionB2UNITREE Robotics12URDFBSD-3-Clause
go1_descriptionGo1UNITREE Robotics12URDFBSD-3-Clause
go1_mj_descriptionGo1UNITREE Robotics12MJCFBSD-3-Clause
go2_descriptionGo2UNITREE Robotics12URDFBSD-3-Clause
go2_mj_descriptionGo2UNITREE Robotics12MJCFBSD-3-Clause
hyq_descriptionHyQIIT12URDFApache-2.0
laikago_descriptionLaikagoUNITREE Robotics12URDFBSD-3-Clause
mini_cheetah_descriptionMini CheetahMIT12URDFBSD
minitaur_descriptionMinitaurGhost Robotics16URDFBSD-2-Clause
solo_descriptionSoloODRI12URDFBSD-3-Clause
spot_mj_descriptionSpotBoston Dynamics12MJCFBSD-3-Clause
wl_p311d_descriptionWL P311DLimX DynamicsURDFApache-2.0
wl_p311e_descriptionWL P311ELimX DynamicsURDFApache-2.0

Wheeled

NameRobotMakerDOFFormatLicense
rsk_descriptionRSK OmnidirectionalRobot Soccer KitURDFMIT
rsk_mj_descriptionRSK OmnidirectionalRobot Soccer KitMJCFMIT
upkie_descriptionUpkieTast's Robots6URDFApache-2.0
wl_p311d_descriptionWL P311DLimX DynamicsURDFApache-2.0
wl_p311e_descriptionWL P311ELimX DynamicsURDFApache-2.0

Contributing

New robot descriptions are welcome! Check out the guidelines 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 works, 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},
  license = {Apache-2.0},
  url = {https://github.com/robot-descriptions/robot_descriptions.py},
  version = {2.0.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