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.
- hex_zmq_servers/__init__.py +173 -0
- hex_zmq_servers/cam/__init__.py +52 -0
- hex_zmq_servers/cam/berxel/__init__.py +17 -0
- hex_zmq_servers/cam/berxel/cam_berxel.py +282 -0
- hex_zmq_servers/cam/berxel/cam_berxel_cli.py +33 -0
- hex_zmq_servers/cam/berxel/cam_berxel_srv.py +79 -0
- hex_zmq_servers/cam/cam_base.py +189 -0
- hex_zmq_servers/cam/dummy/__init__.py +17 -0
- hex_zmq_servers/cam/dummy/cam_dummy.py +69 -0
- hex_zmq_servers/cam/dummy/cam_dummy_cli.py +29 -0
- hex_zmq_servers/cam/dummy/cam_dummy_srv.py +68 -0
- hex_zmq_servers/cam/realsense/__init__.py +17 -0
- hex_zmq_servers/cam/realsense/cam_realsense.py +159 -0
- hex_zmq_servers/cam/realsense/cam_realsense_cli.py +33 -0
- hex_zmq_servers/cam/realsense/cam_realsense_srv.py +78 -0
- hex_zmq_servers/cam/rgb/__init__.py +17 -0
- hex_zmq_servers/cam/rgb/cam_rgb.py +135 -0
- hex_zmq_servers/cam/rgb/cam_rgb_cli.py +43 -0
- hex_zmq_servers/cam/rgb/cam_rgb_srv.py +78 -0
- hex_zmq_servers/config/cam_berxel.json +18 -0
- hex_zmq_servers/config/cam_dummy.json +12 -0
- hex_zmq_servers/config/cam_realsense.json +17 -0
- hex_zmq_servers/config/cam_rgb.json +28 -0
- hex_zmq_servers/config/mujoco_archer_y6.json +37 -0
- hex_zmq_servers/config/mujoco_e3_desktop.json +41 -0
- hex_zmq_servers/config/robot_dummy.json +153 -0
- hex_zmq_servers/config/robot_gello.json +66 -0
- hex_zmq_servers/config/robot_hexarm.json +37 -0
- hex_zmq_servers/config/zmq_dummy.json +12 -0
- hex_zmq_servers/device_base.py +44 -0
- hex_zmq_servers/hex_launch.py +489 -0
- hex_zmq_servers/mujoco/__init__.py +28 -0
- hex_zmq_servers/mujoco/archer_y6/__init__.py +17 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/arm_base_link.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_1.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_2.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_3.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_4.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_5.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/assets.xml +17 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/camera_link.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_base_link.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_left_helper_link.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_left_link_1.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_left_link_2.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_helper_link.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_link_1.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_link_2.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/assets/table_link.STL +0 -0
- hex_zmq_servers/mujoco/archer_y6/model/robot.xml +95 -0
- hex_zmq_servers/mujoco/archer_y6/model/scene.xml +51 -0
- hex_zmq_servers/mujoco/archer_y6/model/setting.xml +37 -0
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py +325 -0
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py +71 -0
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py +148 -0
- hex_zmq_servers/mujoco/e3_desktop/__init__.py +17 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_base_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_1.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_2.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_3.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_4.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_5.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/assets.xml +18 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/camera_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/e3_desktop_base_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_base_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_helper_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_1.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_2.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_helper_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_1.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_2.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/assets/table_link.STL +0 -0
- hex_zmq_servers/mujoco/e3_desktop/model/robot.xml +188 -0
- hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +53 -0
- hex_zmq_servers/mujoco/e3_desktop/model/setting.xml +72 -0
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +449 -0
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +289 -0
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py +244 -0
- hex_zmq_servers/mujoco/mujoco_base.py +425 -0
- hex_zmq_servers/robot/__init__.py +37 -0
- hex_zmq_servers/robot/dummy/__init__.py +17 -0
- hex_zmq_servers/robot/dummy/robot_dummy.py +94 -0
- hex_zmq_servers/robot/dummy/robot_dummy_cli.py +29 -0
- hex_zmq_servers/robot/dummy/robot_dummy_srv.py +82 -0
- hex_zmq_servers/robot/gello/__init__.py +17 -0
- hex_zmq_servers/robot/gello/robot_gello.py +366 -0
- hex_zmq_servers/robot/gello/robot_gello_cli.py +29 -0
- hex_zmq_servers/robot/gello/robot_gello_srv.py +93 -0
- hex_zmq_servers/robot/hexarm/__init__.py +47 -0
- hex_zmq_servers/robot/hexarm/robot_hexarm.py +292 -0
- hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +37 -0
- hex_zmq_servers/robot/hexarm/robot_hexarm_srv.py +87 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_l6y/empty.urdf +206 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100.urdf +206 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_handle.urdf +206 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050.urdf +206 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050_handle.urdf +206 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_y6/empty.urdf +207 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100.urdf +207 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_handle.urdf +207 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_p050.urdf +207 -0
- hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_p050_handle.urdf +207 -0
- hex_zmq_servers/robot/robot_base.py +276 -0
- hex_zmq_servers/zmq_base.py +547 -0
- hex_zmq_servers-0.3.9.dist-info/METADATA +147 -0
- hex_zmq_servers-0.3.9.dist-info/RECORD +110 -0
- hex_zmq_servers-0.3.9.dist-info/WHEEL +5 -0
- hex_zmq_servers-0.3.9.dist-info/licenses/LICENSE +201 -0
- 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
|
+
]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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>
|