hex-zmq-servers 0.2.0__py3-none-any.whl → 0.2.2__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 (70) hide show
  1. hex_zmq_servers/__init__.py +19 -7
  2. hex_zmq_servers/cam/__init__.py +13 -6
  3. hex_zmq_servers/config/mujoco_archer_d6y.json +19 -0
  4. hex_zmq_servers/config/mujoco_e3_desktop.json +19 -0
  5. hex_zmq_servers/mujoco/archer_d6y/model/assets/assets.xml +7 -9
  6. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_base_link.STL +0 -0
  7. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_left_helper_link.STL +0 -0
  8. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_left_link_1.STL +0 -0
  9. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_left_link_2.STL +0 -0
  10. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_right_helper_link.STL +0 -0
  11. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_right_link_1.STL +0 -0
  12. hex_zmq_servers/mujoco/archer_d6y/model/assets/gripper_right_link_2.STL +0 -0
  13. hex_zmq_servers/mujoco/archer_d6y/model/robot.xml +37 -50
  14. hex_zmq_servers/mujoco/archer_d6y/model/scene.xml +5 -5
  15. hex_zmq_servers/mujoco/archer_d6y/model/setting.xml +21 -21
  16. hex_zmq_servers/mujoco/archer_d6y/mujoco_archer_d6y.py +44 -10
  17. hex_zmq_servers/mujoco/e3_desktop/model/assets/assets.xml +7 -9
  18. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_base_link.STL +0 -0
  19. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_helper_link.STL +0 -0
  20. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_1.STL +0 -0
  21. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_left_link_2.STL +0 -0
  22. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_helper_link.STL +0 -0
  23. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_1.STL +0 -0
  24. hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_2.STL +0 -0
  25. hex_zmq_servers/mujoco/e3_desktop/model/robot.xml +81 -107
  26. hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +6 -6
  27. hex_zmq_servers/mujoco/e3_desktop/model/setting.xml +42 -42
  28. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +62 -19
  29. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +1 -1
  30. hex_zmq_servers/mujoco/mujoco_base.py +34 -0
  31. hex_zmq_servers/robot/__init__.py +4 -1
  32. hex_zmq_servers/robot/hexarm/__init__.py +30 -0
  33. hex_zmq_servers/robot/hexarm/robot_hexarm.py +5 -3
  34. hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +1 -1
  35. hex_zmq_servers/robot/hexarm/robot_hexarm_srv.py +1 -1
  36. hex_zmq_servers/robot/hexarm/urdf/archer_d6y/empty.urdf +207 -0
  37. hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100.urdf +207 -0
  38. hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100_handle.urdf +207 -0
  39. hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100_p050.urdf +207 -0
  40. hex_zmq_servers/robot/hexarm/urdf/archer_d6y/gp100_p050_handle.urdf +207 -0
  41. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/empty.urdf +206 -0
  42. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100.urdf +206 -0
  43. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_handle.urdf +206 -0
  44. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050.urdf +206 -0
  45. hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100_p050_handle.urdf +206 -0
  46. hex_zmq_servers-0.2.2.dist-info/METADATA +117 -0
  47. {hex_zmq_servers-0.2.0.dist-info → hex_zmq_servers-0.2.2.dist-info}/RECORD +50 -45
  48. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_base_link.STL +0 -0
  49. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow1_link.STL +0 -0
  50. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow2_link.STL +0 -0
  51. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow3_link.STL +0 -0
  52. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_narrow_loop_link.STL +0 -0
  53. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide1_link.STL +0 -0
  54. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide2_link.STL +0 -0
  55. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide3_link.STL +0 -0
  56. hex_zmq_servers/mujoco/archer_d6y/model/assets/picker_wide_loop_link.STL +0 -0
  57. hex_zmq_servers/mujoco/e3_desktop/model/assets/link_camera.STL +0 -0
  58. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_base_link.STL +0 -0
  59. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow1_link.STL +0 -0
  60. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow2_link.STL +0 -0
  61. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow3_link.STL +0 -0
  62. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_narrow_loop_link.STL +0 -0
  63. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide1_link.STL +0 -0
  64. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide2_link.STL +0 -0
  65. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide3_link.STL +0 -0
  66. hex_zmq_servers/mujoco/e3_desktop/model/assets/picker_wide_loop_link.STL +0 -0
  67. hex_zmq_servers-0.2.0.dist-info/METADATA +0 -37
  68. {hex_zmq_servers-0.2.0.dist-info → hex_zmq_servers-0.2.2.dist-info}/WHEEL +0 -0
  69. {hex_zmq_servers-0.2.0.dist-info → hex_zmq_servers-0.2.2.dist-info}/licenses/LICENSE +0 -0
  70. {hex_zmq_servers-0.2.0.dist-info → hex_zmq_servers-0.2.2.dist-info}/top_level.txt +0 -0
