From 4b25122517b75d40ca10390766cb6a12455be8fc Mon Sep 17 00:00:00 2001 From: Justin Yu Date: Tue, 27 May 2025 11:54:15 -0700 Subject: [PATCH 1/6] add YAM URDF and RBY1 URDF --- CHANGELOG.md | 2 ++ robot_descriptions/_descriptions.py | 2 ++ robot_descriptions/_repositories.py | 10 ++++++++++ robot_descriptions/rby1_description.py | 21 +++++++++++++++++++++ robot_descriptions/yam_description.py | 21 +++++++++++++++++++++ 5 files changed, 56 insertions(+) create mode 100644 robot_descriptions/rby1_description.py create mode 100644 robot_descriptions/yam_description.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b8f0d3..ba47a80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ All notable changes to this project will be documented in this file. - Description: Dynamixel 2R (MJCF) - Description: YAM (MJCF) (thanks to @kevinzakka) +- Description YAM (URDF) +- Description RBY1 Mobile Manipulatior (URDF) ## [1.17.0] - 2025-05-08 diff --git a/robot_descriptions/_descriptions.py b/robot_descriptions/_descriptions.py index 9a5592d..8199367 100644 --- a/robot_descriptions/_descriptions.py +++ b/robot_descriptions/_descriptions.py @@ -217,6 +217,8 @@ def has_urdf(self) -> bool: "widow_mj_description": Description(Format.MJCF, tags={"arm"}), "xarm7_mj_description": Description(Format.MJCF, tags={"arm"}), "yam_mj_description": Description(Format.MJCF, tags={"arm"}), + "yam_description": Description(Format.URDF, tags={"arm"}), + "rby1_description": Description(Format.URDF, tags={"mobile_manipulator"}), "yumi_description": Description(Format.URDF, tags={"dual_arm"}), "z1_description": Description(Format.URDF, tags={"arm"}), "z1_mj_description": Description(Format.MJCF, tags={"arm"}), diff --git a/robot_descriptions/_repositories.py b/robot_descriptions/_repositories.py index 8349ac2..72e5e86 100644 --- a/robot_descriptions/_repositories.py +++ b/robot_descriptions/_repositories.py @@ -305,4 +305,14 @@ class Repository: commit="9a6a057a055babaf47119fac42c361fffc189128", cache_path="skydio_x2_description", ), + "i2rt": Repository( + url="https://github.com/i2rt-robotics/i2rt.git", + commit="8a8f804d72b41a04a5c69520031aec9a5d328104", + cache_path="i2rt", + ), + "rby1_description": Repository( + url="https://github.com/uynitsuj/rby1_description.git", + commit="c84f9ed802f69306945b684aa7205599e4ede82a", + cache_path="rby1_description", + ), } diff --git a/robot_descriptions/rby1_description.py b/robot_descriptions/rby1_description.py new file mode 100644 index 0000000..681f500 --- /dev/null +++ b/robot_descriptions/rby1_description.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""YAM URDF 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( + "rby1_description", + commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), +) + +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/urdf/meshes") + +URDF_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/urdf/model.urdf") diff --git a/robot_descriptions/yam_description.py b/robot_descriptions/yam_description.py new file mode 100644 index 0000000..2e5bcec --- /dev/null +++ b/robot_descriptions/yam_description.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""YAM URDF 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( + "i2rt", + commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), +) + +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "robot_models/yam/assets") + +URDF_PATH: str = _path.join(REPOSITORY_PATH, "robot_models/yam/yam.urdf") From e2502f3d4d8aa38d18b72527c5baae2b19a1182e Mon Sep 17 00:00:00 2001 From: Justin Yu Date: Tue, 27 May 2025 12:03:06 -0700 Subject: [PATCH 2/6] update readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index edd3411..625573d 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ The DOF column denotes the number of actuated degrees of freedom. | `widow_mj_description` | WidowX | Trossen Robotics | MJCF | BSD-3-Clause | | `xarm7_mj_description` | xArm7 | UFACTORY | MJCF | BSD-3-Clause | | `yam_mj_description` | YAM | I2RT Robotics | MJCF | MIT | +| `yam_description` | YAM | I2RT Robotics | URDF | MIT | | `z1_description` | Z1 | UNITREE Robotics | URDF | BSD-3-Clause | | `z1_mj_description` | Z1 | UNITREE Robotics | MJCF | BSD-3-Clause | @@ -267,6 +268,8 @@ The DOF column denotes the number of actuated degrees of freedom. | `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 | +| `rby1_description` | RBY1 | Rainbow Robotics | 24 | URDF | + ### Quadrupeds From 560ab438bf41a82ed9d7831164830fda6ccf7a79 Mon Sep 17 00:00:00 2001 From: Justin Yu Date: Mon, 2 Jun 2025 11:51:20 -0700 Subject: [PATCH 3/6] add rby1 mujoco file --- robot_descriptions/rby1_mj_description.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 robot_descriptions/rby1_mj_description.py diff --git a/robot_descriptions/rby1_mj_description.py b/robot_descriptions/rby1_mj_description.py new file mode 100644 index 0000000..43dc0b6 --- /dev/null +++ b/robot_descriptions/rby1_mj_description.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""YAM URDF 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( + "rby1_description", + commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), +) + +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/assets") + +URDF_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/rby1.xml") From 12f1a36a75394b2dbcfd4a19fa9db0030933febf Mon Sep 17 00:00:00 2001 From: Justin Yu Date: Mon, 2 Jun 2025 11:54:59 -0700 Subject: [PATCH 4/6] urdf -> mjcf --- robot_descriptions/rby1_mj_description.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/robot_descriptions/rby1_mj_description.py b/robot_descriptions/rby1_mj_description.py index 43dc0b6..c905e40 100644 --- a/robot_descriptions/rby1_mj_description.py +++ b/robot_descriptions/rby1_mj_description.py @@ -18,4 +18,4 @@ PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/assets") -URDF_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/rby1.xml") +MJCF_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/rby1.xml") From 3a3d748a05a43011bc4084f53a4445263877da9e Mon Sep 17 00:00:00 2001 From: Justin Yu Date: Mon, 2 Jun 2025 12:26:21 -0700 Subject: [PATCH 5/6] update rby1 mjcf path --- robot_descriptions/_repositories.py | 2 +- robot_descriptions/loaders/mujoco.py | 2 ++ robot_descriptions/rby1_description.py | 4 ++-- robot_descriptions/rby1_mj_description.py | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/robot_descriptions/_repositories.py b/robot_descriptions/_repositories.py index 72e5e86..e5a57d5 100644 --- a/robot_descriptions/_repositories.py +++ b/robot_descriptions/_repositories.py @@ -312,7 +312,7 @@ class Repository: ), "rby1_description": Repository( url="https://github.com/uynitsuj/rby1_description.git", - commit="c84f9ed802f69306945b684aa7205599e4ede82a", + commit="d8e8fe5f92604ef56e11db7f9798973cf94767cb", cache_path="rby1_description", ), } diff --git a/robot_descriptions/loaders/mujoco.py b/robot_descriptions/loaders/mujoco.py index 558375a..6e7289e 100644 --- a/robot_descriptions/loaders/mujoco.py +++ b/robot_descriptions/loaders/mujoco.py @@ -40,6 +40,8 @@ def load_robot_description( def load_model_from_path(path): try: + import pdb; pdb.set_trace() + return mujoco.MjModel.from_xml_path(path) except ValueError: print(f"{path} not found. Loading default robot model.") diff --git a/robot_descriptions/rby1_description.py b/robot_descriptions/rby1_description.py index 681f500..e8091de 100644 --- a/robot_descriptions/rby1_description.py +++ b/robot_descriptions/rby1_description.py @@ -16,6 +16,6 @@ commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), ) -PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/urdf/meshes") +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a") -URDF_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/urdf/model.urdf") +URDF_PATH: str = _path.join(PACKAGE_PATH, "urdf/model.urdf") diff --git a/robot_descriptions/rby1_mj_description.py b/robot_descriptions/rby1_mj_description.py index c905e40..ee5c0b6 100644 --- a/robot_descriptions/rby1_mj_description.py +++ b/robot_descriptions/rby1_mj_description.py @@ -16,6 +16,6 @@ commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), ) -PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/assets") +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a") -MJCF_PATH: str = _path.join(REPOSITORY_PATH, "models/rby1a/mujoco/rby1.xml") +MJCF_PATH: str = _path.join(PACKAGE_PATH, "mujoco/model.xml") From ea36f4f434e16f0d10aaa80a357356828de2669b Mon Sep 17 00:00:00 2001 From: Justin Yu Date: Mon, 2 Jun 2025 12:26:58 -0700 Subject: [PATCH 6/6] rm pdb --- robot_descriptions/loaders/mujoco.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/robot_descriptions/loaders/mujoco.py b/robot_descriptions/loaders/mujoco.py index 6e7289e..558375a 100644 --- a/robot_descriptions/loaders/mujoco.py +++ b/robot_descriptions/loaders/mujoco.py @@ -40,8 +40,6 @@ def load_robot_description( def load_model_from_path(path): try: - import pdb; pdb.set_trace() - return mujoco.MjModel.from_xml_path(path) except ValueError: print(f"{path} not found. Loading default robot model.")