diff --git a/CHANGELOG.md b/CHANGELOG.md index a24575a..12c4bc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,15 @@ All notable changes to this project will be documented in this file. ### Added -- Description: SO ARM 101 (URDF/MJCF) (thanks to @haixuantao) -- Add `pull` in the CLI to pull `robot_description` and cache it. (thanks to @haixuantao) +- CLI: Add `pull` command to `robot_description` and cache it (thanks to @haixuantao) +- Description: BamBot (URDF) +- Description: SO ARM 101 (MJCF) (thanks to @haixuantao) +- Description: SO ARM 101 (URDF) (thanks to @haixuantao) + +### Changed + +- Rename `leap_hand_v1` to `leap_hand_v1_description` +- Rename `so_arm100` to `so_arm100_description` ## [1.18.0] - 2025-06-19 diff --git a/README.md b/README.md index c78e017..65e9155 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ The DOF column denotes the number of actuated degrees of freedom. | `piper_mj_description` | PiPER | AgileX | MJCF | MIT | | `poppy_ergo_jr_description` | Poppy Ergo Jr | Poppy Project | URDF | GPL-3.0 | | `sawyer_mj_description` | Sawyer | Rethink Robotics | MJCF | Apache-2.0 | -| `so_arm100` | SO-ARM100 | The Robot Studio | URDF | Apache-2.0 | +| `so_arm100_description` | SO-ARM100 | The Robot Studio | URDF | Apache-2.0 | | `so_arm100_mj_description` | SO-ARM100 | The Robot Studio | MJCF | Apache-2.0 | | `so_arm101_description` | SO-ARM101 | The Robot Studio | URDF | Apache-2.0 | | `so_arm101_mj_description` | SO-ARM101 | The Robot Studio | MJCF | Apache-2.0 | @@ -214,7 +214,7 @@ The DOF column denotes the number of actuated degrees of freedom. | `allegro_hand_description` | Allegro Hand | Wonik Robotics | URDF | [BSD](https://github.com/RobotLocomotion/models/blob/5c027ea961473cb558da30e1a749272a8a9fa3eb/allegro_hand_description/LICENSE.TXT) | | `allegro_hand_mj_description` | Allegro Hand | Wonik Robotics | MJCF | [BSD-2-Clause](https://github.com/google-deepmind/mujoco_menagerie/blob/main/wonik_allegro/LICENSE) | | `barrett_hand_description` | BarrettHand | Barrett Technology | URDF | [BSD](https://github.com/jhu-lcsr-attic/bhand_model/blob/937f4186d6458bd682a7dae825fb6f4efe56ec69/manifest.xml) | -| `leap_hand_v1` | LEAP Hand v1 | Carnegie Mellon University | URDF | MIT | +| `leap_hand_v1_description` | LEAP Hand v1 | Carnegie Mellon University | URDF | MIT | | `leap_hand_mj_description` | LEAP Hand | Carnegie Mellon University | MJCF | MIT | | `robotiq_2f85_description` | Robotiq 2F-85 | Robotiq | URDF | BSD-2-Clause | | `robotiq_2f85_mj_description` | Robotiq 2F-85 | Robotiq | MJCF | BSD-2-Clause | @@ -255,18 +255,19 @@ The DOF column denotes the number of actuated degrees of freedom. ### Mobile manipulators -| Name | Robot | Maker | DOF | Format | -|-------------------------------|-----------------------|--------------------------|-----|------------| -| `eve_r3_description` | Eve R3 | Halodi | 23 | URDF | -| `fetch_description` | Fetch | Fetch Robotics | 14 | URDF | -| `ginger_description` | Ginger | Paaila Technology | 49 | URDF | -| `pepper_description` | Pepper | SoftBank Robotics | 17 | URDF | -| `pr2_description` | PR2 | Willow Garage | 32 | URDF | -| `reachy_description` | Reachy | Pollen Robotics | 21 | URDF | -| `stretch_description` | Stretch RE1 | Hello Robot | 14 | URDF | -| `sretch_mj_description` | Stretch 2 | Hello Robot | 14 | MJCF | -| `sretch_3_mj_description` | Stretch 3 | Hello Robot | 14 | MJCF | -| `tiago_description` | TIAGo | PAL Robotics | 48 | URDF | +| Name | Robot | Maker | Format | License | +|-------------------------------|-----------------------|--------------------------|------------|---------| +| `bambot_description` | BamBot | Tim Qian | URDF | [Apache-2.0](https://github.com/timqian/bambot/blob/04d902653794f9f72eeabb09ec90a9af8e397c5b/LICENSE) | +| `eve_r3_description` | Eve R3 | Halodi | URDF | Apache-2.0 | +| `fetch_description` | Fetch | Fetch Robotics | URDF | MIT | +| `ginger_description` | Ginger | Paaila Technology | URDF | BSD | +| `pepper_description` | Pepper | SoftBank Robotics | URDF | BSD-2-Clause | +| `pr2_description` | PR2 | Willow Garage | URDF | BSD | +| `reachy_description` | Reachy | Pollen Robotics | URDF | Apache-2.0 | +| `stretch_description` | Stretch RE1 | Hello Robot | URDF | CC-BY-SA-4.0 ✖️ | +| `sretch_mj_description` | Stretch 2 | Hello Robot | MJCF | Clear BSD | +| `sretch_3_mj_description` | Stretch 3 | Hello Robot | MJCF | Apache-2.0 | +| `tiago_description` | TIAGo | PAL Robotics | URDF | Apache-2.0 | ### Quadrupeds diff --git a/robot_descriptions/_descriptions.py b/robot_descriptions/_descriptions.py index 2d8c5b9..5f26196 100644 --- a/robot_descriptions/_descriptions.py +++ b/robot_descriptions/_descriptions.py @@ -80,6 +80,9 @@ def has_urdf(self) -> bool: "atlas_v4_description": Description(Format.URDF, tags={"humanoid"}), "b1_description": Description(Format.URDF, tags={"quadruped"}), "b2_description": Description(Format.URDF, tags={"quadruped"}), + "bambot_description": Description( + Format.URDF, tags={"mobile_manipulator"} + ), "barrett_hand_description": Description( Format.URDF, tags={"end_effector"} ), @@ -134,7 +137,9 @@ def has_urdf(self) -> bool: "jvrc_description": Description(Format.URDF, tags={"humanoid"}), "jvrc_mj_description": Description(Format.MJCF, tags={"humanoid"}), "laikago_description": Description(Format.URDF, tags={"quadruped"}), - "leap_hand_v1": Description(Format.URDF, tags={"end_effector"}), + "leap_hand_v1_description": Description( + Format.URDF, tags={"end_effector"} + ), "leap_hand_mj_description": Description( Format.MJCF, tags={"end_effector"} ), @@ -189,8 +194,10 @@ def has_urdf(self) -> bool: ), "skydio_x2_description": Description(Format.URDF, tags={"drone"}), "skydio_x2_mj_description": Description(Format.MJCF, tags={"drone"}), - "so_arm100": Description(Format.URDF, tags={"arm"}), + "so_arm100_description": Description(Format.URDF, tags={"arm"}), "so_arm100_mj_description": Description(Format.MJCF, tags={"arm"}), + "so_arm101_description": Description(Format.URDF, tags={"arm"}), + "so_arm101_mj_description": Description(Format.MJCF, tags={"arm"}), "solo_description": Description(Format.URDF, tags={"quadruped"}), "spot_mj_description": Description(Format.MJCF, tags={"quadruped"}), "spryped_description": Description(Format.URDF, tags={"biped"}), diff --git a/robot_descriptions/_repositories.py b/robot_descriptions/_repositories.py index 10f0f44..c6b2b06 100644 --- a/robot_descriptions/_repositories.py +++ b/robot_descriptions/_repositories.py @@ -46,6 +46,11 @@ class Repository: commit="6adc14720aab583613975e5a9d6d4fa3cfcdd081", cache_path="anymal_d_simple_description", ), + "bambot": Repository( + url="https://github.com/timqian/bambot.git", + commit="04d902653794f9f72eeabb09ec90a9af8e397c5b", + cache_path="bambot", + ), "baxter_common": Repository( url="https://github.com/RethinkRobotics/baxter_common.git", commit="6c4b0f375fe4e356a3b12df26ef7c0d5e58df86e", # v1.2.0 diff --git a/robot_descriptions/bambot_description.py b/robot_descriptions/bambot_description.py new file mode 100644 index 0000000..2fb7182 --- /dev/null +++ b/robot_descriptions/bambot_description.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2025 Inria + +"""BamBot description.""" + +from os import getenv as _getenv +from os import path as _path + +from ._cache import clone_to_cache as _clone_to_cache + +REPOSITORY_PATH: str = _clone_to_cache( + "bambot", + commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), +) + +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "website", "public", "URDF") + +URDF_PATH: str = _path.join(PACKAGE_PATH, "bambot_v0.urdf") diff --git a/robot_descriptions/leap_hand_v1.py b/robot_descriptions/leap_hand_v1_description.py similarity index 100% rename from robot_descriptions/leap_hand_v1.py rename to robot_descriptions/leap_hand_v1_description.py diff --git a/robot_descriptions/so_arm100.py b/robot_descriptions/so_arm100_description.py similarity index 100% rename from robot_descriptions/so_arm100.py rename to robot_descriptions/so_arm100_description.py