@@ -25,6 +25,8 @@ NET_CONFIG = {
25
25
  "server_num_workers": 4,
26
26
  }
27
27
 
28
+ TAU = 2 * np.pi
29
+
28
30
 
29
31
  class HexMujocoBase(HexDeviceBase):
30
32
 
@@ -52,6 +54,38 @@ class HexMujocoBase(HexDeviceBase):
52
54
  self._wait_for_working()
53
55
  return self._intri
54
56
 
57
+ @staticmethod
58
+ def _rads_normalize(rads: np.ndarray) -> np.ndarray:
59
+ return (rads + np.pi) % TAU - np.pi
60
+
61
+ @staticmethod
62
+ def _apply_pos_limits(
63
+ rads: np.ndarray,
64
+ lower_bound: np.ndarray,
65
+ upper_bound: np.ndarray,
66
+ ) -> np.ndarray:
67
+ normed_rads = HexMujocoBase._rads_normalize(rads)
68
+ outside = (normed_rads < lower_bound) | (normed_rads > upper_bound)
69
+ if not np.any(outside):
70
+ return normed_rads
71
+
72
+ lower_dist = np.fabs(
73
+ HexMujocoBase._rads_normalize(
74
+ (normed_rads - lower_bound)[outside]))
75
+ upper_dist = np.fabs(
76
+ HexMujocoBase._rads_normalize(
77
+ (normed_rads - upper_bound)[outside]))
78
+ choose_lower = lower_dist < upper_dist
79
+ choose_upper = ~choose_lower
80
+
81
+ outside_full = np.flatnonzero(outside)
82
+ outside_lower = outside_full[choose_lower]
83
+ outside_upper = outside_full[choose_upper]
84
+ normed_rads[outside_lower] = lower_bound[outside_lower]
85
+ normed_rads[outside_upper] = upper_bound[outside_upper]
86
+
87
+ return normed_rads
88
+
55
89
  @abstractmethod
56
90
  def work_loop(self, hex_values: list[HexSafeValue]):
