Home

Awesome

Robot descriptions in Python

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 Version

conda install -c conda-forge robot_descriptions

From PyPI

PyPI version

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.

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:

<dl> <dt> <code>URDF_PATH</code> / <code>MJCF_PATH</code> </dt> <dd> Path to the main URDF/MJCF file of the robot description. </dd> <dt> <code>PACKAGE_PATH</code> </dt> <dd> Path to the root of the robot description package. </dd> <dt> <code>REPOSITORY_PATH</code> </dt> <dd> Path to the working directory of the git repository hosting the robot description. </dd> </dl>

Some robot descriptions include additional fields. For instance, the iiwa14_description exports URDF_PATH_POLYTOPE_COLLISION with more detailed collision meshes.

Examples

Loading a robot description:

Visualizing a robot description:

Command line tool

The command line tool can be used to visualize any of the robot descriptions below. For example:

robot_descriptions show solo_description

Descriptions

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

The DOF column denotes the number of actuated degrees of freedom.

Arms

NameRobotMakerDOFFormat
edo_descriptione.DOComau6URDF
fanuc_m710ic_descriptionM-710iCFanuc6URDF
fr3_mj_descriptionFR3Franka Robotics7MJCF
gen2_descriptionGen2Kinova6URDF
gen3_descriptionGen3Kinova6URDF
gen3_mj_descriptionGen3Kinova7MJCF
iiwa14_descriptioniiwa 14KUKA7URDF
iiwa14_mj_descriptioniiwa 14KUKA7MJCF
iiwa7_descriptioniiwa 7KUKA7URDF
panda_descriptionPandaFranka Robotics8URDF
panda_mj_descriptionPandaFranka Robotics8MJCF
poppy_ergo_jr_descriptionPoppy Ergo JrPoppy Project6URDF
sawyer_mj_descriptionSawyerRethink Robotics7MJCF
ur10_descriptionUR10Universal Robots6URDF
ur10e_mj_descriptionUR10eUniversal Robots6MJCF
ur3_descriptionUR3Universal Robots6URDF
ur5_descriptionUR5Universal Robots6URDF
ur5e_mj_descriptionUR5eUniversal Robots6MJCF
viper_mj_descriptionViperXTrossen Robotics8MJCF
widow_mj_descriptionWidowXTrossen Robotics8MJCF
xarm7_mj_descriptionxArm7UFACTORY7MJCF
z1_descriptionZ1UNITREE Robotics6URDF

Bipeds

NameRobotMakerDOFFormat
bolt_descriptionBoltODRI6URDF
cassie_descriptionCassieAgility Robotics16URDF
cassie_mj_descriptionCassieAgility Robotics16MJCF
rhea_descriptionRheaGabrael Levine7URDF
spryped_descriptionSprypedBenjamin Bokser8URDF
upkie_descriptionUpkieTast's Robots6URDF

Dual arms

NameRobotMakerDOFFormat
aloha_mj_descriptionAloha 2Trossen Robotics14MJCF
baxter_descriptionBaxterRethink Robotics15URDF
nextage_descriptionNEXTAGEKawada Robotics15URDF
poppy_torso_descriptionPoppy TorsoPoppy Project13URDF
yumi_descriptionYuMiABB16URDF

Drones

NameRobotMakerDOFFormat
cf2_descriptionCrazyflie 2.0Bitcraze0URDF
cf2_mj_descriptionCrazyflie 2.0Bitcraze6MJCF
skydio_x2_descriptionSkydio X2Skydio6URDF
skydio_x2_mj_descriptionSkydio X2Skydio6MJCF

Educational

NameRobotDOFFormat
double_pendulum_descriptionDouble Pendulum2URDF
finger_edu_descriptionFingerEdu3URDF
simple_humanoid_descriptionSimple Humanoid29URDF
trifinger_edu_descriptionTriFingerEdu9URDF

End effectors

