From f4dba3ae35c48b6798801572a4cf820b5f97148f Mon Sep 17 00:00:00 2001 From: haixuantao Date: Sat, 21 Jun 2025 16:13:39 +0200 Subject: [PATCH 1/3] Adding so101 --- CHANGELOG.md | 1 + README.md | 2 ++ robot_descriptions/_repositories.py | 2 +- robot_descriptions/so_arm100.py | 8 ++----- robot_descriptions/so_arm101_description.py | 21 +++++++++++++++++++ .../so_arm101_mj_description.py | 21 +++++++++++++++++++ 6 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 robot_descriptions/so_arm101_description.py create mode 100644 robot_descriptions/so_arm101_mj_description.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a86fae..a24575a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ 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) ## [1.18.0] - 2025-06-19 diff --git a/README.md b/README.md index 34b4879..c78e017 100644 --- a/README.md +++ b/README.md @@ -151,6 +151,8 @@ The DOF column denotes the number of actuated degrees of freedom. | `sawyer_mj_description` | Sawyer | Rethink Robotics | MJCF | Apache-2.0 | | `so_arm100` | 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 | | `ur10_description` | UR10 | Universal Robots | URDF | Apache-2.0 | | `ur10e_mj_description` | UR10e | Universal Robots | MJCF | BSD-3-Clause | | `ur3_description` | UR3 | Universal Robots | URDF | Apache-2.0 | diff --git a/robot_descriptions/_repositories.py b/robot_descriptions/_repositories.py index 7521d10..10f0f44 100644 --- a/robot_descriptions/_repositories.py +++ b/robot_descriptions/_repositories.py @@ -267,7 +267,7 @@ class Repository: ), "SO-ARM100": Repository( url="https://github.com/TheRobotStudio/SO-ARM100.git", - commit="8967344301571dfa22660c73a901ad00acd6ee91", + commit="63eede5a636e548eb8f2854e558bd343c21db9f7", cache_path="SO-ARM100", ), "spryped": Repository( diff --git a/robot_descriptions/so_arm100.py b/robot_descriptions/so_arm100.py index 9bb57ff..46a5117 100644 --- a/robot_descriptions/so_arm100.py +++ b/robot_descriptions/so_arm100.py @@ -16,10 +16,6 @@ commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), ) -PACKAGE_PATH: str = _path.join( - REPOSITORY_PATH, "URDF", "SO_5DOF_ARM100_8j_URDF.SLDASM" -) +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "Simulation", "SO100") -URDF_PATH: str = _path.join( - PACKAGE_PATH, "urdf", "SO_5DOF_ARM100_8j_URDF.SLDASM.urdf" -) +URDF_PATH: str = _path.join(PACKAGE_PATH, "so100.urdf") diff --git a/robot_descriptions/so_arm101_description.py b/robot_descriptions/so_arm101_description.py new file mode 100644 index 0000000..af37a3b --- /dev/null +++ b/robot_descriptions/so_arm101_description.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""SO-ARM101 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( + "SO-ARM100", + commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), +) + +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "Simulation", "SO101") + +URDF_PATH: str = _path.join(PACKAGE_PATH, "so101_new_calib.urdf") diff --git a/robot_descriptions/so_arm101_mj_description.py b/robot_descriptions/so_arm101_mj_description.py new file mode 100644 index 0000000..c7032a0 --- /dev/null +++ b/robot_descriptions/so_arm101_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 + +"""SO-ARM101 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( + "SO-ARM100", + commit=_getenv("ROBOT_DESCRIPTION_COMMIT", None), +) + +PACKAGE_PATH: str = _path.join(REPOSITORY_PATH, "Simulation", "SO101") + +MJCF_PATH: str = _path.join(PACKAGE_PATH, "so101_new_calib.xml") From 705b9c76bda567b6b875f33bdcace244791addca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Caron?= <1189580+stephane-caron@users.noreply.github.com> Date: Mon, 23 Jun 2025 11:16:56 +0000 Subject: [PATCH 2/3] Update robot_descriptions/so_arm101_description.py --- robot_descriptions/so_arm101_description.py | 1 - 1 file changed, 1 deletion(-) diff --git a/robot_descriptions/so_arm101_description.py b/robot_descriptions/so_arm101_description.py index af37a3b..415ba64 100644 --- a/robot_descriptions/so_arm101_description.py +++ b/robot_descriptions/so_arm101_description.py @@ -2,7 +2,6 @@ # -*- coding: utf-8 -*- # # SPDX-License-Identifier: Apache-2.0 -# Copyright 2022 Stéphane Caron """SO-ARM101 description.""" From 4d55b7772a4cbffd7748666be3656521368b991d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Caron?= <1189580+stephane-caron@users.noreply.github.com> Date: Mon, 23 Jun 2025 11:17:08 +0000 Subject: [PATCH 3/3] Update robot_descriptions/so_arm101_mj_description.py --- robot_descriptions/so_arm101_mj_description.py | 1 - 1 file changed, 1 deletion(-) diff --git a/robot_descriptions/so_arm101_mj_description.py b/robot_descriptions/so_arm101_mj_description.py index c7032a0..0c33308 100644 --- a/robot_descriptions/so_arm101_mj_description.py +++ b/robot_descriptions/so_arm101_mj_description.py @@ -2,7 +2,6 @@ # -*- coding: utf-8 -*- # # SPDX-License-Identifier: Apache-2.0 -# Copyright 2022 Stéphane Caron """SO-ARM101 description."""