hex-zmq-servers 0.3.9__py3-none-any.whl

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 (110) hide show
  1. hex_zmq_servers/__init__.py +173 -0
  2. hex_zmq_servers/cam/__init__.py +52 -0
  3. hex_zmq_servers/cam/berxel/__init__.py +17 -0
  4. hex_zmq_servers/cam/berxel/cam_berxel.py +282 -0
  5. hex_zmq_servers/cam/berxel/cam_berxel_cli.py +33 -0
  6. hex_zmq_servers/cam/berxel/cam_berxel_srv.py +79 -0
  7. hex_zmq_servers/cam/cam_base.py +189 -0
  8. hex_zmq_servers/cam/dummy/__init__.py +17 -0
  9. hex_zmq_servers/cam/dummy/cam_dummy.py +69 -0
  10. hex_zmq_servers/cam/dummy/cam_dummy_cli.py +29 -0
  11. hex_zmq_servers/cam/dummy/cam_dummy_srv.py +68 -0
  12. hex_zmq_servers/cam/realsense/__init__.py +17 -0
  13. hex_zmq_servers/cam/realsense/cam_realsense.py +159 -0
  14. hex_zmq_servers/cam/realsense/cam_realsense_cli.py +33 -0
  15. hex_zmq_servers/cam/realsense/cam_realsense_srv.py +78 -0
  16. hex_zmq_servers/cam/rgb/__init__.py +17 -0
  17. hex_zmq_servers/cam/rgb/cam_rgb.py +135 -0
  18. hex_zmq_servers/cam/rgb/cam_rgb_cli.py +43 -0
  19. hex_zmq_servers/cam/rgb/cam_rgb_srv.py +78 -0
  20. hex_zmq_servers/config/cam_berxel.json +18 -0
  21. hex_zmq_servers/config/cam_dummy.json +12 -0
  22. hex_zmq_servers/config/cam_realsense.json +17 -0
  23. hex_zmq_servers/config/cam_rgb.json +28 -0
  24. hex_zmq_servers/config/mujoco_archer_y6.json +37 -0
  25. hex_zmq_servers/config/mujoco_e3_desktop.json +41 -0
  26. hex_zmq_servers/config/robot_dummy.json +153 -0
  27. hex_zmq_servers/config/robot_gello.json +66 -0
  28. hex_zmq_servers/config/robot_hexarm.json +37 -0
  29. hex_zmq_servers/config/zmq_dummy.json +12 -0
  30. hex_zmq_servers/device_base.py +44 -0
  31. hex_zmq_servers/hex_launch.py +489 -0
  32. hex_zmq_servers/mujoco/__init__.py +28 -0
  33. hex_zmq_servers/mujoco/archer_y6/__init__.py +17 -0
  34. hex_zmq_servers/mujoco/archer_y6/model/assets/arm_base_link.STL +0 -0
  35. hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_1.STL +0 -0
  36. hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_2.STL +0 -0
  37. hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_3.STL +0 -0
  38. hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_4.STL +0 -0
  39. hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_5.STL +0 -0
  40. hex_zmq_servers/mujoco/archer_y6/model/assets/assets.xml +17 -0
  41. hex_zmq_servers/mujoco/archer_y6/model/assets/camera_link.STL +0 -0
  42. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_base_link.STL +0 -0
  43. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_left_helper_link.STL +0 -0
  44. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_left_link_1.STL +0 -0
  45. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_left_link_2.STL +0 -0
  46. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_helper_link.STL +0 -0
  47. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_link_1.STL +0 -0
  48. hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_link_2.STL +0 -0
  49. hex_zmq_servers/mujoco/archer_y6/model/assets/table_link.STL +0 -0
  50. hex_zmq_servers/mujoco/archer_y6/model/robot.xml +95 -0
  51. hex_zmq_servers/mujoco/archer_y6/model/scene.xml +51 -0
  52. hex_zmq_servers/mujoco/archer_y6/model/setting.xml +37 -0
  53. hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py +325 -0
  54. hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py +71 -0
  55. hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py +148 -0
  56. hex_zmq_servers/mujoco/e3_desktop/__init__.py +17 -0
  57. hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_base_link.STL +0 -0
  58. hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_1.STL +0 -0
  59. hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_2.STL +0 -0
  60. hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_3.STL +0 -0
  61. hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_4.STL +0 -0
  62. hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_5.STL +0 -0
  63. hex_zmq_servers/mujoco/e3_desktop/model/assets/assets.xml +18 -0
  64. hex_zmq_servers/mujoco/e3_desktop/model/assets/camera_link.STL +0 -0
  65. hex_zmq_servers/mujoco/e3_desktop/model/assets/e3_desktop_base_link.STL +0 -0
  66. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_base_link.STL +0 -0
  67. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_helper_link.STL +0 -0
  68. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_1.STL +0 -0
  69. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_2.STL +0 -0
  70. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_helper_link.STL +0 -0
  71. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_1.STL +0 -0
  72. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_2.STL +0 -0
  73. hex_zmq_servers/mujoco/e3_desktop/model/assets/table_link.STL +0 -0
  74. hex_zmq_servers/mujoco/e3_desktop/model/robot.xml +188 -0
  75. hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +53 -0
  76. hex_zmq_servers/mujoco/e3_desktop/model/setting.xml +72 -0
  77. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +449 -0
  78. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +289 -0
  79. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py +244 -0
  80. hex_zmq_servers/mujoco/mujoco_base.py +425 -0
  81. hex_zmq_servers/robot/__init__.py +37 -0
  82. hex_zmq_servers/robot/dummy/__init__.py +17 -0
  83. hex_zmq_servers/robot/dummy/robot_dummy.py +94 -0
  84. hex_zmq_servers/robot/dummy/robot_dummy_cli.py +29 -0
  85. hex_zmq_servers/robot/dummy/robot_dummy_srv.py +82 -0
  86. hex_zmq_servers/robot/gello/__init__.py +17 -0
  87. hex_zmq_servers/robot/gello/robot_gello.py +366 -0
  88. hex_zmq_servers/robot/gello/robot_gello_cli.py +29 -0
  89. hex_zmq_servers/robot/gello/robot_gello_srv.py +93 -0
  90. hex_zmq_servers/robot/hexarm/__init__.py +47 -0
  91. hex_zmq_servers/robot/hexarm/robot_hexarm.py +292 -0
  92. hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +37 -0
  93. hex_zmq_servers/robot/hexarm/robot_hexarm_srv.py +87 -0
  94. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/empty.urdf +206 -0
  95. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100.urdf +206 -0
  96. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_handle.urdf +206 -0
  97. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050.urdf +206 -0
  98. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050_handle.urdf +206 -0
  99. hex_zmq_servers/robot/hexarm/urdf/archer_y6/empty.urdf +207 -0
  100. hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100.urdf +207 -0
  101. hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_handle.urdf +207 -0
  102. hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_p050.urdf +207 -0
  103. hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_p050_handle.urdf +207 -0
  104. hex_zmq_servers/robot/robot_base.py +276 -0
  105. hex_zmq_servers/zmq_base.py +547 -0
  106. hex_zmq_servers-0.3.9.dist-info/METADATA +147 -0
  107. hex_zmq_servers-0.3.9.dist-info/RECORD +110 -0
  108. hex_zmq_servers-0.3.9.dist-info/WHEEL +5 -0
  109. hex_zmq_servers-0.3.9.dist-info/licenses/LICENSE +201 -0
  110. hex_zmq_servers-0.3.9.dist-info/top_level.txt +1 -0
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding:utf-8 -*-
3
+ ################################################################
4
+ # Copyright 2025 Dong Zhaorui. All rights reserved.
5
+ # Author: Dong Zhaorui 847235539@qq.com
6
+ # Date : 2025-09-16
7
+ ################################################################
8
+
9
+ import numpy as np
10
+ from collections import deque
11
+
12
+ try:
13
+ from ..mujoco_base import HexMujocoServerBase
14
+ from .mujoco_archer_y6 import HexMujocoArcherY6
15
+ except (ImportError, ValueError):
16
+ import sys
17
+ from pathlib import Path
18
+ this_file = Path(__file__).resolve()
19
+ project_root = this_file.parents[3]
20
+ if str(project_root) not in sys.path:
21
+ sys.path.insert(0, str(project_root))
22
+ from hex_zmq_servers.mujoco.mujoco_base import HexMujocoServerBase
23
+ from hex_zmq_servers.mujoco.archer_y6.mujoco_archer_y6 import HexMujocoArcherY6
24
+
25
+ NET_CONFIG = {
26
+ "ip": "127.0.0.1",
27
+ "port": 12345,
28
+ "realtime_mode": False,
29
+ "deque_maxlen": 10,
30
+ "client_timeout_ms": 200,
31
+ "server_timeout_ms": 1_000,
32
+ "server_num_workers": 4,
33
+ }
34
+
35
+ MUJOCO_CONFIG = {
36
+ "states_rate": 1000,
37
+ "img_rate": 30,
38
+ "headless": False,
39
+ "sens_ts": True,
40
+ }
41
+
42
+
43
+ class HexMujocoArcherY6Server(HexMujocoServerBase):
44
+
45
+ def __init__(
46
+ self,
47
+ net_config: dict = NET_CONFIG,
48
+ params_config: dict = MUJOCO_CONFIG,
49
+ ):
50
+ HexMujocoServerBase.__init__(self, net_config)
51
+
52
+ # mujoco
53
+ self._device = HexMujocoArcherY6(
54
+ params_config, net_config.get("realtime_mode", False))
55
+
56
+ # values
57
+ self._states_robot_queue = deque(maxlen=self._deque_maxlen)
58
+ self._states_obj_queue = deque(maxlen=self._deque_maxlen)
59
+ self._rgb_queue = deque(maxlen=self._deque_maxlen)
60
+ self._depth_queue = deque(maxlen=self._deque_maxlen)
61
+
62
+ def work_loop(self):
63
+ try:
64
+ self._device.work_loop([
65
+ self._states_robot_queue,
66
+ self._states_obj_queue,
67
+ self._cmds_queue,
68
+ self._rgb_queue,
69
+ self._depth_queue,
70
+ self._stop_event,
71
+ ])
72
+ finally:
73
+ self._device.close()
74
+
75
+ def _get_states(self, recv_hdr: dict):
76
+ try:
77
+ seq = recv_hdr["args"]
78
+ except KeyError:
79
+ print(f"\033[91m{recv_hdr['cmd']} requires `args`\033[0m")
80
+ return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
81
+
82
+ # get robot name
83
+ robot_name = recv_hdr["cmd"].split("_")[2]
84
+ if robot_name == "robot":
85
+ queue = self._states_robot_queue
86
+ elif robot_name == "obj":
87
+ queue = self._states_obj_queue
88
+ else:
89
+ raise ValueError(
90
+ f"unknown robot name: {robot_name} in {recv_hdr['cmd']}")
91
+
92
+ try:
93
+ ts, count, states = queue[
94
+ -1] if self._realtime_mode else queue.popleft()
95
+ except IndexError:
96
+ return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
97
+ except Exception as e:
98
+ print(f"\033[91m{recv_hdr['cmd']} failed: {e}\033[0m")
99
+ return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
100
+
101
+ delta = (count - seq) % self._max_seq_num
102
+ if delta >= 0 and delta < 1e6:
103
+ return {
104
+ "cmd": f"{recv_hdr['cmd']}_ok",
105
+ "ts": ts,
106
+ "args": count
107
+ }, states
108
+ else:
109
+ return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
110
+
111
+ def _process_request(self, recv_hdr: dict, recv_buf: np.ndarray):
112
+ if recv_hdr["cmd"] == "is_working":
113
+ return self.no_ts_hdr(recv_hdr, self._device.is_working()), None
114
+ elif recv_hdr["cmd"] == "seq_clear":
115
+ return self.no_ts_hdr(recv_hdr, self._seq_clear()), None
116
+ elif recv_hdr["cmd"] == "reset":
117
+ return self.no_ts_hdr(recv_hdr, self._device.reset()), None
118
+ elif recv_hdr["cmd"] == "get_dofs":
119
+ dofs = self._device.get_dofs()
120
+ return self.no_ts_hdr(recv_hdr, dofs is not None), dofs
121
+ elif recv_hdr["cmd"] == "get_limits":
122
+ limits = self._device.get_limits()
123
+ return self.no_ts_hdr(recv_hdr, limits is not None), limits
124
+ elif (recv_hdr["cmd"] == "get_states_robot") or (recv_hdr["cmd"]
125
+ == "get_states_obj"):
126
+ return self._get_states(recv_hdr)
127
+ elif recv_hdr["cmd"] == "set_cmds":
128
+ return self._set_cmds(recv_hdr, recv_buf)
129
+ elif recv_hdr["cmd"] == "get_intri":
130
+ intri = self._device.get_intri()
131
+ return self.no_ts_hdr(recv_hdr, intri is not None), intri
132
+ elif (recv_hdr["cmd"] == "get_rgb") or (recv_hdr["cmd"]
133
+ == "get_depth"):
134
+ return self._get_frame(recv_hdr)
135
+ else:
136
+ raise ValueError(f"unknown command: {recv_hdr['cmd']}")
137
+
138
+
139
+ if __name__ == "__main__":
140
+ import argparse, json
141
+ from hex_zmq_servers.zmq_base import hex_server_helper
142
+
143
+ parser = argparse.ArgumentParser()
144
+ parser.add_argument("--cfg", type=str, required=True)
145
+ args = parser.parse_args()
146
+ cfg = json.loads(args.cfg)
147
+
148
+ hex_server_helper(cfg, HexMujocoArcherY6Server)
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding:utf-8 -*-
3
+ ################################################################
4
+ # Copyright 2025 Dong Zhaorui. All rights reserved.
5
+ # Author: Dong Zhaorui 847235539@qq.com
6
+ # Date : 2025-09-15
7
+ ################################################################
8
+
9
+ from .mujoco_e3_desktop import HexMujocoE3Desktop
10
+ from .mujoco_e3_desktop_cli import HexMujocoE3DesktopClient
11
+ from .mujoco_e3_desktop_srv import HexMujocoE3DesktopServer
12
+
13
+ __all__ = [
14
+ "HexMujocoE3Desktop",
15
+ "HexMujocoE3DesktopClient",
16
+ "HexMujocoE3DesktopServer",
17
+ ]
@@ -0,0 +1,18 @@
1
+ <mujocoinclude>
2
+ <mesh name="e3_desktop_base_link" file="e3_desktop_base_link.STL"/>
3
+ <mesh name="arm_base_link" file="arm_base_link.STL"/>
4
+ <mesh name="arm_link_1" file="arm_link_1.STL"/>
5
+ <mesh name="arm_link_2" file="arm_link_2.STL"/>
6
+ <mesh name="arm_link_3" file="arm_link_3.STL"/>
7
+ <mesh name="arm_link_4" file="arm_link_4.STL"/>
8
+ <mesh name="arm_link_5" file="arm_link_5.STL"/>
9
+ <mesh name="gripper_base_link" file="gripper_base_link.STL"/>
10
+ <mesh name="gripper_left_helper_link" file="gripper_left_helper_link.STL"/>
11
+ <mesh name="gripper_left_link_1" file="gripper_left_link_1.STL"/>
12
+ <mesh name="gripper_left_link_2" file="gripper_left_link_2.STL"/>
13
+ <mesh name="gripper_right_helper_link" file="gripper_right_helper_link.STL"/>
14
+ <mesh name="gripper_right_link_1" file="gripper_right_link_1.STL"/>
15
+ <mesh name="gripper_right_link_2" file="gripper_right_link_2.STL"/>
16
+ <mesh name="camera_link" file="camera_link.STL"/>
17
+ <mesh name="table_link" file="table_link.STL" scale="0.001 0.001 0.001"/>
18
+ </mujocoinclude>
@@ -0,0 +1,188 @@
1
+ <mujocoinclude>
2
+ <body name="base_link">
3
+ <inertial pos="0.00137614 -0.0126343 0.0980263" quat="0.535082 0.473426 -0.464716 0.523062" mass="15.615" diaginertia="0.665833 0.618181 0.259713"/>
4
+ <geom type="mesh" rgba="1 1 1 1" mesh="e3_desktop_base_link" contype="0" conaffinity="0" />
5
+ <geom pos="0.0185 0.3 0.14502" quat="1 0 0 0" type="mesh" rgba="1 1 1 1" mesh="arm_base_link"/>
6
+ <geom pos="0.0185 -0.3 0.14502" quat="1 0 0 0" type="mesh" rgba="1 1 1 1" mesh="arm_base_link"/>
7
+ <geom pos="0.074 0 0.53575" quat="0.9238795 0.0 0.3826834 0.0" type="mesh" mesh="camera_link" rgba="0.1 0.1 0.1 1" contype="0" conaffinity="0" />
8
+ <camera name="head_camera" pos="0.084 0 0.52075" quat="0.6532815 0.2705981 -0.2705981 -0.6532815" fovy="70"/>
9
+
10
+ # left link 1
11
+ <body name="left_link_1" pos="0.0185 0.3 0.21152">
12
+ <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"/>
13
+ <joint name="left_joint_1" pos="0 0 0" axis="0 0 1" range="-2.7 2.7" limited="true" armature="0.01" damping="0.1" frictionloss="0.5"/>
14
+ <geom type="mesh" rgba="0.92549 0.92549 0.92549 1" mesh="arm_link_1"/>
15
+
16
+ # left link 2
17
+ <body name="left_link_2" pos="0.02 0 0.045">
18
+ <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"/>
19
+ <joint name="left_joint_2" pos="0 0 0" axis="0 1 0" range="-1.57 2.09" limited="true" armature="0.01" damping="0.1" frictionloss="0.5"/>
20
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_link_2"/>
21
+
22
+ # left link 3
23
+ <body name="left_link_3" pos="0 0 0.264">
24
+ <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"/>
25
+ <joint name="left_joint_3" pos="0 0 0" axis="0 1 0" range="0 3.14" limited="true" armature="0.01" damping="0.1" frictionloss="0.5"/>
26
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_link_3"/>
27
+
28
+ # left link 4
29
+ <body name="left_link_4" pos="-0.06 0 0.245">
30
+ <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"/>
31
+ <joint name="left_joint_4" pos="0 0 0" axis="0 1 0" range="-1.57 1.57" limited="true" armature="0.01" damping="0.02" frictionloss="0.1"/>
32
+ <geom type="mesh" rgba="0.792157 0.792157 0.792157 1" mesh="arm_link_4"/>
33
+
34
+ # left link 5
35
+ <body name="left_link_5" pos="-0.0553006 0 0.07025">
36
+ <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"/>
37
+ <joint name="left_joint_5" pos="0 0 0" axis="-1 0 0" range="-1.57 1.57" limited="true" armature="0.01" damping="0.02" frictionloss="0.1"/>
38
+ <geom type="mesh" rgba="0.898039 0.917647 0.929412 1" mesh="arm_link_5"/>
39
+
40
+ # left gripper base link
41
+ <body name="left_gripper_base_link" pos="0.0578 0 0.02895" quat="0.707107 0.0 -0.707107 0.0">
42
+ <inertial pos="-0.0139 0.0001 0.0578" quat="0.567843 0.421372 0.421372 0.567843" mass="0.7651" diaginertia="0.0021 0.00143028 0.00106972"/>
43
+ <joint name="left_joint_6" pos="0 0 0" axis="1 0 0" range="-1.57 1.57" limited="true" armature="0.01" damping="0.02" frictionloss="0.1"/>
44
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_base_link"/>
45
+ <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" />
46
+ <camera name="left_camera" pos="0.066 0 0.105" quat="0.8660254 0.0 -0.5 0.0" fovy="50"/>
47
+
48
+ # ee frame
49
+ <body name="left_ee_frame" pos="0.1870 0.0 0.0" quat="1 0 0 0">
50
+ <geom type="cylinder" size="0.002 0.01" pos="0.01 0.00 0.00" quat="0.7071068 0.0000000 0.7071068 0.0000000" rgba="1 0 0 1" contype="0" conaffinity="0" group="4"/>
51
+ <geom type="cylinder" size="0.002 0.01" pos="0.00 0.01 0.00" quat="0.7071068 0.7071068 0.0000000 0.0000000" rgba="0 1 0 1" contype="0" conaffinity="0" group="4"/>
52
+ <geom type="cylinder" size="0.002 0.01" pos="0.00 0.00 0.01" quat="1.0000000 0.0000000 0.0000000 0.0000000" rgba="0 0 1 1" contype="0" conaffinity="0" group="4"/>
53
+ </body>
54
+
55
+ # gripper helper
56
+ <body name="left_gripper_left_helper_link" pos="0.057667 0.030604 2.5e-05">
57
+ <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"/>
58
+ <joint name="left_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" />
59
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_helper_link"/>
60
+ </body>
61
+ <body name="left_gripper_right_helper_link" pos="0.057667 -0.030604 2.5e-05">
62
+ <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"/>
63
+ <joint name="left_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" />
64
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_helper_link"/>
65
+ </body>
66
+
67
+ # left gripper
68
+ <body name="left_gripper_left_link_1" pos="0.0721 0.014 2.5e-05">
69
+ <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"/>
70
+ <joint name="left_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" />
71
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_link_1"/>
72
+
73
+ <body name="left_gripper_left_link_2" pos="0.0085108 0.04927 0">
74
+ <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"/>
75
+ <joint name="left_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" />
76
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_link_2"/>
77
+ </body>
78
+ </body>
79
+
80
+ # right gripper
81
+ <body name="left_gripper_right_link_1" pos="0.0721 -0.014 2.5e-05">
82
+ <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"/>
83
+ <joint name="left_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" />
84
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_link_1"/>
85
+
86
+ <body name="left_gripper_right_link_2" pos="0.0085108 -0.04927 0">
87
+ <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"/>
88
+ <joint name="left_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" />
89
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_link_2"/>
90
+ </body>
91
+ </body>
92
+ </body>
93
+ </body>
94
+ </body>
95
+ </body>
96
+ </body>
97
+ </body>
98
+
99
+ # right link 1
100
+ <body name="right_link_1" pos="0.0185 -0.3 0.21152">
101
+ <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"/>
102
+ <joint name="right_joint_1" pos="0 0 0" axis="0 0 1" range="-2.7 2.7" limited="true" armature="0.01" damping="0.1" frictionloss="0.5"/>
103
+ <geom type="mesh" rgba="0.92549 0.92549 0.92549 1" mesh="arm_link_1"/>
104
+
105
+ # right link 2
106
+ <body name="right_link_2" pos="0.02 0 0.045">
107
+ <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"/>
108
+ <joint name="right_joint_2" pos="0 0 0" axis="0 1 0" range="-1.57 2.09" limited="true" armature="0.01" damping="0.1" frictionloss="0.5"/>
109
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_link_2"/>
110
+
111
+ # right link 3
112
+ <body name="right_link_3" pos="0 0 0.264">
113
+ <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"/>
114
+ <joint name="right_joint_3" pos="0 0 0" axis="0 1 0" range="0 3.14" limited="true" armature="0.01" damping="0.1" frictionloss="0.5"/>
115
+ <geom type="mesh" rgba="1 1 1 1" mesh="arm_link_3"/>
116
+
117
+ # right link 4
118
+ <body name="right_link_4" pos="-0.06 0 0.245">
119
+ <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"/>
120
+ <joint name="right_joint_4" pos="0 0 0" axis="0 1 0" range="-1.57 1.57" limited="true" armature="0.01" damping="0.02" frictionloss="0.1"/>
121
+ <geom type="mesh" rgba="0.792157 0.792157 0.792157 1" mesh="arm_link_4"/>
122
+
123
+ # right link 5
124
+ <body name="right_link_5" pos="-0.0553006 0 0.07025">
125
+ <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"/>
126
+ <joint name="right_joint_5" pos="0 0 0" axis="-1 0 0" range="-1.57 1.57" limited="true" armature="0.01" damping="0.02" frictionloss="0.1"/>
127
+ <geom type="mesh" rgba="0.898039 0.917647 0.929412 1" mesh="arm_link_5"/>
128
+
129
+ # right gripper base link
130
+ <body name="right_gripper_base_link" pos="0.0578 0 0.02895" quat="0.707107 0.0 -0.707107 0.0">
131
+ <inertial pos="-0.0139 0.0001 0.0578" quat="0.567843 0.421372 0.421372 0.567843" mass="0.7651" diaginertia="0.0021 0.00143028 0.00106972"/>
132
+ <joint name="right_joint_6" pos="0 0 0" axis="1 0 0" range="-1.57 1.57" limited="true" armature="0.01" damping="0.02" frictionloss="0.1"/>
133
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_base_link"/>
134
+ <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" />
135
+ <camera name="right_camera" pos="0.066 0 0.105" quat="0.8660254 0.0 -0.5 0.0" fovy="50"/>
136
+
137
+ # ee frame
138
+ <body name="right_ee_frame" pos="0.1870 0.0 0.0" quat="1 0 0 0">
139
+ <geom type="cylinder" size="0.002 0.01" pos="0.01 0.00 0.00" quat="0.7071068 0.0000000 0.7071068 0.0000000" rgba="1 0 0 1" contype="0" conaffinity="0" group="4"/>
140
+ <geom type="cylinder" size="0.002 0.01" pos="0.00 0.01 0.00" quat="0.7071068 0.7071068 0.0000000 0.0000000" rgba="0 1 0 1" contype="0" conaffinity="0" group="4"/>
141
+ <geom type="cylinder" size="0.002 0.01" pos="0.00 0.00 0.01" quat="1.0000000 0.0000000 0.0000000 0.0000000" rgba="0 0 1 1" contype="0" conaffinity="0" group="4"/>
142
+ </body>
143
+
144
+ # gripper helper
145
+ <body name="right_gripper_left_helper_link" pos="0.057667 0.030604 2.5e-05">
146
+ <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"/>
147
+ <joint name="right_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" />
148
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_helper_link"/>
149
+ </body>
150
+ <body name="right_gripper_right_helper_link" pos="0.057667 -0.030604 2.5e-05">
151
+ <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"/>
152
+ <joint name="right_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" />
153
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_helper_link"/>
154
+ </body>
155
+
156
+ # left gripper
157
+ <body name="right_gripper_left_link_1" pos="0.0721 0.014 2.5e-05">
158
+ <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"/>
159
+ <joint name="right_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" />
160
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_link_1"/>
161
+
162
+ <body name="right_gripper_left_link_2" pos="0.0085108 0.04927 0">
163
+ <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"/>
164
+ <joint name="right_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" />
165
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_left_link_2"/>
166
+ </body>
167
+ </body>
168
+
169
+ # right gripper
170
+ <body name="right_gripper_right_link_1" pos="0.0721 -0.014 2.5e-05">
171
+ <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"/>
172
+ <joint name="right_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" />
173
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_link_1"/>
174
+
175
+ <body name="right_gripper_right_link_2" pos="0.0085108 -0.04927 0">
176
+ <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"/>
177
+ <joint name="right_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" />
178
+ <geom type="mesh" rgba="1 1 1 1" mesh="gripper_right_link_2"/>
179
+ </body>
180
+ </body>
181
+ </body>
182
+ </body>
183
+ </body>
184
+ </body>
185
+ </body>
186
+ </body>
187
+ </body>
188
+ </mujocoinclude>
@@ -0,0 +1,53 @@
1
+ <mujoco model="e3_desktop scene">
2
+ <compiler angle="radian"/>
3
+ <option integrator="implicitfast"/>
4
+ <option timestep="1e-3"/>
5
+
6
+ <statistic center="0.3 0 0.45" extent="0.8" meansize="0.05"/>
7
+
8
+ <visual>
9
+ <headlight diffuse="0.6 0.6 0.6" ambient="0.1 0.1 0.1" specular="0 0 0"/>
10
+ <rgba haze="0.15 0.25 0.35 1"/>
11
+ <global azimuth="120" elevation="-20"/>
12
+ <map znear="0.01" zfar="50"/>
13
+ </visual>
14
+
15
+ <asset>
16
+ <texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="3072"/>
17
+ <texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3" markrgb="0.8 0.8 0.8" width="300" height="300"/>
18
+ <material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2"/>
19
+ <include file="assets/assets.xml"/>
20
+ </asset>
21
+
22
+ <worldbody>
23
+ <light pos="0.0 0.0 1.5" directional="true"/>
24
+ <geom name="floor" size="0.0 0.0 0.05" type="plane" material="groundplane"/>
25
+
26
+ <body pos="0.0 0.0 0.15">
27
+ <include file="robot.xml"/>
28
+ </body>
29
+
30
+ <body name="table" pos="0.5 0.0 0.3" quat="0.707107 0 0 0.707107">
31
+ <geom mesh="table_link" pos="0 0 0" type="mesh" name="table" rgba="0.2 0.2 0.2 1" />
32
+ </body>
33
+ <body name="box" pos="0.5 0.0 0.5">
34
+ <joint name="red_box_joint" type="free" frictionloss="0.01" />
35
+ <inertial pos="0 0 0" mass="0.05" diaginertia="0.002 0.002 0.002" />
36
+ <geom condim="4" solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0 0 0" size="0.02 0.02 0.02" type="box" name="red_box" rgba="1 0 0 1" />
37
+ </body>
38
+ <geom name="tar_plane" pos="0.3 0.1 0.301" type="box" size="0.04 0.04 0.001" rgba="0 1 0 1" />
39
+ </worldbody>
40
+
41
+ <include file="setting.xml"/>
42
+
43
+ <keyframe>
44
+ # qpos: 12 * 2 + 7
45
+ # ctrl: 7 * 2
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
48
+ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
49
+ 0.5 0.0 0.5 1.0 0.0 0.0 0.0" ctrl="
50
+ 0.0 0.0 0.0 0.0 0.0 0.0 0.0
51
+ 0.0 0.0 0.0 0.0 0.0 0.0 0.0"/>
52
+ </keyframe>
53
+ </mujoco>
@@ -0,0 +1,72 @@
1
+ <mujocoinclude>
2
+ <contact>
3
+ # left arm
4
+ <exclude body1="base_link" body2="left_link_1" />
5
+ <exclude body1="left_link_1" body2="left_link_2" />
6
+ <exclude body1="left_link_2" body2="left_link_3" />
7
+ <exclude body1="left_link_3" body2="left_link_4" />
8
+ <exclude body1="left_link_4" body2="left_link_5" />
9
+ <exclude body1="left_link_5" body2="left_gripper_base_link" />
10
+ <exclude body1="left_gripper_base_link" body2="left_gripper_left_helper_link" />
11
+ <exclude body1="left_gripper_left_helper_link" body2="left_gripper_left_link_1" />
12
+ <exclude body1="left_gripper_left_helper_link" body2="left_gripper_left_link_2" />
13
+ <exclude body1="left_gripper_left_link_1" body2="left_gripper_left_link_2" />
14
+ <exclude body1="left_gripper_base_link" body2="left_gripper_right_helper_link" />
15
+ <exclude body1="left_gripper_right_helper_link" body2="left_gripper_right_link_1" />
16
+ <exclude body1="left_gripper_right_helper_link" body2="left_gripper_right_link_2" />
17
+ <exclude body1="left_gripper_right_link_1" body2="left_gripper_right_link_2" />
18
+
19
+ # right arm
20
+ <exclude body1="base_link" body2="right_link_1" />
21
+ <exclude body1="right_link_1" body2="right_link_2" />
22
+ <exclude body1="right_link_2" body2="right_link_3" />
23
+ <exclude body1="right_link_3" body2="right_link_4" />
24
+ <exclude body1="right_link_4" body2="right_link_5" />
25
+ <exclude body1="right_link_5" body2="right_gripper_base_link" />
26
+ <exclude body1="right_gripper_base_link" body2="right_gripper_left_helper_link" />
27
+ <exclude body1="right_gripper_left_helper_link" body2="right_gripper_left_link_1" />
28
+ <exclude body1="right_gripper_left_helper_link" body2="right_gripper_left_link_2" />
29
+ <exclude body1="right_gripper_left_link_1" body2="right_gripper_left_link_2" />
30
+ <exclude body1="right_gripper_base_link" body2="right_gripper_right_helper_link" />
31
+ <exclude body1="right_gripper_right_helper_link" body2="right_gripper_right_link_1" />
32
+ <exclude body1="right_gripper_right_helper_link" body2="right_gripper_right_link_2" />
33
+ <exclude body1="right_gripper_right_link_1" body2="right_gripper_right_link_2" />
34
+ </contact>
35
+
36
+ <equality>
37
+ # left arm
38
+ <joint joint1="left_gripper_left_joint_1" joint2="left_gripper_left_joint_2" />
39
+ <joint joint1="left_gripper_left_joint_1" joint2="left_gripper_left_help_joint" />
40
+ <joint joint1="left_gripper_left_joint_1" joint2="left_gripper_right_joint_1" />
41
+ <joint joint1="left_gripper_left_joint_1" joint2="left_gripper_right_joint_2" />
42
+ <joint joint1="left_gripper_left_joint_1" joint2="left_gripper_right_help_joint" />
43
+
44
+ # right arm
45
+ <joint joint1="right_gripper_left_joint_1" joint2="right_gripper_left_joint_2" />
46
+ <joint joint1="right_gripper_left_joint_1" joint2="right_gripper_left_help_joint" />
47
+ <joint joint1="right_gripper_left_joint_1" joint2="right_gripper_right_joint_1" />
48
+ <joint joint1="right_gripper_left_joint_1" joint2="right_gripper_right_joint_2" />
49
+ <joint joint1="right_gripper_left_joint_1" joint2="right_gripper_right_help_joint" />
50
+ </equality>
51
+
52
+ <actuator>
53
+ # left arm
54
+ <motor joint="left_joint_1" ctrlrange="-28 28" forcerange="-28 28"/>
55
+ <motor joint="left_joint_2" ctrlrange="-28 28" forcerange="-28 28"/>
56
+ <motor joint="left_joint_3" ctrlrange="-28 28" forcerange="-28 28"/>
57
+ <motor joint="left_joint_4" ctrlrange="-10 10" forcerange="-10 10"/>
58
+ <motor joint="left_joint_5" ctrlrange="-10 10" forcerange="-10 10"/>
59
+ <motor joint="left_joint_6" ctrlrange="-10 10" forcerange="-10 10"/>
60
+ <motor joint="left_gripper_left_joint_1" ctrlrange="-10 10" forcerange="-10 10"/>
61
+
62
+ # right arm
63
+ <motor joint="right_joint_1" ctrlrange="-28 28" forcerange="-28 28"/>
64
+ <motor joint="right_joint_2" ctrlrange="-28 28" forcerange="-28 28"/>
65
+ <motor joint="right_joint_3" ctrlrange="-28 28" forcerange="-28 28"/>
66
+ <motor joint="right_joint_4" ctrlrange="-10 10" forcerange="-10 10"/>
67
+ <motor joint="right_joint_5" ctrlrange="-10 10" forcerange="-10 10"/>
68
+ <motor joint="right_joint_6" ctrlrange="-10 10" forcerange="-10 10"/>
69
+ <motor joint="right_gripper_left_joint_1" ctrlrange="-10 10" forcerange="-10 10"/>
70
+ </actuator>
71
+
72
+ </mujocoinclude>