#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: Apache-2.0
# Copyright 2022 Stéphane Caron

"""List of all robot descriptions and their metadata."""

from dataclasses import dataclass
from enum import IntEnum
from typing import AbstractSet, Dict


class Format(IntEnum):
    """Format of a robot description."""

    URDF = 0
    MJCF = 1


@dataclass(frozen=True)
class Description:
    """Metadata for a robot description."""

    formats: AbstractSet[Format]
    tags: AbstractSet[str]
    robot: str
    maker: str | None = None
    dof: int | None = None
    repository: str | None = None
    license_spdx: str | None = None
    license_file: str | None = None

    def __post_init__(self) -> None:
        """Freeze mutable set literals passed to the constructor."""
        object.__setattr__(self, "formats", frozenset(self.formats))
        object.__setattr__(self, "tags", frozenset(self.tags))

    @property
    def has_mjcf(self) -> bool:
        """Check if description provides MJCF."""
        return Format.MJCF in self.formats

    @property
    def has_urdf(self) -> bool:
        """Check if description provides URDF."""
        return Format.URDF in self.formats


DESCRIPTIONS: Dict[str, Description] = {
    "a1_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="A1",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "a1_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="A1",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_mujoco",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ability_hand_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="Ability Hand",
        maker="PSYONIC, Inc.",
        repository="ability-hand-api",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "ability_hand_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Ability Hand",
        maker="PSYONIC, Inc.",
        repository="ability-hand-api",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "adam_lite_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="Adam Lite",
        maker="PNDBotics",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="pndbotics_adam_lite/LICENSE",
    ),
    "aero_hand_open_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="Aero Hand Open",
        maker="TetherIA",
        repository="aero-hand-open",
        license_spdx="CC-BY-SA-4.0",
        license_file="ros2/src/aero_hand_open_description/package.xml",
    ),
    "aero_hand_open_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Aero Hand Open",
        maker="TetherIA",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="tetheria_aero_hand_open/LICENSE",
    ),
    "aliengo_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Aliengo",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "aliengo_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="Aliengo",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_mujoco",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "allegro_hand_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="Allegro Hand",
        maker="Wonik Robotics",
        repository="drake",
        license_spdx="BSD",
        license_file="manipulation/models/allegro_hand_description/LICENSE.TXT",
    ),
    "allegro_hand_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Allegro Hand",
        maker="Wonik Robotics",
        repository="mujoco_menagerie",
        license_spdx="BSD-2-Clause",
        license_file="wonik_allegro/LICENSE",
    ),
    "aloha_mj_description": Description(
        formats={Format.MJCF},
        tags={"dual_arm"},
        robot="Aloha 2",
        maker="Trossen Robotics",
        dof=14,
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="aloha/LICENSE",
    ),
    "anymal_b_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="ANYmal B",
        maker="ANYbotics",
        dof=12,
        repository="anymal_b_simple_description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "anymal_b_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="ANYmal B",
        maker="ANYbotics",
        dof=12,
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="anybotics_anymal_b/LICENSE",
    ),
    "anymal_c_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="ANYmal C",
        maker="ANYbotics",
        dof=12,
        repository="anymal_c_simple_description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "anymal_c_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="ANYmal C",
        maker="ANYbotics",
        dof=12,
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="anybotics_anymal_c/LICENSE",
    ),
    "anymal_d_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="ANYmal D",
        maker="ANYbotics",
        dof=12,
        repository="anymal_d_simple_description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "apollo_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="Apollo",
        maker="Apptronik",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="apptronik_apollo/LICENSE",
    ),
    "arx_l5_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="L5",
        maker="ARX",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="arx_l5/LICENSE",
    ),
    "atlas_drc_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Atlas DRC (v3)",
        maker="Boston Dynamics",
        repository="drake",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE.TXT",
    ),
    "atlas_v4_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Atlas v4",
        maker="Boston Dynamics",
        repository="roboschool",
        license_spdx="MIT",
        license_file="LICENSE.md",
    ),
    "b1_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="B1",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "b2_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="B2",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "bambot_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="BamBot",
        maker="Tim Qian",
        repository="bambot",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "barrett_hand_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="BarrettHand",
        maker="Barrett Technology",
        repository="bhand_model",
        license_spdx="BSD",
        license_file="manifest.xml",
    ),
    "baxter_description": Description(
        formats={Format.URDF},
        tags={"dual_arm"},
        robot="Baxter",
        maker="Rethink Robotics",
        dof=15,
        repository="baxter_common",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "berkeley_humanoid_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Berkeley Humanoid",
        maker="Hybrid Robotics",
        repository="berkeley_humanoid_description",
        license_spdx="BSD-3-Clause",
        license_file="package.xml",
    ),
    "bolt_description": Description(
        formats={Format.URDF},
        tags={"biped"},
        robot="Bolt",
        maker="ODRI",
        dof=6,
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "booster_t1_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Booster T1",
        maker="Booster Robotics",
        repository="booster_gym",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "booster_t1_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="Booster T1",
        maker="Booster Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="booster_t1/LICENSE",
    ),
    "cassie_description": Description(
        formats={Format.URDF},
        tags={"biped"},
        robot="Cassie",
        maker="Agility Robotics",
        dof=16,
        repository="cassie_description",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "cassie_mj_description": Description(
        formats={Format.MJCF},
        tags={"biped"},
        robot="Cassie",
        maker="Agility Robotics",
        dof=16,
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="agility_cassie/LICENSE",
    ),
    "cf2_description": Description(
        formats={Format.URDF},
        tags={"drone"},
        robot="Crazyflie 2.0",
        maker="Bitcraze",
        dof=0,
        repository="gym-pybullet-drones",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "cf2_mj_description": Description(
        formats={Format.MJCF},
        tags={"drone"},
        robot="Crazyflie 2.0",
        maker="Bitcraze",
        dof=6,
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="bitcraze_crazyflie_2/LICENSE",
    ),
    "double_pendulum_description": Description(
        formats={Format.URDF},
        tags={"educational"},
        robot="Double Pendulum",
        dof=2,
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "draco3_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Draco3",
        maker="Apptronik",
        repository="draco3_description",
        license_spdx="BSD-2-Clause",
        license_file="LICENSE",
    ),
    "dynamixel_2r_mj_description": Description(
        formats={Format.MJCF},
        tags={"educational"},
        robot="Dynamixel 2R",
        dof=2,
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="dynamixel_2r/LICENSE",
    ),
    "edo_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="e.DO",
        maker="Comau",
        repository="eDO_description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "elf2_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Elf2",
        maker="BXI Robotics",
        repository="bxi_robot_models",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "elf2_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="Elf2",
        maker="BXI Robotics",
        repository="bxi_robot_models",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "ergocub_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="ergoCub",
        maker="IIT",
        repository="ergocub-software",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "eve_r3_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Eve R3",
        maker="Halodi",
        repository="halodi-robot-models",
        license_spdx="Apache-2.0",
        license_file="eve_r3_description/package.xml",
    ),
    "fanuc_m710ic_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="M-710iC",
        maker="Fanuc",
        repository="fanuc_m710ic_description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "fer_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="FER",
        maker="Franka Robotics",
        repository="franka_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "fetch_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Fetch",
        maker="Fetch Robotics",
        repository="roboschool",
        license_spdx="MIT",
        license_file="LICENSE.md",
    ),
    "finger_edu_description": Description(
        formats={Format.URDF},
        tags={"educational"},
        robot="FingerEdu",
        dof=3,
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "fr3_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="FR3",
        maker="Franka Robotics",
        repository="franka_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "fr3_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="FR3",
        maker="Franka Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="franka_fr3/LICENSE",
    ),
    "fr3_v2_1_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="FR3 v2.1",
        maker="Franka Robotics",
        repository="franka_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "fr3_v2_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="FR3 v2",
        maker="Franka Robotics",
        repository="franka_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "fr3_v2_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="FR3 v2",
        maker="Franka Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="franka_fr3_v2/LICENSE",
    ),
    "g1_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="G1",
        maker="UNITREE Robotics",
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "g1_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="G1",
        maker="UNITREE Robotics",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="unitree_g1/LICENSE",
    ),
    "gen2_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Gen2",
        maker="Kinova",
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "gen3_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Gen3",
        maker="Kinova",
        repository="ros2_kortex",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "gen3_lite_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Gen3 Lite",
        maker="Kinova",
        repository="ros2_kortex",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "gen3_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="Gen3",
        maker="Kinova",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="kinova_gen3/LICENSE",
    ),
    "ginger_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Ginger",
        maker="Paaila Technology",
        repository="GingerURDF",
        license_spdx="BSD",
        license_file="package.xml",
    ),
    "go1_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Go1",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "go1_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="Go1",
        maker="UNITREE Robotics",
        dof=12,
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="unitree_go1/LICENSE",
    ),
    "go2_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Go2",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "go2_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="Go2",
        maker="UNITREE Robotics",
        dof=12,
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="unitree_go2/LICENSE",
    ),
    "gr1_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="GR-1",
        maker="Fourier",
        repository="Wiki-GRx-Models",
        license_spdx="GPL-3.0",
        license_file="LICENSE",
    ),
    "h1_2_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="H1_2",
        maker="UNITREE Robotics",
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "h1_2_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="H1_2",
        maker="UNITREE Robotics",
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "h1_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="H1",
        maker="UNITREE Robotics",
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "h1_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="H1",
        maker="UNITREE Robotics",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="unitree_h1/LICENSE",
    ),
    "hyq_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="HyQ",
        maker="IIT",
        dof=12,
        repository="example-robot-data",
        license_spdx="Apache-2.0",
        license_file="robots/hyq_description/README.md",
    ),
    "icub_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="iCub",
        maker="IIT",
        repository="icub-models",
        license_spdx="CC-BY-SA-4.0",
        license_file="iCub/package.xml",
    ),
    "iiwa14_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="iiwa 14",
        maker="KUKA",
        repository="drake",
        license_spdx="BSD-3-Clause",
        license_file="manipulation/models/iiwa_description/LICENSE.TXT",
    ),
    "iiwa14_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="iiwa 14",
        maker="KUKA",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="kuka_iiwa_14/LICENSE",
    ),
    "iiwa7_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="iiwa 7",
        maker="KUKA",
        repository="differentiable-robot-model",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "j2n4s300_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2n4s300",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "j2n6s200_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2n6s200",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "j2n6s300_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2n6s300",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "j2n7s300_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2n7s300",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "j2s6s200_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2s6s200",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "j2s6s300_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2s6s300",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "j2s7s300_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Jaco2 j2s7s300",
        maker="Kinova",
        repository="kinova-ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "jaxon_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="JAXON",
        maker="JSK",
        repository="jaxon_description",
        license_spdx="CC-BY-SA-4.0",
        license_file="LICENSE",
    ),
    "jvrc_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="JVRC-1",
        maker="AIST",
        repository="jvrc_description",
        license_spdx="BSD-2-Clause",
        license_file="LICENSE",
    ),
    "jvrc_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="JVRC-1",
        maker="AIST",
        repository="jvrc_mj_description",
        license_spdx="BSD-2-Clause",
        license_file="LICENSE",
    ),
    "laikago_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Laikago",
        maker="UNITREE Robotics",
        dof=12,
        repository="unitree_mujoco",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "leap_hand_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="LEAP Hand",
        maker="Carnegie Mellon University",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="leap_hand/LICENSE",
    ),
    "leap_hand_v1_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="LEAP Hand v1",
        maker="Carnegie Mellon University",
        repository="LEAP_Hand_Sim",
        license_spdx="MIT",
        license_file="LICENSE.txt",
    ),
    "low_cost_robot_arm_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="Low-cost robot arm",
        maker="Alexander Koch",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="low_cost_robot_arm/LICENSE",
    ),
    "mini_cheetah_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Mini Cheetah",
        maker="MIT",
        dof=12,
        repository="mini_cheetah_urdf",
        license_spdx="BSD",
        license_file="package.xml",
    ),
    "minitaur_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Minitaur",
        maker="Ghost Robotics",
        dof=16,
        repository="bullet3",
        license_spdx="BSD-2-Clause",
        license_file="data/quadruped/license.txt",
    ),
    "mujoco_humanoid_mj_description": Description(
        formats={Format.MJCF},
        tags={"educational", "humanoid"},
        robot="MuJoCo Humanoid",
        dof=27,
        repository="mujoco",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "n1_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="N1",
        maker="Fourier",
        repository="Wiki-GRx-Models-FourierN1",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "n1_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="N1",
        maker="Fourier",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="fourier_n1/LICENSE",
    ),
    "nextage_description": Description(
        formats={Format.URDF},
        tags={"dual_arm"},
        robot="NEXTAGE",
        maker="Kawada Robotics",
        dof=15,
        repository="rtmros_nextage",
        license_spdx="BSD",
        license_file="nextage_description/package.xml",
    ),
    "omx_f_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="OMX-F",
        maker="ROBOTIS",
        repository="open_manipulator",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "omx_l_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="OMX-L",
        maker="ROBOTIS",
        repository="open_manipulator",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "omy_3m_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="OMY-3M",
        maker="ROBOTIS",
        repository="open_manipulator",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "omy_f3m_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="OMY-F3M",
        maker="ROBOTIS",
        repository="open_manipulator",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "omy_l100_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="OMY-L100",
        maker="ROBOTIS",
        repository="open_manipulator",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "op3_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="OP3",
        maker="ROBOTIS",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="robotis_op3/LICENSE",
    ),
    "open_manipulator_x_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="OpenMANIPULATOR-X",
        maker="ROBOTIS",
        repository="open_manipulator",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "openarm_v1_mj_description": Description(
        formats={Format.MJCF},
        tags={"dual_arm"},
        robot="OpenArm",
        maker="Enactic",
        dof=16,
        repository="openarm_mujoco",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "panda_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Panda",
        maker="Franka Robotics",
        repository="example-robot-data",
        license_spdx="Apache-2.0",
        license_file="robots/panda_description/LICENSE",
    ),
    "panda_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="Panda",
        maker="Franka Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="franka_emika_panda/LICENSE",
    ),
    "pepper_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Pepper",
        maker="SoftBank Robotics",
        repository="pepper_description",
        license_spdx="BSD-2-Clause",
        license_file="LICENSE",
    ),
    "piper_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="PiPER",
        maker="AgileX",
        repository="Piper_ros",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "piper_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="PiPER",
        maker="AgileX",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="agilex_piper/LICENSE",
    ),
    "poppy_ergo_jr_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Poppy Ergo Jr",
        maker="Poppy Project",
        repository="poppy_ergo_jr_description",
        license_spdx="GPL-3.0",
        license_file="package.xml",
    ),
    "poppy_torso_description": Description(
        formats={Format.URDF},
        tags={"dual_arm"},
        robot="Poppy Torso",
        maker="Poppy Project",
        dof=13,
        repository="poppy_torso_description",
        license_spdx="GPL-3.0",
        license_file="package.xml",
    ),
    "pr2_description": Description(
        formats={Format.URDF},
        tags={"dual_arm", "mobile_manipulator"},
        robot="PR2",
        maker="Willow Garage",
        repository="robot-assets",
        license_spdx="BSD",
        license_file="README.md",
    ),
    "r2_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Robonaut 2",
        maker="NASA JSC Robotics",
        repository="nasa-urdf-robots",
        license_spdx="NASA-1.3",
        license_file="README.md",
    ),
    "rby1_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="RBY1",
        maker="Rainbow Robotics",
        repository="rby1_description",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "reachy_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Reachy",
        maker="Pollen Robotics",
        repository="reachy_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "rhea_description": Description(
        formats={Format.URDF},
        tags={"biped"},
        robot="Rhea",
        maker="Gabrael Levine",
        dof=7,
        repository="rhea_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "rizon4_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Rizon4",
        maker="Flexiv Robotics",
        repository="flexiv_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "rizon4_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="Rizon4",
        maker="Flexiv Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "robotiq_2f85_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="Robotiq 2F-85",
        maker="Robotiq",
        repository="robotiq_arg85_description",
        license_spdx="BSD",
        license_file="package.xml",
    ),
    "robotiq_2f85_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Robotiq 2F-85",
        maker="Robotiq",
        repository="mujoco_menagerie",
        license_spdx="BSD-2-Clause",
        license_file="robotiq_2f85/LICENSE",
    ),
    "robotiq_2f85_v4_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="Robotiq 2F-85 v4",
        maker="Robotiq",
        repository="robotiq_2f_85",
        license_spdx="BSD-2-Clause",
        license_file="LICENSE",
    ),
    "robotiq_2f85_v4_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Robotiq 2F-85",
        maker="Robotiq",
        repository="mujoco_menagerie",
        license_spdx="BSD-2-Clause",
        license_file="robotiq_2f85_v4/LICENSE",
    ),
    "romeo_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Romeo",
        maker="Aldebaran Robotics",
        repository="romeo_robot",
        license_spdx="BSD",
        license_file="romeo_description/package.xml",
    ),
    "rsk_description": Description(
        formats={Format.URDF},
        tags={"wheeled"},
        robot="RSK Omnidirectional",
        maker="Robot Soccer Kit",
        repository="onshape-to-robot-examples",
        license_spdx="MIT",
        license_file="README.md",
    ),
    "rsk_mj_description": Description(
        formats={Format.MJCF},
        tags={"wheeled"},
        robot="RSK Omnidirectional",
        maker="Robot Soccer Kit",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="robot_soccer_kit/LICENSE",
    ),
    "sawyer_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="Sawyer",
        maker="Rethink Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="rethink_robotics_sawyer/LICENSE",
    ),
    "shadow_dexee_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Shadow DEX-EE",
        maker="The Shadow Robot Company",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="shadow_dexee/LICENSE",
    ),
    "shadow_hand_mj_description": Description(
        formats={Format.MJCF},
        tags={"end_effector"},
        robot="Shadow Hand",
        maker="The Shadow Robot Company",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="shadow_hand/LICENSE",
    ),
    "sigmaban_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="SigmaBan",
        maker="Rhoban",
        repository="sigmaban_urdf",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "simple_humanoid_description": Description(
        formats={Format.URDF},
        tags={"educational", "humanoid"},
        robot="Simple Humanoid",
        dof=29,
        repository="simple_humanoid_description",
        license_spdx="BSD-2-Clause",
        license_file="LICENSE",
    ),
    "skydio_x2_description": Description(
        formats={Format.URDF},
        tags={"drone"},
        robot="Skydio X2",
        maker="Skydio",
        dof=6,
        repository="skydio_x2_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "skydio_x2_mj_description": Description(
        formats={Format.MJCF},
        tags={"drone"},
        robot="Skydio X2",
        maker="Skydio",
        dof=6,
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="skydio_x2/LICENSE",
    ),
    "so_arm100_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="SO-ARM100",
        maker="The Robot Studio",
        repository="SO-ARM100",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "so_arm100_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="SO-ARM100",
        maker="The Robot Studio",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="trs_so_arm100/LICENSE",
    ),
    "so_arm101_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="SO-ARM101",
        maker="The Robot Studio",
        repository="SO-ARM100",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "so_arm101_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="SO-ARM101",
        maker="The Robot Studio",
        repository="SO-ARM100",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "so_arm101_parallel_gripper_description": Description(
        formats={Format.URDF},
        tags={"end_effector"},
        robot="SO-ARM101 Parallel Gripper",
        maker="Robonine",
        repository="SO-ARM100-101-Parallel-Gripper",
        license_spdx="GPL-3.0",
        license_file="LICENSE",
    ),
    "solo_description": Description(
        formats={Format.URDF},
        tags={"quadruped"},
        robot="Solo",
        maker="ODRI",
        dof=12,
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "spot_mj_description": Description(
        formats={Format.MJCF},
        tags={"quadruped"},
        robot="Spot",
        maker="Boston Dynamics",
        dof=12,
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="boston_dynamics_spot/LICENSE",
    ),
    "spryped_description": Description(
        formats={Format.URDF},
        tags={"biped"},
        robot="Spryped",
        maker="Benjamin Bokser",
        dof=8,
        repository="spryped",
        license_spdx="BSD",
        license_file="spryped_urdf_rev06/package.xml",
    ),
    "stretch_3_mj_description": Description(
        formats={Format.MJCF},
        tags={"mobile_manipulator"},
        robot="Stretch 3",
        maker="Hello Robot",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="hello_robot_stretch_3/LICENSE",
    ),
    "stretch_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Stretch RE1",
        maker="Hello Robot",
        repository="stretch_description",
        license_spdx="CC-BY-NC-SA-4.0",
        license_file="LICENSE",
    ),
    "stretch_mj_description": Description(
        formats={Format.MJCF},
        tags={"mobile_manipulator"},
        robot="Stretch 2",
        maker="Hello Robot",
        repository="mujoco_menagerie",
        license_spdx="Clear BSD",
        license_file="hello_robot_stretch/LICENSE",
    ),
    "stretch_se3_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="Stretch SE3",
        maker="Hello Robot",
        repository="stretch_urdf",
        license_spdx="Clear BSD",
        license_file="LICENSE.md",
    ),
    "talos_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="TALOS",
        maker="PAL Robotics",
        repository="talos-data",
        license_spdx="LGPL-3.0",
        license_file="LICENSE",
    ),
    "talos_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="TALOS",
        maker="PAL Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="pal_talos/LICENSE",
    ),
    "tiago++_mj_description": Description(
        formats={Format.MJCF},
        tags={"mobile_manipulator"},
        robot="TIAGo++",
        maker="PAL Robotics",
        repository="mujoco_menagerie",
        license_spdx="Apache-2.0",
        license_file="pal_tiago_dual/LICENSE",
    ),
    "tiago_description": Description(
        formats={Format.URDF},
        tags={"mobile_manipulator"},
        robot="TIAGo",
        maker="PAL Robotics",
        repository="example-robot-data",
        license_spdx="CC-BY-NC-ND-3.0",
        license_file="robots/tiago_description/README.md",
    ),
    "toddlerbot_2xc_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="ToddlerBot 2XC",
        maker="Stanford University",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="toddlerbot_2xc/LICENSE",
    ),
    "toddlerbot_2xm_mj_description": Description(
        formats={Format.MJCF},
        tags={"humanoid"},
        robot="ToddlerBot 2XM",
        maker="Stanford University",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="toddlerbot_2xm/LICENSE",
    ),
    "toddlerbot_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="ToddlerBot",
        maker="Stanford University",
        repository="toddlerbot",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "trifinger_edu_description": Description(
        formats={Format.URDF},
        tags={"educational"},
        robot="TriFingerEdu",
        dof=9,
        repository="differentiable-robot-model",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "upkie_description": Description(
        formats={Format.URDF},
        tags={"biped", "wheeled"},
        robot="Upkie",
        maker="Tast's Robots",
        dof=6,
        repository="upkie_description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "ur10_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR10",
        maker="Universal Robots",
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur10_official_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR10 (official)",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur10e_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR10e",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur10e_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="UR10e",
        maker="Universal Robots",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="universal_robots_ur10e/LICENSE",
    ),
    "ur12e_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR12e",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur15_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR15",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="Universal Robots Terms for Graphical Documentation",
        license_file="meshes/ur15/LICENSE.txt",
    ),
    "ur16e_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR16e",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur18_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR18",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="Universal Robots Terms for Graphical Documentation",
        license_file="meshes/ur18/LICENSE.txt",
    ),
    "ur20_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR20",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="Universal Robots Terms for Graphical Documentation",
        license_file="meshes/ur20/LICENSE.txt",
    ),
    "ur30_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR30",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="Universal Robots Terms for Graphical Documentation",
        license_file="meshes/ur30/LICENSE.txt",
    ),
    "ur3_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR3",
        maker="Universal Robots",
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur3_official_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR3 (official)",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur3e_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR3e",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur5_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR5",
        maker="Universal Robots",
        repository="example-robot-data",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur5_official_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR5 (official)",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur5e_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR5e",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur5e_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="UR5e",
        maker="Universal Robots",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="universal_robots_ur5e/LICENSE",
    ),
    "ur7e_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR7e",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "ur8long_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="UR8 Long",
        maker="Universal Robots",
        repository="Universal_Robots_ROS2_Description",
        license_spdx="Universal Robots Terms for Graphical Documentation",
        license_file="meshes/ur8long/LICENSE.txt",
    ),
    "valkyrie_description": Description(
        formats={Format.URDF},
        tags={"humanoid"},
        robot="Valkyrie",
        maker="NASA JSC Robotics",
        repository="nasa-urdf-robots",
        license_spdx="NASA-1.3",
        license_file="README.md",
    ),
    "viper_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="ViperX",
        maker="Trossen Robotics",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="trossen_vx300s/LICENSE",
    ),
    "widow_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="WidowX",
        maker="Trossen Robotics",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="trossen_wx250s/LICENSE",
    ),
    "wl_p311d_description": Description(
        formats={Format.URDF},
        tags={"quadruped", "wheeled"},
        robot="WL P311D",
        maker="LimX Dynamics",
        repository="limxdynamics_robot-description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "wl_p311e_description": Description(
        formats={Format.URDF},
        tags={"quadruped", "wheeled"},
        robot="WL P311E",
        maker="LimX Dynamics",
        repository="limxdynamics_robot-description",
        license_spdx="Apache-2.0",
        license_file="LICENSE",
    ),
    "xarm6_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="xArm6",
        maker="UFACTORY",
        repository="xarm_ros2",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "xarm7_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="xArm7",
        maker="UFACTORY",
        repository="xarm_ros2",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "xarm7_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="xArm7",
        maker="UFACTORY",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="ufactory_xarm7/LICENSE",
    ),
    "yam_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="YAM",
        maker="I2RT Robotics",
        repository="i2rt",
        license_spdx="MIT",
        license_file="LICENSE",
    ),
    "yam_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="YAM",
        maker="I2RT Robotics",
        repository="mujoco_menagerie",
        license_spdx="MIT",
        license_file="i2rt_yam/LICENSE",
    ),
    "yumi_description": Description(
        formats={Format.URDF},
        tags={"dual_arm"},
        robot="YuMi",
        maker="ABB",
        dof=16,
        repository="robot-assets",
        license_spdx="BSD",
        license_file="README.md",
    ),
    "z1_description": Description(
        formats={Format.URDF},
        tags={"arm"},
        robot="Z1",
        maker="UNITREE Robotics",
        repository="unitree_ros",
        license_spdx="BSD-3-Clause",
        license_file="LICENSE",
    ),
    "z1_mj_description": Description(
        formats={Format.MJCF},
        tags={"arm"},
        robot="Z1",
        maker="UNITREE Robotics",
        repository="mujoco_menagerie",
        license_spdx="BSD-3-Clause",
        license_file="unitree_z1/LICENSE",
    ),
}
