hex-zmq-servers 0.2.4__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/MANIFEST.in +1 -1
- {hex_zmq_servers-0.2.4/hex_zmq_servers.egg-info → hex_zmq_servers-0.3.0}/PKG-INFO +5 -4
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/README.md +1 -1
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/__init__.py +13 -15
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/robot_hexarm.json +1 -1
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/hex_launch.py +178 -13
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/__init__.py +5 -5
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/__init__.py +6 -6
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/scene.xml +1 -1
- hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y.py → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py +4 -4
- hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y_cli.py → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py +1 -1
- hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y_srv.py → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py +5 -5
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +2 -2
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/__init__.py +10 -10
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/robot_hexarm.py +3 -3
- {hex_zmq_servers-0.2.4/hex_zmq_servers/robot/hexarm/urdf/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/robot/hexarm/urdf/archer_y6}/empty.urdf +15 -15
- {hex_zmq_servers-0.2.4/hex_zmq_servers/robot/hexarm/urdf/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/robot/hexarm/urdf/archer_y6}/gp100.urdf +15 -15
- {hex_zmq_servers-0.2.4/hex_zmq_servers/robot/hexarm/urdf/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/robot/hexarm/urdf/archer_y6}/gp100_handle.urdf +15 -15
- {hex_zmq_servers-0.2.4/hex_zmq_servers/robot/hexarm/urdf/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/robot/hexarm/urdf/archer_y6}/gp100_p050.urdf +15 -15
- {hex_zmq_servers-0.2.4/hex_zmq_servers/robot/hexarm/urdf/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/robot/hexarm/urdf/archer_y6}/gp100_p050_handle.urdf +15 -15
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0/hex_zmq_servers.egg-info}/PKG-INFO +5 -4
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers.egg-info/SOURCES.txt +30 -30
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers.egg-info/requires.txt +1 -1
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/pyproject.toml +4 -3
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/LICENSE +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/berxel/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/berxel/cam_berxel.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/berxel/cam_berxel_cli.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/berxel/cam_berxel_srv.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/cam_base.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/dummy/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/dummy/cam_dummy.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/dummy/cam_dummy_cli.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/cam/dummy/cam_dummy_srv.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/cam_berxel.json +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/cam_dummy.json +0 -0
- /hex_zmq_servers-0.2.4/hex_zmq_servers/config/mujoco_archer_d6y.json → /hex_zmq_servers-0.3.0/hex_zmq_servers/config/mujoco_archer_y6.json +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/mujoco_e3_desktop.json +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/robot_dummy.json +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/robot_gello.json +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/config/zmq_dummy.json +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/device_base.py +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/arm_base_link.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/arm_link_1.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/arm_link_2.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/arm_link_3.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/arm_link_4.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/arm_link_5.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/assets.xml +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/camera_link.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_base_link.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_left_helper_link.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_left_link_1.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_left_link_2.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_right_helper_link.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_right_link_1.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/gripper_right_link_2.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/assets/table_link.STL +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/robot.xml +0 -0
- {hex_zmq_servers-0.2.4/hex_zmq_servers/mujoco/archer_d6y → hex_zmq_servers-0.3.0/hex_zmq_servers/mujoco/archer_y6}/model/setting.xml +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_base_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_1.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_2.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_3.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_4.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_5.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/assets.xml +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/camera_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/e3_desktop_base_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_base_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_helper_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_1.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_2.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_helper_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_1.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_2.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/assets/table_link.STL +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/robot.xml +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/model/setting.xml +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/mujoco/mujoco_base.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/dummy/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/dummy/robot_dummy.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/dummy/robot_dummy_cli.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/dummy/robot_dummy_srv.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/gello/__init__.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/gello/robot_gello.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/gello/robot_gello_cli.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/gello/robot_gello_srv.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/robot_hexarm_srv.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/empty.urdf +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100.urdf +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_handle.urdf +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050.urdf +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050_handle.urdf +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/robot_base.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/zmq_base.py +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers.egg-info/dependency_links.txt +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers.egg-info/top_level.txt +0 -0
- {hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/setup.cfg +0 -0
|
@@ -3,7 +3,7 @@ include README.md
|
|
|
3
3
|
include requirements.txt
|
|
4
4
|
|
|
5
5
|
recursive-include package_name *
|
|
6
|
-
recursive-include hex_zmq_servers/mujoco/
|
|
6
|
+
recursive-include hex_zmq_servers/mujoco/archer_y6/model * *
|
|
7
7
|
recursive-include hex_zmq_servers/mujoco/e3_desktop/model * *
|
|
8
8
|
recursive-include hex_zmq_servers/robot/hexarm/urdf * *
|
|
9
9
|
recursive-include hex_zmq_servers/config *
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hex_zmq_servers
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: HEXFELLOW ZMQ Servers
|
|
5
5
|
Author-email: Dong Zhaorui <joray.dong@hexfellow.com>
|
|
6
6
|
Maintainer-email: jecjune <zejun.chen@hexfellow.com>, Dong Zhaorui <joray.dong@hexfellow.com>
|
|
@@ -15,15 +15,16 @@ Classifier: Intended Audience :: Developers
|
|
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
16
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
17
17
|
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
21
|
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
-
Requires-Python: >=3.
|
|
22
|
+
Requires-Python: >=3.10
|
|
22
23
|
Description-Content-Type: text/markdown
|
|
23
24
|
License-File: LICENSE
|
|
24
25
|
Requires-Dist: pyzmq>=27.0.1
|
|
25
26
|
Requires-Dist: hex_device<1.4.0,>=1.3.1
|
|
26
|
-
Requires-Dist: hex_robo_utils<0.2.0,>=0.1.
|
|
27
|
+
Requires-Dist: hex_robo_utils<0.2.0,>=0.1.20
|
|
27
28
|
Requires-Dist: dynamixel-sdk==3.8.4
|
|
28
29
|
Provides-Extra: camera
|
|
29
30
|
Requires-Dist: berxel_py_wrapper>=2.0; extra == "camera"
|
|
@@ -73,7 +74,7 @@ hex_zmq_servers/
|
|
|
73
74
|
|
|
74
75
|
### Mujoco
|
|
75
76
|
|
|
76
|
-
- **
|
|
77
|
+
- **archer_y6**: Physical simulation of Archer Y6 robot
|
|
77
78
|
- **e3_desktop**: Physical simulation of E3 Desktop robot
|
|
78
79
|
|
|
79
80
|
## Installation
|
|
@@ -6,17 +6,13 @@
|
|
|
6
6
|
# Date : 2025-09-15
|
|
7
7
|
################################################################
|
|
8
8
|
|
|
9
|
-
from .hex_launch import HexLaunch, HEX_LOG_LEVEL, hex_log, hex_err
|
|
9
|
+
from .hex_launch import HexLaunch, HexNodeConfig, HEX_LOG_LEVEL, hex_dict_str, hex_log, hex_err
|
|
10
10
|
|
|
11
11
|
from .device_base import HexDeviceBase
|
|
12
12
|
from .zmq_base import HexRate, hex_zmq_ts_now, hex_zmq_ts_delta_ms
|
|
13
13
|
from .zmq_base import HexSafeValue, HexZMQClientBase, HexZMQServerBase, hex_server_helper
|
|
14
14
|
from .zmq_base import HexZMQDummyClient, HexZMQDummyServer
|
|
15
15
|
|
|
16
|
-
from .mujoco import HexMujocoBase, HexMujocoClientBase, HexMujocoServerBase
|
|
17
|
-
from .mujoco import HexMujocoArcherD6y, HexMujocoArcherD6yClient, HexMujocoArcherD6yServer
|
|
18
|
-
from .mujoco import HexMujocoE3Desktop, HexMujocoE3DesktopClient, HexMujocoE3DesktopServer
|
|
19
|
-
|
|
20
16
|
from .robot import HexRobotBase, HexRobotClientBase, HexRobotServerBase
|
|
21
17
|
from .robot import HexRobotDummy, HexRobotDummyClient, HexRobotDummyServer
|
|
22
18
|
from .robot import HexRobotGello, HexRobotGelloClient, HexRobotGelloServer
|
|
@@ -49,7 +45,9 @@ __all__ = [
|
|
|
49
45
|
|
|
50
46
|
# launch
|
|
51
47
|
"HexLaunch",
|
|
48
|
+
"HexNodeConfig",
|
|
52
49
|
"HEX_LOG_LEVEL",
|
|
50
|
+
"hex_dict_str",
|
|
53
51
|
"hex_log",
|
|
54
52
|
"hex_err",
|
|
55
53
|
|
|
@@ -111,23 +109,23 @@ try:
|
|
|
111
109
|
])
|
|
112
110
|
except ImportError:
|
|
113
111
|
# berxel_py_wrapper not installed
|
|
114
|
-
# Install with: pip install hex_zmq_servers[berxel]
|
|
112
|
+
# Install with: pip install hex_zmq_servers[berxel] or pip install hex_zmq_servers[all]
|
|
115
113
|
pass
|
|
116
114
|
|
|
117
115
|
# Optional: mujoco
|
|
118
116
|
try:
|
|
119
117
|
from .mujoco import HexMujocoBase, HexMujocoClientBase, HexMujocoServerBase
|
|
120
|
-
from .mujoco import
|
|
118
|
+
from .mujoco import HexMujocoArcherY6, HexMujocoArcherY6Client, HexMujocoArcherY6Server
|
|
121
119
|
from .mujoco import HexMujocoE3Desktop, HexMujocoE3DesktopClient, HexMujocoE3DesktopServer
|
|
122
120
|
HEX_ZMQ_SERVERS_PATH_DICT.update({
|
|
123
|
-
"
|
|
124
|
-
f"{file_dir}/mujoco/
|
|
121
|
+
"mujoco_archer_y6":
|
|
122
|
+
f"{file_dir}/mujoco/archer_y6/mujoco_archer_y6_srv.py",
|
|
125
123
|
"mujoco_e3_desktop":
|
|
126
124
|
f"{file_dir}/mujoco/e3_desktop/mujoco_e3_desktop_srv.py",
|
|
127
125
|
})
|
|
128
126
|
HEX_ZMQ_CONFIGS_PATH_DICT.update({
|
|
129
|
-
"
|
|
130
|
-
f"{file_dir}/config/
|
|
127
|
+
"mujoco_archer_y6":
|
|
128
|
+
f"{file_dir}/config/mujoco_archer_y6.json",
|
|
131
129
|
"mujoco_e3_desktop":
|
|
132
130
|
f"{file_dir}/config/mujoco_e3_desktop.json",
|
|
133
131
|
})
|
|
@@ -136,16 +134,16 @@ try:
|
|
|
136
134
|
"HexMujocoBase",
|
|
137
135
|
"HexMujocoClientBase",
|
|
138
136
|
"HexMujocoServerBase",
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
137
|
+
"HexMujocoArcherY6",
|
|
138
|
+
"HexMujocoArcherY6Client",
|
|
139
|
+
"HexMujocoArcherY6Server",
|
|
142
140
|
"HexMujocoE3Desktop",
|
|
143
141
|
"HexMujocoE3DesktopClient",
|
|
144
142
|
"HexMujocoE3DesktopServer",
|
|
145
143
|
])
|
|
146
144
|
except ImportError:
|
|
147
145
|
# mujoco not installed
|
|
148
|
-
# Install with: pip install hex_zmq_servers[mujoco]
|
|
146
|
+
# Install with: pip install hex_zmq_servers[mujoco] or pip install hex_zmq_servers[all]
|
|
149
147
|
pass
|
|
150
148
|
|
|
151
149
|
# print("#### Thanks for using hex_zmq_servers :D ####")
|
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
# Date : 2025-09-25
|
|
7
7
|
################################################################
|
|
8
8
|
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
9
11
|
import json
|
|
10
12
|
import os, sys, signal, subprocess, threading, time
|
|
11
13
|
import termios
|
|
14
|
+
import importlib.util
|
|
12
15
|
|
|
13
16
|
from datetime import datetime
|
|
14
17
|
from pathlib import Path
|
|
15
|
-
from typing import Dict, List
|
|
16
18
|
|
|
17
19
|
HEX_LOG_LEVEL = {
|
|
18
20
|
"info": 0,
|
|
@@ -29,16 +31,187 @@ def hex_err(message):
|
|
|
29
31
|
print(message, file=sys.stderr)
|
|
30
32
|
|
|
31
33
|
|
|
34
|
+
def dict_update(dict_raw: dict, dict_new: dict, add_new: bool = False):
|
|
35
|
+
for key, value in dict_new.items():
|
|
36
|
+
if key in dict_raw:
|
|
37
|
+
if isinstance(dict_raw[key], dict) and isinstance(value, dict):
|
|
38
|
+
dict_update(dict_raw[key], value)
|
|
39
|
+
else:
|
|
40
|
+
dict_raw[key] = value
|
|
41
|
+
elif add_new:
|
|
42
|
+
dict_raw[key] = value
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def hex_dict_str(dict_raw: dict, indent: int = 0) -> str:
|
|
46
|
+
print_str = ("\n" + "*" * 50 + "\n") if indent == 0 else ""
|
|
47
|
+
for key, value in dict_raw.items():
|
|
48
|
+
if isinstance(value, dict):
|
|
49
|
+
print_str += f"{' ' * indent * 4}{key}:\n{hex_dict_str(value, indent + 1)}"
|
|
50
|
+
else:
|
|
51
|
+
print_str += f"{' ' * indent * 4}{key}: {value}\n"
|
|
52
|
+
print_str += ("*" * 50) if indent == 0 else ""
|
|
53
|
+
return print_str
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class HexNodeConfig():
|
|
57
|
+
|
|
58
|
+
def __init__(
|
|
59
|
+
self,
|
|
60
|
+
init_params: dict[str, dict] | list[dict] | HexNodeConfig = {},
|
|
61
|
+
):
|
|
62
|
+
len_init_params = len(init_params)
|
|
63
|
+
if isinstance(init_params, list):
|
|
64
|
+
self._cfgs_dict = {cfg["name"]: cfg for cfg in init_params}
|
|
65
|
+
elif isinstance(init_params, dict):
|
|
66
|
+
self._cfgs_dict = init_params
|
|
67
|
+
if len_init_params != len(self._cfgs_dict):
|
|
68
|
+
raise ValueError(f"Invalid init_params: {init_params}")
|
|
69
|
+
elif isinstance(init_params, HexNodeConfig):
|
|
70
|
+
self._cfgs_dict = init_params._cfgs_dict
|
|
71
|
+
else:
|
|
72
|
+
raise ValueError(f"Invalid init_params: {init_params}")
|
|
73
|
+
|
|
74
|
+
assert len(self._cfgs_dict
|
|
75
|
+
) == len_init_params, f"Invalid init_params: {init_params}"
|
|
76
|
+
|
|
77
|
+
def __len__(self) -> int:
|
|
78
|
+
return len(self._cfgs_dict)
|
|
79
|
+
|
|
80
|
+
def get_cfgs(self, use_list: bool = True) -> list[dict]:
|
|
81
|
+
if use_list:
|
|
82
|
+
return list(self._cfgs_dict.values())
|
|
83
|
+
else:
|
|
84
|
+
return self._cfgs_dict
|
|
85
|
+
|
|
86
|
+
def add_cfgs(
|
|
87
|
+
self,
|
|
88
|
+
node_cfgs: list[dict] | dict[str, dict] | HexNodeConfig,
|
|
89
|
+
):
|
|
90
|
+
new_cfgs = {}
|
|
91
|
+
if isinstance(node_cfgs, list):
|
|
92
|
+
new_cfgs = {cfg["name"]: cfg for cfg in node_cfgs}
|
|
93
|
+
elif isinstance(node_cfgs, dict):
|
|
94
|
+
new_cfgs = node_cfgs
|
|
95
|
+
elif isinstance(node_cfgs, HexNodeConfig):
|
|
96
|
+
new_cfgs = node_cfgs.get_cfgs(use_list=False)
|
|
97
|
+
else:
|
|
98
|
+
raise ValueError(f"Invalid node_cfgs: {node_cfgs}")
|
|
99
|
+
|
|
100
|
+
dict_update(self._cfgs_dict, new_cfgs, add_new=True)
|
|
101
|
+
|
|
102
|
+
def __str__(self) -> str:
|
|
103
|
+
print_str = f"[HexNodeConfig] Total {len(self._cfgs_dict)} nodes:\n"
|
|
104
|
+
for name in self._cfgs_dict.keys():
|
|
105
|
+
print_str += f" - {name}\n"
|
|
106
|
+
return print_str
|
|
107
|
+
|
|
108
|
+
@staticmethod
|
|
109
|
+
def parse_node_params_dict(
|
|
110
|
+
node_params_dict: dict,
|
|
111
|
+
node_default_params_dict: dict,
|
|
112
|
+
) -> HexNodeConfig:
|
|
113
|
+
node_dict = {}
|
|
114
|
+
for cur_name, cur_default_params in node_default_params_dict.items():
|
|
115
|
+
if cur_name in node_params_dict.keys():
|
|
116
|
+
dict_update(cur_default_params, node_params_dict[cur_name])
|
|
117
|
+
node_dict[cur_name] = cur_default_params
|
|
118
|
+
return HexNodeConfig(node_dict)
|
|
119
|
+
|
|
120
|
+
@staticmethod
|
|
121
|
+
def get_launch_params_cfgs(
|
|
122
|
+
launch_params_dict: dict,
|
|
123
|
+
launch_default_params_dict: dict,
|
|
124
|
+
launch_path_dict: dict,
|
|
125
|
+
) -> HexNodeConfig:
|
|
126
|
+
cfg_list = []
|
|
127
|
+
for launch_name, launch_path in launch_path_dict.items():
|
|
128
|
+
node_default_params_dict = launch_default_params_dict.get(
|
|
129
|
+
launch_name, {})
|
|
130
|
+
|
|
131
|
+
node_params_dict = {}
|
|
132
|
+
if launch_name in launch_params_dict.keys():
|
|
133
|
+
node_params_dict = launch_params_dict[launch_name]
|
|
134
|
+
else:
|
|
135
|
+
for node_name in node_default_params_dict.keys():
|
|
136
|
+
if node_name in launch_params_dict.keys():
|
|
137
|
+
node_params_dict[node_name] = launch_params_dict[
|
|
138
|
+
node_name]
|
|
139
|
+
|
|
140
|
+
launch_update_cfg = HexNodeConfig.parse_node_params_dict(
|
|
141
|
+
node_params_dict,
|
|
142
|
+
node_default_params_dict,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
cfg_list.append(
|
|
146
|
+
HexNodeConfig.get_node_cfgs_from_launch(
|
|
147
|
+
launch_path,
|
|
148
|
+
launch_update_cfg,
|
|
149
|
+
))
|
|
150
|
+
|
|
151
|
+
final_cfg = HexNodeConfig()
|
|
152
|
+
for cfg in cfg_list:
|
|
153
|
+
# use name as key to make sure every node has a unique name
|
|
154
|
+
final_cfg.add_cfgs(cfg.get_cfgs(use_list=True))
|
|
155
|
+
print(f"final_cfg: {final_cfg}")
|
|
156
|
+
return final_cfg
|
|
157
|
+
|
|
158
|
+
@staticmethod
|
|
159
|
+
def get_node_cfgs_from_launch(
|
|
160
|
+
launch_path: str,
|
|
161
|
+
params: dict | HexNodeConfig = {},
|
|
162
|
+
) -> HexNodeConfig:
|
|
163
|
+
# normalize the path
|
|
164
|
+
launch_path = os.path.abspath(launch_path)
|
|
165
|
+
if not os.path.exists(launch_path):
|
|
166
|
+
raise FileNotFoundError(f"Launch file not found: {launch_path}")
|
|
167
|
+
|
|
168
|
+
# load the module dynamically
|
|
169
|
+
spec = importlib.util.spec_from_file_location("launch_module",
|
|
170
|
+
launch_path)
|
|
171
|
+
if spec is None or spec.loader is None:
|
|
172
|
+
raise ImportError(f"Failed to load module from: {launch_path}")
|
|
173
|
+
|
|
174
|
+
# load module
|
|
175
|
+
launch_module = importlib.util.module_from_spec(spec)
|
|
176
|
+
sys.modules["launch_module"] = launch_module
|
|
177
|
+
spec.loader.exec_module(launch_module)
|
|
178
|
+
|
|
179
|
+
# check if `get_node_cfgs` function exists
|
|
180
|
+
if not hasattr(launch_module, "get_node_cfgs"):
|
|
181
|
+
raise AttributeError(
|
|
182
|
+
f"Function 'get_node_cfgs' not found in {launch_path}")
|
|
183
|
+
|
|
184
|
+
# call `get_node_cfgs` function
|
|
185
|
+
get_node_cfgs_func = getattr(launch_module, "get_node_cfgs")
|
|
186
|
+
if isinstance(params, dict):
|
|
187
|
+
print("params is dict")
|
|
188
|
+
node_cfgs = get_node_cfgs_func(params)
|
|
189
|
+
elif isinstance(params, HexNodeConfig):
|
|
190
|
+
print("params is HexNodeConfig")
|
|
191
|
+
node_cfgs = get_node_cfgs_func(params.get_cfgs(use_list=False))
|
|
192
|
+
else:
|
|
193
|
+
raise ValueError(f"Invalid params: {params}")
|
|
194
|
+
return node_cfgs
|
|
195
|
+
|
|
196
|
+
|
|
32
197
|
class HexLaunch:
|
|
33
198
|
|
|
34
199
|
def __init__(
|
|
35
200
|
self,
|
|
36
|
-
node_cfgs:
|
|
201
|
+
node_cfgs: list[dict] | dict[str, dict] | HexNodeConfig,
|
|
37
202
|
log_dir: str = "logs",
|
|
38
203
|
min_level: int = HEX_LOG_LEVEL["warn"],
|
|
39
204
|
):
|
|
40
|
-
|
|
41
|
-
|
|
205
|
+
if isinstance(node_cfgs, list):
|
|
206
|
+
node_cfgs = HexNodeConfig(node_cfgs)
|
|
207
|
+
elif isinstance(node_cfgs, dict):
|
|
208
|
+
node_cfgs = HexNodeConfig(node_cfgs)
|
|
209
|
+
elif isinstance(node_cfgs, HexNodeConfig):
|
|
210
|
+
node_cfgs = node_cfgs
|
|
211
|
+
else:
|
|
212
|
+
raise ValueError(f"Invalid node_cfgs: {node_cfgs}")
|
|
213
|
+
self.__node_cfgs = node_cfgs.get_cfgs(use_list=True)
|
|
214
|
+
self.__state: dict[str, dict] = {}
|
|
42
215
|
self.__stop_event = threading.Event()
|
|
43
216
|
self.__log_dir = Path(log_dir)
|
|
44
217
|
self.__log_dir.mkdir(parents=True, exist_ok=True)
|
|
@@ -102,20 +275,12 @@ class HexLaunch:
|
|
|
102
275
|
with open(cfg_path, "r", encoding="utf-8") as f:
|
|
103
276
|
cfg_file = json.load(f)
|
|
104
277
|
cfg_obj.update(cfg_file)
|
|
105
|
-
|
|
278
|
+
dict_update(cfg_obj, node_cfg.get("cfg", {}))
|
|
106
279
|
cfg_str = json.dumps(cfg_obj)
|
|
107
280
|
|
|
108
281
|
# build cmd
|
|
109
282
|
return [python_exe, "-u", str(node_path)] + ["--cfg", cfg_str]
|
|
110
283
|
|
|
111
|
-
def __dict_update(self, dict_raw: dict, dict_new: dict):
|
|
112
|
-
for key, value in dict_new.items():
|
|
113
|
-
if key in dict_raw:
|
|
114
|
-
if isinstance(dict_raw[key], dict) and isinstance(value, dict):
|
|
115
|
-
self.__dict_update(dict_raw[key], value)
|
|
116
|
-
else:
|
|
117
|
-
dict_raw[key] = value
|
|
118
|
-
|
|
119
284
|
def __stream_printer(
|
|
120
285
|
self,
|
|
121
286
|
prefix: str,
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
################################################################
|
|
8
8
|
|
|
9
9
|
from .mujoco_base import HexMujocoBase, HexMujocoClientBase, HexMujocoServerBase
|
|
10
|
-
from .
|
|
10
|
+
from .archer_y6 import HexMujocoArcherY6, HexMujocoArcherY6Client, HexMujocoArcherY6Server
|
|
11
11
|
from .e3_desktop import HexMujocoE3Desktop, HexMujocoE3DesktopClient, HexMujocoE3DesktopServer
|
|
12
12
|
|
|
13
13
|
__all__ = [
|
|
@@ -16,10 +16,10 @@ __all__ = [
|
|
|
16
16
|
"HexMujocoClientBase",
|
|
17
17
|
"HexMujocoServerBase",
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
19
|
+
# archer_y6
|
|
20
|
+
"HexMujocoArcherY6",
|
|
21
|
+
"HexMujocoArcherY6Client",
|
|
22
|
+
"HexMujocoArcherY6Server",
|
|
23
23
|
|
|
24
24
|
# e3_desktop
|
|
25
25
|
"HexMujocoE3Desktop",
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
# Date : 2025-09-15
|
|
7
7
|
################################################################
|
|
8
8
|
|
|
9
|
-
from .
|
|
10
|
-
from .
|
|
11
|
-
from .
|
|
9
|
+
from .mujoco_archer_y6 import HexMujocoArcherY6
|
|
10
|
+
from .mujoco_archer_y6_cli import HexMujocoArcherY6Client
|
|
11
|
+
from .mujoco_archer_y6_srv import HexMujocoArcherY6Server
|
|
12
12
|
|
|
13
13
|
__all__ = [
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
14
|
+
"HexMujocoArcherY6",
|
|
15
|
+
"HexMujocoArcherY6Client",
|
|
16
|
+
"HexMujocoArcherY6Server",
|
|
17
17
|
]
|
|
@@ -36,7 +36,7 @@ MUJOCO_CONFIG = {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
class
|
|
39
|
+
class HexMujocoArcherY6(HexMujocoBase):
|
|
40
40
|
|
|
41
41
|
def __init__(
|
|
42
42
|
self,
|
|
@@ -219,8 +219,8 @@ class HexMujocoArcherD6y(HexMujocoBase):
|
|
|
219
219
|
tau_cmds = None
|
|
220
220
|
if not self.__tau_ctrl:
|
|
221
221
|
cmd_pos = None
|
|
222
|
-
tar_vel = np.
|
|
223
|
-
cmd_tor = np.
|
|
222
|
+
tar_vel = np.zeros(cmds.shape[0])
|
|
223
|
+
cmd_tor = np.zeros(cmds.shape[0])
|
|
224
224
|
cmd_kp = self.__mit_kp.copy()
|
|
225
225
|
cmd_kd = self.__mit_kd.copy()
|
|
226
226
|
if len(cmds.shape) == 1:
|
|
@@ -286,4 +286,4 @@ class HexMujocoArcherD6y(HexMujocoBase):
|
|
|
286
286
|
self.__depth_cam.close()
|
|
287
287
|
if not self.__headless:
|
|
288
288
|
self.__viewer.close()
|
|
289
|
-
hex_log(HEX_LOG_LEVEL["info"], "
|
|
289
|
+
hex_log(HEX_LOG_LEVEL["info"], "HexMujocoArcherY6 closed")
|
|
@@ -11,7 +11,7 @@ from hex_zmq_servers.zmq_base import HexSafeValue
|
|
|
11
11
|
|
|
12
12
|
try:
|
|
13
13
|
from ..mujoco_base import HexMujocoServerBase
|
|
14
|
-
from .
|
|
14
|
+
from .mujoco_archer_y6 import HexMujocoArcherY6
|
|
15
15
|
except (ImportError, ValueError):
|
|
16
16
|
import sys
|
|
17
17
|
from pathlib import Path
|
|
@@ -20,7 +20,7 @@ except (ImportError, ValueError):
|
|
|
20
20
|
if str(project_root) not in sys.path:
|
|
21
21
|
sys.path.insert(0, str(project_root))
|
|
22
22
|
from hex_zmq_servers.mujoco.mujoco_base import HexMujocoServerBase
|
|
23
|
-
from hex_zmq_servers.mujoco.
|
|
23
|
+
from hex_zmq_servers.mujoco.archer_y6.mujoco_archer_y6 import HexMujocoArcherY6
|
|
24
24
|
|
|
25
25
|
NET_CONFIG = {
|
|
26
26
|
"ip": "127.0.0.1",
|
|
@@ -38,7 +38,7 @@ MUJOCO_CONFIG = {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class
|
|
41
|
+
class HexMujocoArcherY6Server(HexMujocoServerBase):
|
|
42
42
|
|
|
43
43
|
def __init__(
|
|
44
44
|
self,
|
|
@@ -48,7 +48,7 @@ class HexMujocoArcherD6yServer(HexMujocoServerBase):
|
|
|
48
48
|
HexMujocoServerBase.__init__(self, net_config)
|
|
49
49
|
|
|
50
50
|
# mujoco
|
|
51
|
-
self._device =
|
|
51
|
+
self._device = HexMujocoArcherY6(params_config)
|
|
52
52
|
|
|
53
53
|
# values
|
|
54
54
|
self._states_robot_value = HexSafeValue()
|
|
@@ -139,4 +139,4 @@ if __name__ == "__main__":
|
|
|
139
139
|
args = parser.parse_args()
|
|
140
140
|
cfg = json.loads(args.cfg)
|
|
141
141
|
|
|
142
|
-
hex_server_helper(cfg,
|
|
142
|
+
hex_server_helper(cfg, HexMujocoArcherY6Server)
|
|
@@ -305,8 +305,8 @@ class HexMujocoE3Desktop(HexMujocoBase):
|
|
|
305
305
|
tau_cmds = None
|
|
306
306
|
if not self.__tau_ctrl:
|
|
307
307
|
cmd_pos = None
|
|
308
|
-
tar_vel = np.
|
|
309
|
-
cmd_tor = np.
|
|
308
|
+
tar_vel = np.zeros(cmds.shape[0])
|
|
309
|
+
cmd_tor = np.zeros(cmds.shape[0])
|
|
310
310
|
cmd_kp = self.__mit_kp.copy()
|
|
311
311
|
cmd_kd = self.__mit_kd.copy()
|
|
312
312
|
if len(cmds.shape) == 1:
|
|
@@ -14,16 +14,16 @@ import os
|
|
|
14
14
|
|
|
15
15
|
urdf_dir = os.path.join(os.path.dirname(__file__), "urdf")
|
|
16
16
|
HEXARM_URDF_PATH_DICT = {
|
|
17
|
-
"
|
|
18
|
-
f"{urdf_dir}/
|
|
19
|
-
"
|
|
20
|
-
f"{urdf_dir}/
|
|
21
|
-
"
|
|
22
|
-
f"{urdf_dir}/
|
|
23
|
-
"
|
|
24
|
-
f"{urdf_dir}/
|
|
25
|
-
"
|
|
26
|
-
f"{urdf_dir}/
|
|
17
|
+
"archer_y6_empty":
|
|
18
|
+
f"{urdf_dir}/archer_y6/empty.urdf",
|
|
19
|
+
"archer_y6_gp100":
|
|
20
|
+
f"{urdf_dir}/archer_y6/gp100.urdf",
|
|
21
|
+
"archer_y6_gp100_handle":
|
|
22
|
+
f"{urdf_dir}/archer_y6/gp100_handle.urdf",
|
|
23
|
+
"archer_y6_gp100_p050":
|
|
24
|
+
f"{urdf_dir}/archer_y6/gp100_p050.urdf",
|
|
25
|
+
"archer_y6_gp100_p050_handle":
|
|
26
|
+
f"{urdf_dir}/archer_y6/gp100_p050_handle.urdf",
|
|
27
27
|
"archer_l6y_empty":
|
|
28
28
|
f"{urdf_dir}/archer_l6y/empty.urdf",
|
|
29
29
|
"archer_l6y_gp100":
|
{hex_zmq_servers-0.2.4 → hex_zmq_servers-0.3.0}/hex_zmq_servers/robot/hexarm/robot_hexarm.py
RENAMED
|
@@ -25,7 +25,7 @@ ROBOT_CONFIG = {
|
|
|
25
25
|
"device_ip": "172.18.8.161",
|
|
26
26
|
"device_port": 8439,
|
|
27
27
|
"control_hz": 250,
|
|
28
|
-
"arm_type": "
|
|
28
|
+
"arm_type": "archer_y6",
|
|
29
29
|
"use_gripper": True,
|
|
30
30
|
"mit_kp": [200.0, 200.0, 200.0, 75.0, 15.0, 15.0, 20.0],
|
|
31
31
|
"mit_kd": [12.5, 12.5, 12.5, 6.0, 0.31, 0.31, 1.0],
|
|
@@ -33,7 +33,7 @@ ROBOT_CONFIG = {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
HEX_DEVICE_TYPE_DICT = {
|
|
36
|
-
"
|
|
36
|
+
"archer_y6": 16,
|
|
37
37
|
"archer_l6y": 17,
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -93,7 +93,7 @@ class HexRobotHexarm(HexRobotBase):
|
|
|
93
93
|
self.__gripper_dofs = 0
|
|
94
94
|
self.__gripper = None
|
|
95
95
|
if use_gripper:
|
|
96
|
-
self.__gripper = self.__hex_api.
|
|
96
|
+
self.__gripper = self.__hex_api.find_optional_device_by_id(1)
|
|
97
97
|
if self.__gripper is not None:
|
|
98
98
|
self.__gripper_dofs = len(self.__gripper)
|
|
99
99
|
self._limits += [self.__gripper.get_joint_limits()]
|