57
91
  raise NotImplementedError(
@@ -9,9 +9,12 @@
9
9
  from .robot_base import HexRobotBase, HexRobotClientBase, HexRobotServerBase
10
10
  from .dummy import HexRobotDummy, HexRobotDummyClient, HexRobotDummyServer
11
11
  from .gello import HexRobotGello, HexRobotGelloClient, HexRobotGelloServer
12
- from .hexarm import HexRobotHexarm, HexRobotHexarmClient, HexRobotHexarmServer
12
+ from .hexarm import HexRobotHexarm, HexRobotHexarmClient, HexRobotHexarmServer, HEXARM_URDF_PATH_DICT
13
13
 
14
14
  __all__ = [
15
+ # path
16
+ "HEXARM_URDF_PATH_DICT",
17
+
15
18
  # base
16
19
  "HexRobotBase",
17
20
  "HexRobotClientBase",
@@ -10,7 +10,37 @@ from .robot_hexarm import HexRobotHexarm
10
10
  from .robot_hexarm_cli import HexRobotHexarmClient
11
11
  from .robot_hexarm_srv import HexRobotHexarmServer
12
12
 
13
+ import os
14
+
15
+ urdf_dir = os.path.join(os.path.dirname(__file__), "urdf")
16
+ HEXARM_URDF_PATH_DICT = {
17
+ "archer_d6y_empty":
18
+ f"{urdf_dir}/archer_d6y/empty.urdf",
19
+ "archer_d6y_gp100":
20
+ f"{urdf_dir}/archer_d6y/gp100.urdf",
21
+ "archer_d6y_gp100_handle":
22
+ f"{urdf_dir}/archer_d6y/gp100_handle.urdf",
23
+ "archer_d6y_gp100_p050":
24
+ f"{urdf_dir}/archer_d6y/gp100_p050.urdf",
25
+ "archer_d6y_gp100_p050_handle":
26
+ f"{urdf_dir}/archer_d6y/gp100_p050_handle.urdf",
27
+ "archer_l6y_empty":
28
+ f"{urdf_dir}/archer_l6y/empty.urdf",
29
+ "archer_l6y_gp100":
30
+ f"{urdf_dir}/archer_l6y/gp100.urdf",
31
+ "archer_l6y_gp100_handle":
32
+ f"{urdf_dir}/archer_l6y/gp100_handle.urdf",
33
+ "archer_l6y_gp100_p050":
34
+ f"{urdf_dir}/archer_l6y/gp100_p050.urdf",
35
+ "archer_l6y_gp100_p050_handle":
36
+ f"{urdf_dir}/archer_l6y/gp100_p050_handle.urdf",
37
+ }
38
+
13
39
  __all__ = [
40
+ # path
41
+ "HEXARM_URDF_PATH_DICT",
42
+
43
+ # robot
14
44
  "HexRobotHexarm",
15
45
  "HexRobotHexarmClient",
16
46
  "HexRobotHexarmServer",
@@ -32,7 +32,7 @@ ROBOT_CONFIG = {
32
32
 
33
33
  HEX_DEVICE_TYPE_DICT = {
34
34
  "archer_d6y": 16,
35
- "os_d6y": 16,
35
+ "archer_l6y": 16,
36
36
  }
37
37
 
38
38
 
@@ -58,11 +58,11 @@ class HexRobotHexarm(HexRobotBase):
58
58
 
59
59
  self.__mit_kp = robot_config.get(
60
60
  "mit_kp",
61
- [200.0, 200.0, 200.0, 75.0, 15.0, 15.0],
61
+ [200.0, 200.0, 200.0, 75.0, 15.0, 15.0, 20.0],
62
62
  )
63
63
  self.__mit_kd = robot_config.get(
64
64
  "mit_kd",
65
- [12.5, 12.5, 12.5, 6.0, 0.31, 0.31],
65
+ [12.5, 12.5, 12.5, 6.0, 0.31, 0.31, 1.0],
66
66
  )
67
67
 
68
68
  # variables
@@ -82,6 +82,7 @@ class HexRobotHexarm(HexRobotBase):
82
82
  print("\033[33mArm not found\033[0m")
83
83
  time.sleep(1)
84
84
  self.__arm_archer = self.__hex_api.find_device_by_robot_type(arm_type)
85
+ self.__arm_archer.start()
85
86
  self.__arm_archer.command_timeout_check(False)
86
87
  self.__arm_dofs = len(self.__arm_archer)
87
88
  self._limits = self.__arm_archer.get_joint_limits()
@@ -224,4 +225,5 @@ class HexRobotHexarm(HexRobotBase):
224
225
  return True
225
226
 
226
227
  def close(self):
228
+ self.__arm_archer.stop()
227
229
  self.__hex_api.close()
@@ -20,7 +20,7 @@ ROBOT_CONFIG = {
20
20
  "device_ip": "172.18.8.161",
21
21
  "device_port": 8439,
22
22
  "control_hz": 250,
23
- "arm_type": 16,
23
+ "arm_type": "archer_l6y",
24
24
  "sens_ts": True,
25
25
  }
26
26
 
@@ -33,7 +33,7 @@ ROBOT_CONFIG = {
33
33
  "device_ip": "172.18.8.161",
34
34
  "device_port": 8439,
35
35
  "control_hz": 250,
36
- "arm_type": 16,
36
+ "arm_type": "archer_l6y",
37
37
  "use_gripper": True,
38
38
  "mit_kp": [200.0, 200.0, 200.0, 75.0, 15.0, 15.0, 0.0],
39
39
  "mit_kd": [12.5, 12.5, 12.5, 6.0, 0.31, 0.31, 0.0],
@@ -0,0 +1,207 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <robot name="archer_d6y">
3
+
4
+ <link name="base_link">
5
+ <inertial>
6
+ <origin xyz="-0.001 0 0.322" rpy="0 0 0" />
7
+ <mass value="0.687" />
8
+ <inertia ixx="0.0005" iyy="0.0005" izz="0.0007" ixy="0" ixz="0" iyz="0" />
9
+ </inertial>
10
+ <visual>
11
+ <origin xyz="0 0 0" rpy="0 0 0" />
12
+ <geometry>
13
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/base_link.STL" />
14
+ </geometry>
15
+ <material name="">
16
+ <color rgba="1 1 1 1" />
17
+ </material>
18
+ </visual>
19
+ <collision>
20
+ <origin xyz="0 0 0" rpy="0 0 0" />
21
+ <geometry>
22
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/base_link.STL" />
23
+ </geometry>
24
+ </collision>
25
+ </link>
26
+
27
+ <link name="link_1">
28
+ <inertial>
29
+ <origin xyz="0.008 -0.0023 0.0213" rpy="0 0 0" />
30
+ <mass value="0.2154" />
31
+ <inertia ixx="0.0003" iyy="0.0002" izz="0.0003" ixy="0" ixz="0" iyz="0"/>
32
+ </inertial>
33
+ <visual>
34
+ <origin xyz="0 0 0" rpy="0 0 0" />
35
+ <geometry>
36
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_1.STL" />
37
+ </geometry>
38
+ <material name="">
39
+ <color rgba="1 1 1 1" />
40
+ </material>
41
+ </visual>
42
+ <collision>
43
+ <origin xyz="0 0 0" rpy="0 0 0" />
44
+ <geometry>
45
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_1.STL" />
46
+ </geometry>
47
+ </collision>
48
+ </link>
49
+ <joint name="joint_1" type="revolute">
50
+ <origin xyz="0 0 0.0665" rpy="0 0 0" />
51
+ <parent link="base_link" />
52
+ <child link="link_1" />
53
+ <axis xyz="0 0 1" />
54
+ <limit lower="-2.61" upper="3.14" effort="6" velocity="6" />
55
+ </joint>
56
+
57
+ <link name="link_2">
58
+ <inertial>
59
+ <origin xyz="0.0001 -0.0028 0.1317" rpy="0 0 0" />
60
+ <mass value="1.3123" />
61
+ <inertia ixx="0.018" iyy="0.0177" izz="0.0007" ixy="0" ixz="0" iyz="0.0007" />
62
+ </inertial>
63
+ <visual>
64
+ <origin xyz="0 0 0" rpy="0 0 0" />
65
+ <geometry>
66
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_2.STL" />
67
+ </geometry>
68
+ <material name="">
69
+ <color rgba="1 1 1 1" />
70
+ </material>
71
+ </visual>
72
+ <collision>
73
+ <origin xyz="0 0 0" rpy="0 0 0" />
74
+ <geometry>
75
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_2.STL" />
76
+ </geometry>
77
+ </collision>
78
+ </link>
79
+ <joint name="joint_2" type="revolute">
80
+ <origin xyz="0.0199999999999999 0 0.0450000000000004" rpy="0 0 0" />
81
+ <parent link="link_1" />
82
+ <child link="link_2" />
83
+ <axis xyz="0 1 0" />
84
+ <limit lower="-1.57" upper="2.09" effort="6" velocity="6" />
85
+ </joint>
86
+
87
+ <link name="link_3">
88
+ <inertial>
89
+ <origin xyz="-0.051 0.0008 0.1447" rpy="0 0 0" />
90
+ <mass value="1.1083" />
91
+ <inertia ixx="0.0114" iyy="0.0112" izz="0.0016" ixy="-0.0001" ixz="0.0014" iyz="0.0006" />
92
+ </inertial>
93
+ <visual>
94
+ <origin xyz="0 0 0" rpy="0 0 0" />
95
+ <geometry>
96
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_3.STL" />
97
+ </geometry>
98
+ <material name="">
99
+ <color rgba="1 1 1 1" />
100
+ </material>
101
+ </visual>
102
+ <collision>
103
+ <origin xyz="0 0 0" rpy="0 0 0" />
104
+ <geometry>
105
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_3.STL" />
106
+ </geometry>
107
+ </collision>
108
+ </link>
109
+ <joint name="joint_3" type="revolute">
110
+ <origin xyz="0 0 0.264" rpy="0 0 0" />
111
+ <parent link="link_2" />
112
+ <child link="link_3" />
113
+ <axis xyz="0 1 0" />
114
+ <limit lower="0" upper="3.14" effort="6" velocity="6" />
115
+ </joint>
116
+
117
+ <link name="link_4">
118
+ <inertial>
119
+ <origin xyz="-0.0597 -0.001 0.0572" rpy="0 0 0" />
120
+ <mass value="0.5398" />
121
+ <inertia ixx="0.0008" iyy="0.001" izz="0.0008" ixy="0" ixz="0.0003" iyz="0" />
122
+ </inertial>
123
+ <visual>
124
+ <origin xyz="0 0 0" rpy="0 0 0" />
125
+ <geometry>
126
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_4.STL" />
127
+ </geometry>
128
+ <material name="">
129
+ <color rgba="1 1 1 1" />
130
+ </material>
131
+ </visual>
132
+ <collision>
133
+ <origin xyz="0 0 0" rpy="0 0 0" />
134
+ <geometry>
135
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_4.STL" />
136
+ </geometry>
137
+ </collision>
138
+ </link>
139
+ <joint name="joint_4" type="revolute">
140
+ <origin xyz="-0.0599999999999998 0 0.245" rpy="0 0 0" />
141
+ <parent link="link_3" />
142
+ <child link="link_4" />
143
+ <axis xyz="0 1 0" />
144
+ <limit lower="-1.57" upper="1.57" effort="6" velocity="6" />
145
+ </joint>
146
+
147
+ <link name="link_5">
148
+ <inertial>
149
+ <origin xyz="0.0292 0.0001 -0.0107" rpy="0 0 0" />
150
+ <mass value="0.3984" />
151
+ <inertia ixx="0.0002" iyy="0.0003" izz="0.0002" ixy="0" ixz="0" iyz="0" />
152
+ </inertial>
153
+ <visual>
154
+ <origin xyz="0 0 0" rpy="0 0 0" />
155
+ <geometry>
156
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_5.STL" />
157
+ </geometry>
158
+ <material name="">
159
+ <color rgba="1 1 1 1" />
160
+ </material>
161
+ </visual>
162
+ <collision>
163
+ <origin xyz="0 0 0" rpy="0 0 0" />
164
+ <geometry>
165
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_5.STL" />
166
+ </geometry>
167
+ </collision>
168
+ </link>
169
+ <joint name="joint_5" type="revolute">
170
+ <origin xyz="-0.0553005693392305 0 0.0702500000000025" rpy="0 0 0" />
171
+ <parent link="link_4" />
172
+ <child link="link_5" />
173
+ <axis xyz="-1 0 0" />
174
+ <limit lower="-1.57" upper="1.57" effort="6" velocity="6" />
175
+ </joint>
176
+
177
+ <link name="link_6">
178
+ <inertial>
179
+ <origin xyz="0 0 0" rpy="0 0 0" />
180
+ <mass value="0.001" />
181
+ <inertia ixx="0.0001" ixy="0" ixz="0" iyy="0.0001" iyz="0" izz="0.0001" />
182
+ </inertial>
183
+ <visual>
184
+ <origin xyz="0 0 0" rpy="0 0 0" />
185
+ <geometry>
186
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_6.STL" />
187
+ </geometry>
188
+ <material name="">
189
+ <color rgba="1 1 1 1" />
190
+ </material>
191
+ </visual>
192
+ <collision>
193
+ <origin xyz="0 0 0" rpy="0 0 0" />
194
+ <geometry>
195
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_6.STL" />
196
+ </geometry>
197
+ </collision>
198
+ </link>
199
+ <joint name="joint_6" type="revolute">
200
+ <origin xyz="0.0578000000000073 0 0.0289500000000001" rpy="0 0 0" />
201
+ <parent link="link_5" />
202
+ <child link="link_6" />
203
+ <axis xyz="0 0 1" />
204
+ <limit lower="-2.96" upper="2.96" effort="6" velocity="6" />
205
+ </joint>
206
+
207
+ </robot>
@@ -0,0 +1,207 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <robot name="archer_d6y">
3
+
4
+ <link name="base_link">
5
+ <inertial>
6
+ <origin xyz="-0.001 0 0.322" rpy="0 0 0" />
7
+ <mass value="0.687" />
8
+ <inertia ixx="0.0005" iyy="0.0005" izz="0.0007" ixy="0" ixz="0" iyz="0" />
9
+ </inertial>
10
+ <visual>
11
+ <origin xyz="0 0 0" rpy="0 0 0" />
12
+ <geometry>
13
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/base_link.STL" />
14
+ </geometry>
15
+ <material name="">
16
+ <color rgba="1 1 1 1" />
17
+ </material>
18
+ </visual>
19
+ <collision>
20
+ <origin xyz="0 0 0" rpy="0 0 0" />
21
+ <geometry>
22
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/base_link.STL" />
23
+ </geometry>
24
+ </collision>
25
+ </link>
26
+
27
+ <link name="link_1">
28
+ <inertial>
29
+ <origin xyz="0.008 -0.0023 0.0213" rpy="0 0 0" />
30
+ <mass value="0.2154" />
31
+ <inertia ixx="0.0003" iyy="0.0002" izz="0.0003" ixy="0" ixz="0" iyz="0"/>
32
+ </inertial>
33
+ <visual>
34
+ <origin xyz="0 0 0" rpy="0 0 0" />
35
+ <geometry>
36
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_1.STL" />
37
+ </geometry>
38
+ <material name="">
39
+ <color rgba="1 1 1 1" />
40
+ </material>
41
+ </visual>
42
+ <collision>
43
+ <origin xyz="0 0 0" rpy="0 0 0" />
44
+ <geometry>
45
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_1.STL" />
46
+ </geometry>
47
+ </collision>
48
+ </link>
49
+ <joint name="joint_1" type="revolute">
50
+ <origin xyz="0 0 0.0665" rpy="0 0 0" />
51
+ <parent link="base_link" />
52
+ <child link="link_1" />
53
+ <axis xyz="0 0 1" />
54
+ <limit lower="-2.61" upper="3.14" effort="6" velocity="6" />
55
+ </joint>
56
+
57
+ <link name="link_2">
58
+ <inertial>
59
+ <origin xyz="0.0001 -0.0028 0.1317" rpy="0 0 0" />
60
+ <mass value="1.3123" />
61
+ <inertia ixx="0.018" iyy="0.0177" izz="0.0007" ixy="0" ixz="0" iyz="0.0007" />
62
+ </inertial>
63
+ <visual>
64
+ <origin xyz="0 0 0" rpy="0 0 0" />
65
+ <geometry>
66
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_2.STL" />
67
+ </geometry>
68
+ <material name="">
69
+ <color rgba="1 1 1 1" />
70
+ </material>
71
+ </visual>
72
+ <collision>
73
+ <origin xyz="0 0 0" rpy="0 0 0" />
74
+ <geometry>
75
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_2.STL" />
76
+ </geometry>
77
+ </collision>
78
+ </link>
79
+ <joint name="joint_2" type="revolute">
80
+ <origin xyz="0.0199999999999999 0 0.0450000000000004" rpy="0 0 0" />
81
+ <parent link="link_1" />
82
+ <child link="link_2" />
83
+ <axis xyz="0 1 0" />
84
+ <limit lower="-1.57" upper="2.09" effort="6" velocity="6" />
85
+ </joint>
86
+
87
+ <link name="link_3">
88
+ <inertial>
89
+ <origin xyz="-0.051 0.0008 0.1447" rpy="0 0 0" />
90
+ <mass value="1.1083" />
91
+ <inertia ixx="0.0114" iyy="0.0112" izz="0.0016" ixy="-0.0001" ixz="0.0014" iyz="0.0006" />
92
+ </inertial>
93
+ <visual>
94
+ <origin xyz="0 0 0" rpy="0 0 0" />
95
+ <geometry>
96
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_3.STL" />
97
+ </geometry>
98
+ <material name="">
99
+ <color rgba="1 1 1 1" />
100
+ </material>
101
+ </visual>
102
+ <collision>
103
+ <origin xyz="0 0 0" rpy="0 0 0" />
104
+ <geometry>
105
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_3.STL" />
106
+ </geometry>
107
+ </collision>
108
+ </link>
109
+ <joint name="joint_3" type="revolute">
110
+ <origin xyz="0 0 0.264" rpy="0 0 0" />
111
+ <parent link="link_2" />
112
+ <child link="link_3" />
113
+ <axis xyz="0 1 0" />
114
+ <limit lower="0" upper="3.14" effort="6" velocity="6" />
115
+ </joint>
116
+
117
+ <link name="link_4">
118
+ <inertial>
119
+ <origin xyz="-0.0597 -0.001 0.0572" rpy="0 0 0" />
120
+ <mass value="0.5398" />
121
+ <inertia ixx="0.0008" iyy="0.001" izz="0.0008" ixy="0" ixz="0.0003" iyz="0" />
122
+ </inertial>
123
+ <visual>
124
+ <origin xyz="0 0 0" rpy="0 0 0" />
125
+ <geometry>
126
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_4.STL" />
127
+ </geometry>
128
+ <material name="">
129
+ <color rgba="1 1 1 1" />
130
+ </material>
131
+ </visual>
132
+ <collision>
133
+ <origin xyz="0 0 0" rpy="0 0 0" />
134
+ <geometry>
135
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_4.STL" />
136
+ </geometry>
137
+ </collision>
138
+ </link>
139
+ <joint name="joint_4" type="revolute">
140
+ <origin xyz="-0.0599999999999998 0 0.245" rpy="0 0 0" />
141
+ <parent link="link_3" />
142
+ <child link="link_4" />
143
+ <axis xyz="0 1 0" />
144
+ <limit lower="-1.57" upper="1.57" effort="6" velocity="6" />
145
+ </joint>
146
+
147
+ <link name="link_5">
148
+ <inertial>
149
+ <origin xyz="0.0292 0.0001 -0.0107" rpy="0 0 0" />
150
+ <mass value="0.3984" />
151
+ <inertia ixx="0.0002" iyy="0.0003" izz="0.0002" ixy="0" ixz="0" iyz="0" />
152
+ </inertial>
153
+ <visual>
154
+ <origin xyz="0 0 0" rpy="0 0 0" />
155
+ <geometry>
156
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_5.STL" />
157
+ </geometry>
158
+ <material name="">
159
+ <color rgba="1 1 1 1" />
160
+ </material>
161
+ </visual>
162
+ <collision>
163
+ <origin xyz="0 0 0" rpy="0 0 0" />
164
+ <geometry>
165
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_5.STL" />
166
+ </geometry>
167
+ </collision>
168
+ </link>
169
+ <joint name="joint_5" type="revolute">
170
+ <origin xyz="-0.0553005693392305 0 0.0702500000000025" rpy="0 0 0" />
171
+ <parent link="link_4" />
172
+ <child link="link_5" />
173
+ <axis xyz="-1 0 0" />
174
+ <limit lower="-1.57" upper="1.57" effort="6" velocity="6" />
175
+ </joint>
176
+
177
+ <link name="link_6">
178
+ <inertial>
179
+ <origin xyz="-0.0009 0.0001 0.0596" rpy="0 0 0" />
180
+ <mass value="0.6760" />
181
+ <inertia ixx="0.0011" ixy="0" ixz="0" iyy="0.0011" iyz="0" izz="0.0004" />
182
+ </inertial>
183
+ <visual>
184
+ <origin xyz="0 0 0" rpy="0 0 0" />
185
+ <geometry>
186
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_6.STL" />
187
+ </geometry>
188
+ <material name="">
189
+ <color rgba="1 1 1 1" />
190
+ </material>
191
+ </visual>
192
+ <collision>
193
+ <origin xyz="0 0 0" rpy="0 0 0" />
194
+ <geometry>
195
+ <mesh filename="package://xpkg_urdf_archer_d6y/meshes/link_6.STL" />
196
+ </geometry>
197
+ </collision>
198
+ </link>
199
+ <joint name="joint_6" type="revolute">
200
+ <origin xyz="0.0578000000000073 0 0.0289500000000001" rpy="0 0 0" />
201
+ <parent link="link_5" />
202
+ <child link="link_6" />
203
+ <axis xyz="0 0 1" />
204
+ <limit lower="-2.96" upper="2.96" effort="6" velocity="6" />
205
+ </joint>
206
+
207
+ </robot>