NameRobotMakerDOFFormat
allegro_hand_descriptionAllegro HandWonik Robotics16URDF
allegro_hand_mj_descriptionAllegro HandWonik Robotics16MJCF
barrett_hand_descriptionBarrettHandBarrett Technology8URDF
leap_hand_v1LEAP Hand v1Carnegie Mellon University16URDF
leap_hand_mj_descriptionLEAP HandCarnegie Mellon University16MJCF
robotiq_2f85_descriptionRobotiq 2F-85Robotiq1URDF
robotiq_2f85_mj_descriptionRobotiq 2F-85Robotiq1MJCF
shadow_dexee_mj_descriptionShadow DEX-EEThe Shadow Robot Company12MJCF
shadow_hand_mj_descriptionShadow HandThe Shadow Robot Company24MJCF

Humanoids

NameRobotMakerDOFFormat
atlas_drc_descriptionAtlas DRC (v3)Boston Dynamics30URDF
atlas_v4_descriptionAtlas v4Boston Dynamics30URDF
draco3_descriptionDraco3Apptronik25URDF
ergocub_descriptionergoCubIIT57URDF
g1_descriptionG1UNITREE Robotics37URDF
g1_mj_descriptionG1UNITREE Robotics37MJCF
h1_descriptionH1UNITREE Robotics25URDF
h1_mj_descriptionH1UNITREE Robotics25MJCF
icub_descriptioniCubIIT32URDF
jaxon_descriptionJAXONJSK38URDF
jvrc_descriptionJVRC-1AIST34URDF
jvrc_mj_descriptionJVRC-1AIST34MJCF
op3_mj_descriptionOP3ROBOTIS20MJCF
r2_descriptionRobonaut 2NASA JSC Robotics56URDF
romeo_descriptionRomeoAldebaran Robotics37URDF
sigmaban_descriptionSigmaBanRhoban20URDF
talos_descriptionTALOSPAL Robotics32URDF
valkyrie_descriptionValkyrieNASA JSC Robotics59URDF

Mobile manipulators

NameRobotMakerDOFFormat
eve_r3_descriptionEve R3Halodi23URDF
fetch_descriptionFetchFetch Robotics14URDF
ginger_descriptionGingerPaaila Technology49URDF
pepper_descriptionPepperSoftBank Robotics17URDF
pr2_descriptionPR2Willow Garage32URDF
reachy_descriptionReachyPollen Robotics21URDF
stretch_descriptionStretch RE1Hello Robot14URDF
sretch_mj_descriptionStretch 2Hello Robot14MJCF
sretch_3_mj_descriptionStretch 3Hello Robot14MJCF
tiago_descriptionTIAGoPAL Robotics48URDF

Quadrupeds

NameRobotMakerDOFFormat
a1_descriptionA1UNITREE Robotics12URDF
a1_mj_descriptionA1UNITREE Robotics12MJCF
aliengo_descriptionAliengoUNITREE Robotics12URDF
aliengo_mj_descriptionAliengoUNITREE Robotics12MJCF
anymal_b_descriptionANYmal BANYbotics12URDF
anymal_b_mj_descriptionANYmal BANYbotics12MJCF
anymal_c_descriptionANYmal CANYbotics12URDF
anymal_c_mj_descriptionANYmal CANYbotics12MJCF
b1_descriptionB1UNITREE Robotics12URDF
b2_descriptionB2UNITREE Robotics12URDF
spot_mj_descriptionSpotBoston Dynamics12MJCF
go1_descriptionGo1UNITREE Robotics12URDF
go1_mj_descriptionGo1UNITREE Robotics12MJCF
go2_descriptionGo2UNITREE Robotics12URDF
go2_mj_descriptionGo2UNITREE Robotics12MJCF
hyq_descriptionHyQIIT12URDF
laikago_descriptionLaikagoUNITREE Robotics12MJCF, URDF
mini_cheetah_descriptionMini CheetahMIT12URDF
minitaur_descriptionMinitaurGhost Robotics16URDF
solo_descriptionSoloODRI12URDF

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},
  license = {Apache-2.0},
  url = {https://github.com/robot-descriptions/robot_descriptions.py},
  version = {1.12.0},
  year = {2024}
}

See also