hex-zmq-servers 0.2.0__tar.gz → 0.2.2__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.
Files changed (137) hide show
  1. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/MANIFEST.in +1 -0
  2. hex_zmq_servers-0.2.2/PKG-INFO +117 -0
  3. hex_zmq_servers-0.2.2/README.md +82 -0
  4. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/__init__.py +19 -7
  5. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/__init__.py +13 -6
  6. hex_zmq_servers-0.2.2/hex_zmq_servers/config/mujoco_archer_d6y.json +34 -0
  7. hex_zmq_servers-0.2.2/hex_zmq_servers/config/mujoco_e3_desktop.json +34 -0
  8. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/assets.xml +17 -0
  9. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_base_link.STL +0 -0
  10. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_left_helper_link.STL +0 -0
  11. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_left_link_1.STL +0 -0
  12. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_left_link_2.STL +0 -0
  13. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_right_helper_link.STL +0 -0
  14. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_right_link_1.STL +0 -0
  15. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_right_link_2.STL +0 -0
  16. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/robot.xml +89 -0
  17. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/scene.xml +5 -5
  18. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/archer_d6y/model/setting.xml +37 -0
  19. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y.py +44 -10
  20. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/assets.xml +18 -0
  21. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_base_link.STL +0 -0
  22. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_helper_link.STL +0 -0
  23. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_1.STL +0 -0
  24. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_2.STL +0 -0
  25. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_helper_link.STL +0 -0
  26. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_1.STL +0 -0
  27. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_2.STL +0 -0
  28. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/robot.xml +176 -0
  29. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +6 -6
  30. hex_zmq_servers-0.2.2/hex_zmq_servers/mujoco/e3_desktop/model/setting.xml +72 -0
  31. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +62 -19
  32. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +1 -1
  33. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/mujoco_base.py +34 -0
  34. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/__init__.py +4 -1
  35. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/__init__.py +47 -0
  36. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/hexarm/robot_hexarm.py +5 -3
  37. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +1 -1
  38. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/hexarm/robot_hexarm_srv.py +1 -1
  39. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_d6y/empty.urdf +207 -0
  40. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100.urdf +207 -0
  41. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100_handle.urdf +207 -0
  42. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100_p050.urdf +207 -0
  43. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100_p050_handle.urdf +207 -0
  44. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/empty.urdf +206 -0
  45. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100.urdf +206 -0
  46. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_handle.urdf +206 -0
  47. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050.urdf +206 -0
  48. hex_zmq_servers-0.2.2/hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050_handle.urdf +206 -0
  49. hex_zmq_servers-0.2.2/hex_zmq_servers.egg-info/PKG-INFO +117 -0
  50. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers.egg-info/SOURCES.txt +25 -20
  51. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers.egg-info/requires.txt +8 -2
  52. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/pyproject.toml +7 -6
  53. hex_zmq_servers-0.2.0/PKG-INFO +0 -37
  54. hex_zmq_servers-0.2.0/README.md +0 -3
  55. hex_zmq_servers-0.2.0/hex_zmq_servers/config/mujoco_archer_d6y.json +0 -15
  56. hex_zmq_servers-0.2.0/hex_zmq_servers/config/mujoco_e3_desktop.json +0 -15
  57. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/assets.xml +0 -19
  58. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_base_link.STL +0 -0
  59. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow1_link.STL +0 -0
  60. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow2_link.STL +0 -0
  61. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow3_link.STL +0 -0
  62. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow_loop_link.STL +0 -0
  63. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide1_link.STL +0 -0
  64. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide2_link.STL +0 -0
  65. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide3_link.STL +0 -0
  66. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide_loop_link.STL +0 -0
  67. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/robot.xml +0 -102
  68. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/archer_d6y/model/setting.xml +0 -37
  69. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/assets.xml +0 -20
  70. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/link_camera.STL +0 -0
  71. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_base_link.STL +0 -0
  72. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow1_link.STL +0 -0
  73. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow2_link.STL +0 -0
  74. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow3_link.STL +0 -0
  75. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow_loop_link.STL +0 -0
  76. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide1_link.STL +0 -0
  77. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide2_link.STL +0 -0
  78. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide3_link.STL +0 -0
  79. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide_loop_link.STL +0 -0
  80. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/robot.xml +0 -202
  81. hex_zmq_servers-0.2.0/hex_zmq_servers/mujoco/e3_desktop/model/setting.xml +0 -72
  82. hex_zmq_servers-0.2.0/hex_zmq_servers/robot/hexarm/__init__.py +0 -17
  83. hex_zmq_servers-0.2.0/hex_zmq_servers.egg-info/PKG-INFO +0 -37
  84. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/LICENSE +0 -0
  85. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/berxel/__init__.py +0 -0
  86. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/berxel/cam_berxel.py +0 -0
  87. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/berxel/cam_berxel_cli.py +0 -0
  88. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/berxel/cam_berxel_srv.py +0 -0
  89. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/cam_base.py +0 -0
  90. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/dummy/__init__.py +0 -0
  91. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/dummy/cam_dummy.py +0 -0
  92. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/dummy/cam_dummy_cli.py +0 -0
  93. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/cam/dummy/cam_dummy_srv.py +0 -0
  94. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/config/cam_berxel.json +0 -0
  95. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/config/cam_dummy.json +0 -0
  96. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/config/robot_dummy.json +0 -0
  97. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/config/robot_gello.json +0 -0
  98. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/config/robot_hexarm.json +0 -0
  99. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/config/zmq_dummy.json +0 -0
  100. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/device_base.py +0 -0
  101. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/hex_launch.py +0 -0
  102. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/__init__.py +0 -0
  103. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/__init__.py +0 -0
  104. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/arm_base_link.STL +0 -0
  105. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/arm_link_1.STL +0 -0
  106. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/arm_link_2.STL +0 -0
  107. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/arm_link_3.STL +0 -0
  108. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/arm_link_4.STL +0 -0
  109. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/arm_link_5.STL +0 -0
  110. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/camera_link.STL +0 -0
  111. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/model/assets/table_link.STL +0 -0
  112. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y_cli.py +0 -0
  113. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y_srv.py +0 -0
  114. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/__init__.py +0 -0
  115. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_base_link.STL +0 -0
  116. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_1.STL +0 -0
  117. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_2.STL +0 -0
  118. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_3.STL +0 -0
  119. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_4.STL +0 -0
  120. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_5.STL +0 -0
  121. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/camera_link.STL +0 -0
  122. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/e3_desktop_base_link.STL +0 -0
  123. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/model/assets/table_link.STL +0 -0
  124. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py +0 -0
  125. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/dummy/__init__.py +0 -0
  126. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/dummy/robot_dummy.py +0 -0
  127. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/dummy/robot_dummy_cli.py +0 -0
  128. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/dummy/robot_dummy_srv.py +0 -0
  129. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/gello/__init__.py +0 -0
  130. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/gello/robot_gello.py +0 -0
  131. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/gello/robot_gello_cli.py +0 -0
  132. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/gello/robot_gello_srv.py +0 -0
  133. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/robot/robot_base.py +0 -0
  134. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers/zmq_base.py +0 -0
  135. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers.egg-info/dependency_links.txt +0 -0
  136. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/hex_zmq_servers.egg-info/top_level.txt +0 -0
  137. {hex_zmq_servers-0.2.0 → hex_zmq_servers-0.2.2}/setup.cfg +0 -0
@@ -5,6 +5,7 @@ include requirements.txt
5
5
  recursive-include package_name *
6
6
  recursive-include hex_zmq_servers/mujoco/archer_d6y/model * *
7
7
  recursive-include hex_zmq_servers/mujoco/e3_desktop/model * *
8
+ recursive-include hex_zmq_servers/robot/hexarm/urdf * *
8
9
  recursive-include hex_zmq_servers/config *
9
10
 
10
11
  recursive-exclude * *.pyc
@@ -0,0 +1,117 @@
1
+ Metadata-Version: 2.4
2
+ Name: hex_zmq_servers
3
+ Version: 0.2.2
4
+ Summary: HEXFELLOW ZMQ Servers
5
+ Author-email: Dong Zhaorui <joray.dong@hexfellow.com>
6
+ Maintainer-email: jecjune <zejun.chen@hexfellow.com>, Dong Zhaorui <joray.dong@hexfellow.com>
7
+ License-Expression: Apache-2.0
8
+ Project-URL: Homepage, https://github.com/hexfellow/hex_zmq_servers
9
+ Project-URL: Repository, https://github.com/hexfellow/hex_zmq_servers.git
10
+ Project-URL: Bug Tracker, https://github.com/hexfellow/hex_zmq_servers/issues
11
+ Project-URL: Documentation, https://github.com/hexfellow/hex_zmq_servers/wiki
12
+ Keywords: hex_zmq_servers
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Requires-Python: >=3.8
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: pyzmq>=27.0.1
25
+ Requires-Dist: opencv-python>=4.2
26
+ Requires-Dist: mujoco>=3.3.3
27
+ Requires-Dist: hex_device>=1.2.1
28
+ Requires-Dist: hex_robo_utils>=0.1.17
29
+ Requires-Dist: dynamixel-sdk==3.8.4
30
+ Provides-Extra: berxel
31
+ Requires-Dist: berxel_py_wrapper>=2.0; extra == "berxel"
32
+ Provides-Extra: all
33
+ Requires-Dist: berxel_py_wrapper>=2.0; extra == "all"
34
+ Dynamic: license-file
35
+
36
+ # hex_zmq_servers
37
+
38
+ ## Introduction
39
+
40
+ **`hex_zmq_servers`** is a comprehensive distributed device control framework based on ZeroMQ, providing efficient client-server communication for HEXFELLOW devices.
41
+
42
+ ## Project Structure
43
+
44
+ ```bash
45
+ hex_zmq_servers/
46
+ ├── hex_zmq_servers/ # Core library
47
+ │ ├── robot/ # Robot devices
48
+ │ ├── cam/ # Camera devices
49
+ │ ├── mujoco/ # Mujoco simulation devices
50
+ │ └── config/ # Default configuration files
51
+ ├── examples/ # Example code
52
+ │ ├── basic/ # Basic examples (single device)
53
+ │ └── adv/ # Advanced examples (multi-device coordination)
54
+ └── venv.sh # Virtual environment script
55
+ ```
56
+
57
+ ## Devices
58
+
59
+ ### Robot
60
+
61
+ - **dummy**: Dummy robot, for testing and development
62
+ - **gello**: GELLO robot, based on Dynamixel servo
63
+ - **hexarm**: HexArm robot of HEXFELLOW
64
+
65
+ ### Camera
66
+
67
+ - **dummy**: Dummy camera, for testing and development
68
+ - **berxel**: Berxel depth camera, providing RGB and depth images
69
+
70
+ ### Mujoco
71
+
72
+ - **archer_d6y**: Physical simulation of Archer D6Y robot
73
+ - **e3_desktop**: Physical simulation of E3 Desktop robot
74
+
75
+ ## Installation
76
+
77
+ ### Install from PyPI
78
+
79
+ For those who only want to use the library in their projects, it is recommended to install it from PyPI.
80
+
81
+ ```bash
82
+ pip install hex_zmq_servers
83
+ ```
84
+
85
+ ### Install from Source Code
86
+
87
+ For those who want to test the examples or contribute to the project, you can install it from source code.
88
+
89
+ ```bash
90
+ git clone https://github.com/hexfellow/hex_zmq_servers.git
91
+ cd hex_zmq_servers
92
+ ./venv.sh --all
93
+ ```
94
+
95
+ ## Examples
96
+
97
+ There are two types of examples in the project:
98
+
99
+ - **basic/**: Basic examples, showing the usage of a single device
100
+ - **adv/**: Advanced examples, showing multi-device coordination
101
+
102
+ More details please refer to [examples/README.md](examples/README.md)
103
+
104
+ ## Contributions
105
+
106
+ Welcome to submit issues and pull requests!
107
+
108
+ ## License
109
+
110
+ Apache License 2.0
111
+
112
+ ## Contact
113
+
114
+ - Author: [Dong Zhaorui](https://github.com/IBNBlank)
115
+ - Maintainer: [jecjune](https://github.com/Jecjune)
116
+ - GitHub: [hex_zmq_servers](https://github.com/hexfellow/hex_zmq_servers)
117
+ - Issue Tracker: [hex_zmq_servers](https://github.com/hexfellow/hex_zmq_servers/issues)
@@ -0,0 +1,82 @@
1
+ # hex_zmq_servers
2
+
3
+ ## Introduction
4
+
5
+ **`hex_zmq_servers`** is a comprehensive distributed device control framework based on ZeroMQ, providing efficient client-server communication for HEXFELLOW devices.
6
+
7
+ ## Project Structure
8
+
9
+ ```bash
10
+ hex_zmq_servers/
11
+ ├── hex_zmq_servers/ # Core library
12
+ │ ├── robot/ # Robot devices
13
+ │ ├── cam/ # Camera devices
14
+ │ ├── mujoco/ # Mujoco simulation devices
15
+ │ └── config/ # Default configuration files
16
+ ├── examples/ # Example code
17
+ │ ├── basic/ # Basic examples (single device)
18
+ │ └── adv/ # Advanced examples (multi-device coordination)
19
+ └── venv.sh # Virtual environment script
20
+ ```
21
+
22
+ ## Devices
23
+
24
+ ### Robot
25
+
26
+ - **dummy**: Dummy robot, for testing and development
27
+ - **gello**: GELLO robot, based on Dynamixel servo
28
+ - **hexarm**: HexArm robot of HEXFELLOW
29
+
30
+ ### Camera
31
+
32
+ - **dummy**: Dummy camera, for testing and development
33
+ - **berxel**: Berxel depth camera, providing RGB and depth images
34
+
35
+ ### Mujoco
36
+
37
+ - **archer_d6y**: Physical simulation of Archer D6Y robot
38
+ - **e3_desktop**: Physical simulation of E3 Desktop robot
39
+
40
+ ## Installation
41
+
42
+ ### Install from PyPI
43
+
44
+ For those who only want to use the library in their projects, it is recommended to install it from PyPI.
45
+
46
+ ```bash
47
+ pip install hex_zmq_servers
48
+ ```
49
+
50
+ ### Install from Source Code
51
+
52
+ For those who want to test the examples or contribute to the project, you can install it from source code.
53
+
54
+ ```bash
55
+ git clone https://github.com/hexfellow/hex_zmq_servers.git
56
+ cd hex_zmq_servers
57
+ ./venv.sh --all
58
+ ```
59
+
60
+ ## Examples
61
+
62
+ There are two types of examples in the project:
63
+
64
+ - **basic/**: Basic examples, showing the usage of a single device
65
+ - **adv/**: Advanced examples, showing multi-device coordination
66
+
67
+ More details please refer to [examples/README.md](examples/README.md)
68
+
69
+ ## Contributions
70
+
71
+ Welcome to submit issues and pull requests!
72
+
73
+ ## License
74
+
75
+ Apache License 2.0
76
+
77
+ ## Contact
78
+
79
+ - Author: [Dong Zhaorui](https://github.com/IBNBlank)
80
+ - Maintainer: [jecjune](https://github.com/Jecjune)
81
+ - GitHub: [hex_zmq_servers](https://github.com/hexfellow/hex_zmq_servers)
82
+ - Issue Tracker: [hex_zmq_servers](https://github.com/hexfellow/hex_zmq_servers/issues)
@@ -15,7 +15,6 @@ from .zmq_base import HexZMQDummyClient, HexZMQDummyServer
15
15
 
16
16
  from .cam import HexCamBase, HexCamClientBase, HexCamServerBase
17
17
  from .cam import HexCamDummy, HexCamDummyClient, HexCamDummyServer
18
- from .cam import HexCamBerxel, HexCamBerxelClient, HexCamBerxelServer
19
18
 
20
19
  from .mujoco import HexMujocoBase, HexMujocoClientBase, HexMujocoServerBase
21
20
  from .mujoco import HexMujocoArcherD6y, HexMujocoArcherD6yClient, HexMujocoArcherD6yServer
@@ -24,7 +23,7 @@ from .mujoco import HexMujocoE3Desktop, HexMujocoE3DesktopClient, HexMujocoE3Des
24
23
  from .robot import HexRobotBase, HexRobotClientBase, HexRobotServerBase
25
24
  from .robot import HexRobotDummy, HexRobotDummyClient, HexRobotDummyServer
26
25
  from .robot import HexRobotGello, HexRobotGelloClient, HexRobotGelloServer
27
- from .robot import HexRobotHexarm, HexRobotHexarmClient, HexRobotHexarmServer
26
+ from .robot import HexRobotHexarm, HexRobotHexarmClient, HexRobotHexarmServer, HEXARM_URDF_PATH_DICT
28
27
 
29
28
  import os
30
29
 
@@ -32,7 +31,6 @@ file_dir = os.path.dirname(os.path.abspath(__file__))
32
31
  HEX_ZMQ_SERVERS_PATH_DICT = {
33
32
  "zmq_dummy": f"{file_dir}/zmq_base.py",
34
33
  "cam_dummy": f"{file_dir}/cam/dummy/cam_dummy_srv.py",
35
- "cam_berxel": f"{file_dir}/cam/berxel/cam_berxel_srv.py",
36
34
  "mujoco_archer_d6y":
37
35
  f"{file_dir}/mujoco/archer_d6y/mujoco_archer_d6y_srv.py",
38
36
  "mujoco_e3_desktop":
@@ -44,7 +42,6 @@ HEX_ZMQ_SERVERS_PATH_DICT = {
44
42
  HEX_ZMQ_CONFIGS_PATH_DICT = {
45
43
  "zmq_dummy": f"{file_dir}/config/zmq_dummy.json",
46
44
  "cam_dummy": f"{file_dir}/config/cam_dummy.json",
47
- "cam_berxel": f"{file_dir}/config/cam_berxel.json",
48
45
  "mujoco_archer_d6y": f"{file_dir}/config/mujoco_archer_d6y.json",
49
46
  "mujoco_e3_desktop": f"{file_dir}/config/mujoco_e3_desktop.json",
50
47
  "robot_dummy": f"{file_dir}/config/robot_dummy.json",
@@ -59,6 +56,7 @@ __all__ = [
59
56
  # path
60
57
  "HEX_ZMQ_SERVERS_PATH_DICT",
61
58
  "HEX_ZMQ_CONFIGS_PATH_DICT",
59
+ "HEXARM_URDF_PATH_DICT",
62
60
 
63
61
  # launch
64
62
  "HexLaunch",
@@ -85,9 +83,6 @@ __all__ = [
85
83
  "HexCamDummy",
86
84
  "HexCamDummyClient",
87
85
  "HexCamDummyServer",
88
- "HexCamBerxel",
89
- "HexCamBerxelClient",
90
- "HexCamBerxelServer",
91
86
 
92
87
  # mujoco
93
88
  "HexMujocoBase",
@@ -115,4 +110,21 @@ __all__ = [
115
110
  "HexRobotHexarmServer",
116
111
  ]
117
112
 
113
+ # Optional: berxel
114
+ try:
115
+ from .cam import HexCamBerxel, HexCamBerxelClient, HexCamBerxelServer
116
+ HEX_ZMQ_SERVERS_PATH_DICT[
117
+ "cam_berxel"] = f"{file_dir}/cam/berxel/cam_berxel_srv.py"
118
+ HEX_ZMQ_CONFIGS_PATH_DICT[
119
+ "cam_berxel"] = f"{file_dir}/config/cam_berxel.json"
120
+ __all__.extend([
121
+ "HexCamBerxel",
122
+ "HexCamBerxelClient",
123
+ "HexCamBerxelServer",
124
+ ])
125
+ except ImportError:
126
+ # berxel_py_wrapper not installed
127
+ # Install with: pip install hex_zmq_servers[berxel]
128
+ pass
129
+
118
130
  # print("#### Thanks for using hex_zmq_servers :D ####")
@@ -8,7 +8,6 @@
8
8
 
9
9
  from .cam_base import HexCamBase, HexCamClientBase, HexCamServerBase
10
10
  from .dummy import HexCamDummy, HexCamDummyClient, HexCamDummyServer
11
- from .berxel import HexCamBerxel, HexCamBerxelClient, HexCamBerxelServer
12
11
 
13
12
  __all__ = [
14
13
  # base
@@ -20,9 +19,17 @@ __all__ = [
20
19
  "HexCamDummy",
21
20
  "HexCamDummyClient",
22
21
  "HexCamDummyServer",
23
-
24
- # berxel
25
- "HexCamBerxel",
26
- "HexCamBerxelClient",
27
- "HexCamBerxelServer",
28
22
  ]
23
+
24
+ # Optional: berxel (requires berxel_py_wrapper)
25
+ try:
26
+ from .berxel import HexCamBerxel, HexCamBerxelClient, HexCamBerxelServer
27
+ __all__.extend([
28
+ "HexCamBerxel",
29
+ "HexCamBerxelClient",
30
+ "HexCamBerxelServer",
31
+ ])
32
+ except ImportError:
33
+ # berxel_py_wrapper not installed
34
+ # Install with: pip install hex_zmq_servers[berxel]
35
+ pass
@@ -0,0 +1,34 @@
1
+ {
2
+ "net": {
3
+ "ip": "127.0.0.1",
4
+ "port": 12345,
5
+ "client_timeout_ms": 200,
6
+ "server_timeout_ms": 1000,
7
+ "server_num_workers": 4
8
+ },
9
+ "params": {
10
+ "states_rate": 250,
11
+ "img_rate": 30,
12
+ "tau_ctrl": false,
13
+ "mit_kp": [
14
+ 200.0,
15
+ 200.0,
16
+ 200.0,
17
+ 75.0,
18
+ 15.0,
19
+ 15.0,
20
+ 20.0
21
+ ],
22
+ "mit_kd": [
23
+ 12.5,
24
+ 12.5,
25
+ 12.5,
26
+ 6.0,
27
+ 0.31,
28
+ 0.31,
29
+ 1.0
30
+ ],
31
+ "headless": false,
32
+ "sens_ts": true
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "net": {
3
+ "ip": "127.0.0.1",
4
+ "port": 12345,
5
+ "client_timeout_ms": 200,
6
+ "server_timeout_ms": 1000,
7
+ "server_num_workers": 4
8
+ },
9
+ "params": {
10
+ "states_rate": 250,
11
+ "img_rate": 30,
12
+ "tau_ctrl": false,
13
+ "mit_kp": [
14
+ 200.0,
15
+ 200.0,
16
+ 200.0,
17
+ 75.0,
18
+ 15.0,
19
+ 15.0,
20
+ 20.0
21
+ ],
22
+ "mit_kd": [
23
+ 12.5,
24
+ 12.5,
25
+ 12.5,
26
+ 6.0,
27
+ 0.31,
28
+ 0.31,
29
+ 1.0
30
+ ],
31
+ "headless": false,
32
+ "sens_ts": true
33
+ }
34
+ }
@@ -0,0 +1,17 @@
1
+ <mujocoinclude>
2
+ <mesh name="arm_base_link" file="arm_base_link.STL"/>
3
+ <mesh name="arm_link_1" file="arm_link_1.STL"/>
4
+ <mesh name="arm_link_2" file="arm_link_2.STL"/>
5
+ <mesh name="arm_link_3" file="arm_link_3.STL"/>
6
+ <mesh name="arm_link_4" file="arm_link_4.STL"/>
7
+ <mesh name="arm_link_5" file="arm_link_5.STL"/>
8
+ <mesh name="gripper_base_link" file="gripper_base_link.STL"/>
9
+ <mesh name="gripper_left_helper_link" file="gripper_left_helper_link.STL"/>
10
+ <mesh name="gripper_left_link_1" file="gripper_left_link_1.STL"/>
11
+ <mesh name="gripper_left_link_2" file="gripper_left_link_2.STL"/>
12
+ <mesh name="gripper_right_helper_link" file="gripper_right_helper_link.STL"/>
13
+ <mesh name="gripper_right_link_1" file="gripper_right_link_1.STL"/>
14
+ <mesh name="gripper_right_link_2" file="gripper_right_link_2.STL"/>
15
+ <mesh name="camera_link" file="camera_link.STL"/>
16
+ <mesh name="table_link" file="table_link.STL" scale="0.001 0.001 0.001"/>
17
+ </mujocoinclude>
@@ -0,0 +1,89 @@
1
+ <mujocoinclude>
2
+ <body name="base_link">
3
+ <inertial pos="-0.001 0.0318 0" quat="0.5 0.5 0.5 0.5" mass="0.687" diaginertia="0.0007 0.0006 0.0005"/>
4
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_base_link"/>
5
+
6
+ # link 1
7
+ <body name="link_1" pos="0 0 0.0665">
8
+ <inertial pos="0.008 -0.0023 0.0213" quat="0.707107 0.707107 0 0" mass="0.2154" diaginertia="0.0003 0.0003 0.0002"/>
9
+ <joint name="joint_1" pos="0 0 0" axis="0 0 1" range="-2.7 2.7" limited="true" armature="0.1" damping="3.0" frictionloss="1.0"/>
10
+ <geom type="mesh" rgba="0.92549 0.92549 0.92549 1" mesh="arm_link_1"/>
11
+
12
+ # link 2
13
+ <body name="link_2" pos="0.02 0 0.045">
14
+ <inertial pos="0.0001 -0.0028 0.1317" quat="0.999789 0.0205404 0 0" mass="1.3123" diaginertia="0.018 0.0177288 0.000671225"/>
15
+ <joint name="joint_2" pos="0 0 0" axis="0 1 0" range="-1.57 2.09" limited="true" armature="0.1" damping="3.0" frictionloss="1.0"/>
16
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_link_2"/>
17
+
18
+ # link 3
19
+ <body name="link_3" pos="0 0 0.264">
20
+ <inertial pos="-0.051 0.0008 0.1447" quat="0.996909 0.0323182 -0.0688403 -0.019747" mass="1.1083" diaginertia="0.0115968 0.0112369 0.00136632"/>
21
+ <joint name="joint_3" pos="0 0 0" axis="0 1 0" range="0 3.14" limited="true" armature="0.1" damping="3.0" frictionloss="1.0"/>
22
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_link_3"/>
23
+
24
+ # link 4
25
+ <body name="link_4" pos="-0.06 0 0.245">
26
+ <inertial pos="-0.0597 -0.001 0.0572" quat="0 0.92388 0 0.382683" mass="0.5398" diaginertia="0.0011 0.001 0.0005"/>
27
+ <joint name="joint_4" pos="0 0 0" axis="0 1 0" range="-1.57 1.57" limited="true" armature="0.1" damping="3.0" frictionloss="1.0"/>
28
+ <geom type="mesh" rgba="0.792157 0.792157 0.792157 1" mesh="arm_link_4"/>
29
+
30
+ # link 5
31
+ <body name="link_5" pos="-0.0553006 0 0.07025">
32
+ <inertial pos="0.0292 0.0001 -0.0107" quat="0.707107 0 0 0.707107" mass="0.3984" diaginertia="0.0003 0.0002 0.0002"/>
33
+ <joint name="joint_5" pos="0 0 0" axis="-1 0 0" range="-1.57 1.57" limited="true" armature="0.1" damping="3.0" frictionloss="1.0"/>
34
+ <geom type="mesh" rgba="0.898039 0.917647 0.929412 1" mesh="arm_link_5"/>
35
+
36
+ # gripper base link
37
+ <body name="gripper_base_link" pos="0.0547 0 0.02895" quat="0.707107 0.0 -0.707107 0.0">
38
+ <inertial pos="0.0141517 0.0120671 0.037083" quat="0.332786 0.772745 0.486202 0.236063" mass="0.404149" diaginertia="0.00182378 0.00177437 0.000232349"/>
39
+ <joint name="joint_6" pos="0 0 0" axis="1 0 0" range="-1.57 1.57" limited="true" armature="0.1" damping="3.0" frictionloss="1.0"/>
40
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_base_link"/>
41
+ <geom pos="0.04 0 0.12" quat="0.6830127 0.6830127 0.1830127 -0.1830127" type="mesh" rgba="0.1 0.1 0.1 1" mesh="camera_link" />
42
+ <camera name="end_camera" pos="0.066 0 0.105" quat="0.8660254 0.0 -0.5 0.0" fovy="50"/>
43
+
44
+ # gripper helper
45
+ <body name="gripper_left_helper_link" pos="0.057667 0.030604 2.5e-05">
46
+ <inertial pos="0.00299357 0.0232625 -5e-05" quat="0.996724 0 0 0.0808839" mass="0.00594562" diaginertia="2.74798e-06 1.47567e-06 1.34732e-06"/>
47
+ <joint name="gripper_left_help_joint" pos="0 0 0" axis="0 0 -1" range="0 1.52" limited="true" armature="0.01" damping="1.0" frictionloss="0.1" />
48
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_helper_link"/>
49
+ </body>
50
+ <body name="gripper_right_helper_link" pos="0.057667 -0.030604 2.5e-05">
51
+ <inertial pos="0.00299357 -0.0232625 -5e-05" quat="0.996724 0 0 -0.0808839" mass="0.00594562" diaginertia="2.74798e-06 1.47567e-06 1.34732e-06"/>
52
+ <joint name="gripper_right_help_joint" pos="0 0 0" axis="0 0 1" range="0 1.52" limited="true" armature="0.01" damping="1.0" frictionloss="0.1" />
53
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_helper_link"/>
54
+ </body>
55
+
56
+
57
+ # left gripper
58
+ <body name="gripper_left_link_1" pos="0.0721 0.014 2.5e-05">
59
+ <inertial pos="0.00299357 0.0232625 -5e-05" quat="0.996724 0 0 0.0808839" mass="0.00594562" diaginertia="2.74798e-06 1.47567e-06 1.34732e-06"/>
60
+ <joint name="gripper_left_joint_1" pos="0 0 0" axis="0 0 -1" range="0 1.52" limited="true" armature="0.01" damping="1.0" frictionloss="0.1" />
61
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_link_1"/>
62
+
63
+ <body name="gripper_left_link_2" pos="0.0085108 0.04927 0">
64
+ <inertial pos="0.0255016 0.00914642 -0.00175617" quat="0.424541 0.412629 0.571518 0.568216" mass="0.0339319" diaginertia="1.36949e-05 1.35554e-05 3.4264e-06"/>
65
+ <joint name="gripper_left_joint_2" pos="0 0 0" axis="0 0 1" range="0 1.52" limited="true" armature="0.01" damping="1.0" frictionloss="0.1" />
66
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_link_2"/>
67
+ </body>
68
+ </body>
69
+
70
+ # right gripper
71
+ <body name="gripper_right_link_1" pos="0.0721 -0.014 2.5e-05">
72
+ <inertial pos="0.00299357 -0.0232625 -5e-05" quat="0.996724 0 0 -0.0808839" mass="0.00594562" diaginertia="2.74798e-06 1.47567e-06 1.34732e-06"/>
73
+ <joint name="gripper_right_joint_1" pos="0 0 0" axis="0 0 1" range="0 1.52" limited="true" armature="0.01" damping="1.0" frictionloss="0.1" />
74
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_link_1"/>
75
+
76
+ <body name="gripper_right_link_2" pos="0.0085108 -0.04927 0">
77
+ <inertial pos="0.0255016 -0.00914642 -0.00175616" quat="0.568212 0.571522 0.412623 0.424547" mass="0.0339319" diaginertia="1.36948e-05 1.35553e-05 3.4264e-06"/>
78
+ <joint name="gripper_right_joint_2" pos="0 0 0" axis="0 0 -1" range="0 1.52" limited="true" armature="0.01" damping="1.0" frictionloss="0.1" />
79
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_link_2"/>
80
+ </body>
81
+ </body>
82
+ </body>
83
+ </body>
84
+ </body>
85
+ </body>
86
+ </body>
87
+ </body>
88
+ </body>
89
+ </mujocoinclude>
@@ -9,7 +9,7 @@
9
9
  <headlight diffuse="0.6 0.6 0.6" ambient="0.1 0.1 0.1" specular="0 0 0"/>
10
10
  <rgba haze="0.15 0.25 0.35 1"/>
11
11
  <global azimuth="120" elevation="-20"/>
12
- <map znear="0.01" zfar="50"/>
12
+ <map znear="0.001" zfar="50"/>
13
13
  </visual>
14
14
 
15
15
  <asset>
@@ -41,11 +41,11 @@
41
41
  <include file="setting.xml"/>
42
42
 
43
43
  <keyframe>
44
- # qpos: 14 + 7
45
- # ctrl: (6 + 2)
44
+ # qpos: 12 + 7
45
+ # ctrl: 7
46
46
  <key name="home" qpos="
47
- 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
47
+ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
48
48
  0.5 0.0 0.5 1.0 0.0 0.0 0.0" ctrl="
49
- 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0"/>
49
+ 0.0 0.0 0.0 0.0 0.0 0.0 0.0"/>
50
50
  </keyframe>
51
51
  </mujoco>
@@ -0,0 +1,37 @@
1
+ <mujocoinclude>
2
+ <contact>
3
+ <exclude body1="base_link" body2="link_1" />
4
+ <exclude body1="link_1" body2="link_2" />
5
+ <exclude body1="link_2" body2="link_3" />
6
+ <exclude body1="link_3" body2="link_4" />
7
+ <exclude body1="link_4" body2="link_5" />
8
+ <exclude body1="link_5" body2="gripper_base_link" />
9
+ <exclude body1="gripper_base_link" body2="gripper_left_helper_link" />
10
+ <exclude body1="gripper_left_helper_link" body2="gripper_left_link_1" />
11
+ <exclude body1="gripper_left_helper_link" body2="gripper_left_link_2" />
12
+ <exclude body1="gripper_left_link_1" body2="gripper_left_link_2" />
13
+ <exclude body1="gripper_base_link" body2="gripper_right_helper_link" />
14
+ <exclude body1="gripper_right_helper_link" body2="gripper_right_link_1" />
15
+ <exclude body1="gripper_right_helper_link" body2="gripper_right_link_2" />
16
+ <exclude body1="gripper_right_link_1" body2="gripper_right_link_2" />
17
+ </contact>
18
+
19
+ <equality>
20
+ <joint joint1="gripper_left_joint_1" joint2="gripper_left_joint_2" />
21
+ <joint joint1="gripper_left_joint_1" joint2="gripper_left_help_joint" />
22
+ <joint joint1="gripper_left_joint_1" joint2="gripper_right_joint_1" />
23
+ <joint joint1="gripper_left_joint_1" joint2="gripper_right_joint_2" />
24
+ <joint joint1="gripper_left_joint_1" joint2="gripper_right_help_joint" />
25
+ </equality>
26
+
27
+ <actuator>
28
+ <motor joint="joint_1" ctrlrange="-28 28" forcerange="-28 28"/>
29
+ <motor joint="joint_2" ctrlrange="-28 28" forcerange="-28 28"/>
30
+ <motor joint="joint_3" ctrlrange="-28 28" forcerange="-28 28"/>
31
+ <motor joint="joint_4" ctrlrange="-10 10" forcerange="-10 10"/>
32
+ <motor joint="joint_5" ctrlrange="-10 10" forcerange="-10 10"/>
33
+ <motor joint="joint_6" ctrlrange="-10 10" forcerange="-10 10"/>
34
+ <motor joint="gripper_left_joint_1" ctrlrange="-10 10" forcerange="-10 10"/>
35
+ </actuator>
36
+
37
+ </mujocoinclude>