xarm-python-sdk 1.15.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.
- xarm/__init__.py +2 -0
- xarm/build_backend.py +17 -0
- xarm/core/__init__.py +2 -0
- xarm/core/comm/__init__.py +5 -0
- xarm/core/comm/base.py +303 -0
- xarm/core/comm/serial_port.py +44 -0
- xarm/core/comm/socket_port.py +150 -0
- xarm/core/comm/uxbus_cmd_protocol.py +100 -0
- xarm/core/config/__init__.py +0 -0
- xarm/core/config/x_code.py +1427 -0
- xarm/core/config/x_config.py +553 -0
- xarm/core/utils/__init__.py +3 -0
- xarm/core/utils/convert.py +124 -0
- xarm/core/utils/crc16.py +76 -0
- xarm/core/utils/debug_print.py +21 -0
- xarm/core/utils/log.py +98 -0
- xarm/core/version.py +1 -0
- xarm/core/wrapper/__init__.py +11 -0
- xarm/core/wrapper/uxbus_cmd.py +1457 -0
- xarm/core/wrapper/uxbus_cmd_ser.py +94 -0
- xarm/core/wrapper/uxbus_cmd_tcp.py +305 -0
- xarm/tools/__init__.py +0 -0
- xarm/tools/blockly/__init__.py +1 -0
- xarm/tools/blockly/_blockly_base.py +416 -0
- xarm/tools/blockly/_blockly_handler.py +1338 -0
- xarm/tools/blockly/_blockly_highlight.py +94 -0
- xarm/tools/blockly/_blockly_node.py +61 -0
- xarm/tools/blockly/_blockly_tool.py +480 -0
- xarm/tools/blockly_tool.py +1864 -0
- xarm/tools/gcode.py +90 -0
- xarm/tools/list_ports.py +39 -0
- xarm/tools/modbus_tcp.py +205 -0
- xarm/tools/threads.py +30 -0
- xarm/tools/utils.py +36 -0
- xarm/version.py +1 -0
- xarm/wrapper/__init__.py +1 -0
- xarm/wrapper/studio_api.py +34 -0
- xarm/wrapper/xarm_api.py +4416 -0
- xarm/x3/__init__.py +2 -0
- xarm/x3/base.py +2638 -0
- xarm/x3/base_board.py +198 -0
- xarm/x3/code.py +62 -0
- xarm/x3/decorator.py +104 -0
- xarm/x3/events.py +166 -0
- xarm/x3/ft_sensor.py +264 -0
- xarm/x3/gpio.py +457 -0
- xarm/x3/grammar_async.py +21 -0
- xarm/x3/grammar_coroutine.py +24 -0
- xarm/x3/gripper.py +830 -0
- xarm/x3/modbus_tcp.py +84 -0
- xarm/x3/parse.py +110 -0
- xarm/x3/record.py +216 -0
- xarm/x3/report.py +204 -0
- xarm/x3/robotiq.py +220 -0
- xarm/x3/servo.py +485 -0
- xarm/x3/studio.py +138 -0
- xarm/x3/track.py +424 -0
- xarm/x3/utils.py +43 -0
- xarm/x3/xarm.py +1928 -0
- xarm_python_sdk-1.15.2.dist-info/METADATA +103 -0
- xarm_python_sdk-1.15.2.dist-info/RECORD +63 -0
- xarm_python_sdk-1.15.2.dist-info/WHEEL +4 -0
- xarm_python_sdk-1.15.2.dist-info/licenses/LICENSE +27 -0
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Software License Agreement (BSD License)
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2018, UFACTORY, Inc.
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
#
|
|
7
|
+
# Author: Vinman <vinman.wen@ufactory.cc> <vinman.cub@gmail.com>
|
|
8
|
+
|
|
9
|
+
import math
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class XCONF(object):
|
|
13
|
+
ARM_AXIS_NUM = 7
|
|
14
|
+
MAX_CMD_NUM = 1024
|
|
15
|
+
|
|
16
|
+
TRACK_ID = 1
|
|
17
|
+
GRIPPER_ID = 8
|
|
18
|
+
|
|
19
|
+
TGPIO_HOST_ID = 9
|
|
20
|
+
LINEER_TRACK_HOST_ID = 11
|
|
21
|
+
|
|
22
|
+
def __init__(self):
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
class Robot:
|
|
26
|
+
class Axis:
|
|
27
|
+
XARM5 = 5
|
|
28
|
+
XARM6 = 6
|
|
29
|
+
XARM7 = 7
|
|
30
|
+
|
|
31
|
+
class Type:
|
|
32
|
+
XARM6_X1 = 1
|
|
33
|
+
XARM7_X2 = 2
|
|
34
|
+
XARM7_X3 = 3
|
|
35
|
+
XARM7_X3MIR = 4
|
|
36
|
+
XARM5_X4 = 5
|
|
37
|
+
XARM6_X4 = 6
|
|
38
|
+
XARM7_X4 = 7
|
|
39
|
+
XARM6_X8 = 8
|
|
40
|
+
XARM6_X9 = 9
|
|
41
|
+
XARM6_X11 = 11
|
|
42
|
+
XARM6_X12 = 12
|
|
43
|
+
XARM7_X13 = 13
|
|
44
|
+
XARM5_X4_1305 = 51305
|
|
45
|
+
XARM6_X4_1305 = 61305
|
|
46
|
+
XARM7_X4_1305 = 71305
|
|
47
|
+
|
|
48
|
+
JOINT_LIMITS = {
|
|
49
|
+
Axis.XARM5: {
|
|
50
|
+
Type.XARM5_X4: [
|
|
51
|
+
(-2 * math.pi, 2 * math.pi),
|
|
52
|
+
(-2.059488, 2.094395), # (-2.18, 2.18),
|
|
53
|
+
(-3.92699, 0.191986), # (-4.01, 0.1),
|
|
54
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
55
|
+
(-2 * math.pi, 2 * math.pi)
|
|
56
|
+
],
|
|
57
|
+
Type.XARM5_X4_1305: [
|
|
58
|
+
(-2 * math.pi, 2 * math.pi),
|
|
59
|
+
(-2.042035, 2.024581),
|
|
60
|
+
(-3.822271, 0.174532),
|
|
61
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
62
|
+
(-2 * math.pi, 2 * math.pi)
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
Axis.XARM6: {
|
|
66
|
+
Type.XARM6_X4: [
|
|
67
|
+
(-2 * math.pi, 2 * math.pi),
|
|
68
|
+
(-2.059488, 2.094395), # (-2.18, 2.18),
|
|
69
|
+
(-3.92699, 0.191986), # (-4.01, 0.1),
|
|
70
|
+
(-2 * math.pi, 2 * math.pi),
|
|
71
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
72
|
+
(-2 * math.pi, 2 * math.pi)
|
|
73
|
+
],
|
|
74
|
+
Type.XARM6_X4_1305: [
|
|
75
|
+
(-2 * math.pi, 2 * math.pi),
|
|
76
|
+
(-2.042035, 2.024581),
|
|
77
|
+
(-3.822271, 0.174532),
|
|
78
|
+
(-2 * math.pi, 2 * math.pi),
|
|
79
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
80
|
+
(-2 * math.pi, 2 * math.pi)
|
|
81
|
+
],
|
|
82
|
+
Type.XARM6_X8: [
|
|
83
|
+
(-2 * math.pi, 2 * math.pi),
|
|
84
|
+
(-2.059488, 2.094395), # (-2.18, 2.18),
|
|
85
|
+
(-0.191986, 3.92699),
|
|
86
|
+
(-2 * math.pi, 2 * math.pi),
|
|
87
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
88
|
+
(-2 * math.pi, 2 * math.pi)
|
|
89
|
+
],
|
|
90
|
+
Type.XARM6_X9: [
|
|
91
|
+
(-2 * math.pi, 2 * math.pi),
|
|
92
|
+
(-2.6179938779914944, 2.6179938779914944),
|
|
93
|
+
(-0.061086523819801536, 5.235987755982989),
|
|
94
|
+
(-2 * math.pi, 2 * math.pi),
|
|
95
|
+
(-2.1642082724729685, 2.1642082724729685),
|
|
96
|
+
(-2 * math.pi, 2 * math.pi),
|
|
97
|
+
],
|
|
98
|
+
Type.XARM6_X11: [
|
|
99
|
+
(-2 * math.pi, 2 * math.pi),
|
|
100
|
+
(-2 * math.pi, 2 * math.pi),
|
|
101
|
+
(-2 * math.pi, 2 * math.pi),
|
|
102
|
+
(-2 * math.pi, 2 * math.pi),
|
|
103
|
+
(-1.692969, math.pi),
|
|
104
|
+
(-2 * math.pi, 2 * math.pi),
|
|
105
|
+
],
|
|
106
|
+
Type.XARM6_X12: [
|
|
107
|
+
(-2 * math.pi, 2 * math.pi),
|
|
108
|
+
(-2.303834612632515, 2.303834612632515),
|
|
109
|
+
(-4.223696789826278, 0.061086523819801536),
|
|
110
|
+
(-2 * math.pi, 2 * math.pi),
|
|
111
|
+
(-2.1642082724729685, 2.1642082724729685),
|
|
112
|
+
(-2 * math.pi, 2 * math.pi),
|
|
113
|
+
],
|
|
114
|
+
|
|
115
|
+
},
|
|
116
|
+
Axis.XARM7: {
|
|
117
|
+
Type.XARM7_X3: [
|
|
118
|
+
(-2 * math.pi, 2 * math.pi),
|
|
119
|
+
(-2.059488, 2.094395), # (-2.18, 2.18),
|
|
120
|
+
(-2 * math.pi, 2 * math.pi),
|
|
121
|
+
(-3.92699, 0.191986), # (-4.01, 0.1),
|
|
122
|
+
(-2 * math.pi, 2 * math.pi),
|
|
123
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
124
|
+
(-2 * math.pi, 2 * math.pi)
|
|
125
|
+
],
|
|
126
|
+
Type.XARM7_X4: [
|
|
127
|
+
(-2 * math.pi, 2 * math.pi),
|
|
128
|
+
(-2.059488, 2.094395), # (-2.18, 2.18),
|
|
129
|
+
(-2 * math.pi, 2 * math.pi),
|
|
130
|
+
(-0.191986, 3.92699), # (-0.1, 4.01),
|
|
131
|
+
(-2 * math.pi, 2 * math.pi),
|
|
132
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
133
|
+
(-2 * math.pi, 2 * math.pi)
|
|
134
|
+
],
|
|
135
|
+
Type.XARM7_X4_1305: [
|
|
136
|
+
(-2 * math.pi, 2 * math.pi),
|
|
137
|
+
(-2.042035, 2.024581),
|
|
138
|
+
(-2 * math.pi, 2 * math.pi),
|
|
139
|
+
(-0.10472, 3.92699),
|
|
140
|
+
(-2 * math.pi, 2 * math.pi),
|
|
141
|
+
(-1.692969, math.pi), # (-1.75, math.pi),
|
|
142
|
+
(-2 * math.pi, 2 * math.pi)
|
|
143
|
+
],
|
|
144
|
+
Type.XARM7_X13: [
|
|
145
|
+
(-2 * math.pi, 2 * math.pi),
|
|
146
|
+
(-2.094395, 2.059488), # (-2.18, 2.18),
|
|
147
|
+
(-2 * math.pi, 2 * math.pi),
|
|
148
|
+
(-3.92699, 0.191986),
|
|
149
|
+
(-2 * math.pi, 2 * math.pi),
|
|
150
|
+
(-math.pi, 1.692969),
|
|
151
|
+
(-2 * math.pi, 2 * math.pi)
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
TCP_LIMITS = {
|
|
156
|
+
Axis.XARM5: {
|
|
157
|
+
Type.XARM5_X4: [
|
|
158
|
+
(-750, 750),
|
|
159
|
+
(-750, 750),
|
|
160
|
+
(-400, 1000),
|
|
161
|
+
(math.pi, math.pi),
|
|
162
|
+
(0, 0),
|
|
163
|
+
(-math.pi, math.pi)
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
Axis.XARM6: {
|
|
167
|
+
Type.XARM6_X1: [
|
|
168
|
+
(-750, 750),
|
|
169
|
+
(-750, 750),
|
|
170
|
+
(-400, 1000),
|
|
171
|
+
(-math.pi, math.pi),
|
|
172
|
+
(-math.pi, math.pi),
|
|
173
|
+
(-math.pi, math.pi)
|
|
174
|
+
],
|
|
175
|
+
Type.XARM6_X4: [
|
|
176
|
+
(-750, 750),
|
|
177
|
+
(-750, 750),
|
|
178
|
+
(-400, 1000),
|
|
179
|
+
(-math.pi, math.pi),
|
|
180
|
+
(-math.pi, math.pi),
|
|
181
|
+
(-math.pi, math.pi)
|
|
182
|
+
],
|
|
183
|
+
Type.XARM6_X8: [
|
|
184
|
+
(-1000, 1000),
|
|
185
|
+
(-1000, 1000),
|
|
186
|
+
(-600, 1200),
|
|
187
|
+
(-math.pi, math.pi),
|
|
188
|
+
(-math.pi, math.pi),
|
|
189
|
+
(-math.pi, math.pi)
|
|
190
|
+
],
|
|
191
|
+
Type.XARM6_X9: [
|
|
192
|
+
(-500, 500),
|
|
193
|
+
(-500, 500),
|
|
194
|
+
(-150, 750),
|
|
195
|
+
(-math.pi, math.pi),
|
|
196
|
+
(-math.pi, math.pi),
|
|
197
|
+
(-math.pi, math.pi)
|
|
198
|
+
],
|
|
199
|
+
Type.XARM6_X11: [
|
|
200
|
+
(-900, 900),
|
|
201
|
+
(-900, 900),
|
|
202
|
+
(-900, 1200),
|
|
203
|
+
(-math.pi, math.pi),
|
|
204
|
+
(-math.pi, math.pi),
|
|
205
|
+
(-math.pi, math.pi)
|
|
206
|
+
],
|
|
207
|
+
Type.XARM6_X12: [
|
|
208
|
+
(-1000, 1000),
|
|
209
|
+
(-1000, 1000),
|
|
210
|
+
(-400, 1300),
|
|
211
|
+
(-math.pi, math.pi),
|
|
212
|
+
(-math.pi, math.pi),
|
|
213
|
+
(-math.pi, math.pi)
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
Axis.XARM7: {
|
|
217
|
+
Type.XARM7_X3: [
|
|
218
|
+
(-750, 750),
|
|
219
|
+
(-750, 750),
|
|
220
|
+
(-400, 1000),
|
|
221
|
+
(-math.pi, math.pi),
|
|
222
|
+
(-math.pi, math.pi),
|
|
223
|
+
(-math.pi, math.pi)
|
|
224
|
+
],
|
|
225
|
+
Type.XARM7_X4: [
|
|
226
|
+
(-750, 750),
|
|
227
|
+
(-750, 750),
|
|
228
|
+
(-400, 1000),
|
|
229
|
+
(-math.pi, math.pi),
|
|
230
|
+
(-math.pi, math.pi),
|
|
231
|
+
(-math.pi, math.pi)
|
|
232
|
+
],
|
|
233
|
+
Type.XARM7_X13: [
|
|
234
|
+
(-750, 750),
|
|
235
|
+
(-750, 750),
|
|
236
|
+
(-400, 1000),
|
|
237
|
+
(-math.pi, math.pi),
|
|
238
|
+
(-math.pi, math.pi),
|
|
239
|
+
(-math.pi, math.pi)
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
class SerialConf:
|
|
245
|
+
SERIAL_BAUD = 2000000 # 921600
|
|
246
|
+
UXBUS_RXQUE_MAX = 10
|
|
247
|
+
UXBUS_DEF_FROMID = 0xAA
|
|
248
|
+
UXBUS_DEF_TOID = 0x55
|
|
249
|
+
UX2_HEX_PROTOCOL = 1
|
|
250
|
+
UX2_STR_PROTOCOL = 2
|
|
251
|
+
UX1_HEX_PROTOCOL = 3
|
|
252
|
+
UX1_STR_PROTOCOL = 4
|
|
253
|
+
|
|
254
|
+
class SocketConf:
|
|
255
|
+
TCP_CONTROL_PORT = 502
|
|
256
|
+
TCP_REPORT_NORM_PORT = 30001
|
|
257
|
+
TCP_REPORT_RICH_PORT = 30002
|
|
258
|
+
TCP_REPORT_REAL_PORT = 30003
|
|
259
|
+
TCP_RX_QUE_MAX = 1024
|
|
260
|
+
TCP_CONTROL_BUF_SIZE = 1024
|
|
261
|
+
TCP_REPORT_REAL_BUF_SIZE = 87
|
|
262
|
+
TCP_REPORT_NORMAL_BUF_SIZE = 133
|
|
263
|
+
TCP_REPORT_RICH_BUF_SIZE = 233
|
|
264
|
+
|
|
265
|
+
class UxbusReg:
|
|
266
|
+
GET_VERSION = 1
|
|
267
|
+
GET_ROBOT_SN = 2
|
|
268
|
+
CHECK_VERIFY = 3
|
|
269
|
+
RELOAD_DYNAMICS = 4
|
|
270
|
+
GET_REPORT_TAU_OR_I = 5
|
|
271
|
+
GET_TCP_ROTATION_RADIUS = 6
|
|
272
|
+
GET_ALLOW_APPROX_MOTION = 7
|
|
273
|
+
|
|
274
|
+
SYSTEM_CONTROL = 10
|
|
275
|
+
MOTION_EN = 11
|
|
276
|
+
SET_STATE = 12
|
|
277
|
+
GET_STATE = 13
|
|
278
|
+
GET_CMDNUM = 14
|
|
279
|
+
GET_ERROR = 15
|
|
280
|
+
CLEAN_ERR = 16
|
|
281
|
+
CLEAN_WAR = 17
|
|
282
|
+
SET_BRAKE = 18
|
|
283
|
+
SET_MODE = 19
|
|
284
|
+
|
|
285
|
+
MOVE_LINE = 21
|
|
286
|
+
MOVE_LINEB = 22
|
|
287
|
+
MOVE_JOINT = 23
|
|
288
|
+
MOVE_JOINTB = 24
|
|
289
|
+
MOVE_HOME = 25
|
|
290
|
+
SLEEP_INSTT = 26
|
|
291
|
+
MOVE_CIRCLE = 27
|
|
292
|
+
MOVE_LINE_TOOL = 28
|
|
293
|
+
MOVE_SERVOJ = 29
|
|
294
|
+
MOVE_SERVO_CART = 30
|
|
295
|
+
|
|
296
|
+
SET_TCP_JERK = 31
|
|
297
|
+
SET_TCP_MAXACC = 32
|
|
298
|
+
SET_JOINT_JERK = 33
|
|
299
|
+
SET_JOINT_MAXACC = 34
|
|
300
|
+
SET_TCP_OFFSET = 35
|
|
301
|
+
SET_LOAD_PARAM = 36
|
|
302
|
+
SET_COLLIS_SENS = 37
|
|
303
|
+
SET_TEACH_SENS = 38
|
|
304
|
+
CLEAN_CONF = 39
|
|
305
|
+
SAVE_CONF = 40
|
|
306
|
+
|
|
307
|
+
GET_TCP_POSE = 41
|
|
308
|
+
GET_JOINT_POS = 42
|
|
309
|
+
GET_IK = 43
|
|
310
|
+
GET_FK = 44
|
|
311
|
+
IS_JOINT_LIMIT = 45
|
|
312
|
+
IS_TCP_LIMIT = 46
|
|
313
|
+
|
|
314
|
+
SET_REDUCED_TRSV = 47
|
|
315
|
+
SET_REDUCED_P2PV = 48
|
|
316
|
+
GET_REDUCED_MODE = 49
|
|
317
|
+
SET_REDUCED_MODE = 50
|
|
318
|
+
SET_GRAVITY_DIR = 51
|
|
319
|
+
SET_LIMIT_XYZ = 52
|
|
320
|
+
GET_REDUCED_STATE = 53
|
|
321
|
+
|
|
322
|
+
SET_SERVOT = 54 # no longer supported
|
|
323
|
+
GET_JOINT_TAU = 55
|
|
324
|
+
SET_SAFE_LEVEL = 56
|
|
325
|
+
GET_SAFE_LEVEL = 57
|
|
326
|
+
|
|
327
|
+
SET_REDUCED_JRANGE = 58
|
|
328
|
+
SET_FENSE_ON = 59
|
|
329
|
+
SET_COLLIS_REB = 60
|
|
330
|
+
|
|
331
|
+
SET_TRAJ_RECORD = 61
|
|
332
|
+
SAVE_TRAJ = 62
|
|
333
|
+
LOAD_TRAJ = 63
|
|
334
|
+
PLAY_TRAJ = 64
|
|
335
|
+
GET_TRAJ_RW_STATUS = 65
|
|
336
|
+
SET_ALLOW_APPROX_MOTION = 66
|
|
337
|
+
GET_DH = 67
|
|
338
|
+
SET_DH = 68
|
|
339
|
+
GET_MOVEMENT = 69
|
|
340
|
+
|
|
341
|
+
REPORT_TAU_OR_I = 70
|
|
342
|
+
SET_TIMER = 71
|
|
343
|
+
CANCEL_TIMER = 72
|
|
344
|
+
SET_WORLD_OFFSET = 73
|
|
345
|
+
CNTER_RESET = 74
|
|
346
|
+
CNTER_PLUS = 75
|
|
347
|
+
|
|
348
|
+
CAL_POSE_OFFSET = 76
|
|
349
|
+
|
|
350
|
+
SET_SELF_COLLIS_CHECK = 77
|
|
351
|
+
SET_COLLIS_TOOL = 78
|
|
352
|
+
SET_SIMULATION_ROBOT = 79
|
|
353
|
+
SET_CARTV_CONTINUE = 80
|
|
354
|
+
|
|
355
|
+
VC_SET_JOINTV = 81
|
|
356
|
+
VC_SET_CARTV = 82
|
|
357
|
+
MOVE_RELATIVE = 83
|
|
358
|
+
|
|
359
|
+
GET_TCP_POSE_AA = 91
|
|
360
|
+
MOVE_LINE_AA = 92
|
|
361
|
+
MOVE_SERVO_CART_AA = 93
|
|
362
|
+
|
|
363
|
+
SERVO_W16B = 101
|
|
364
|
+
SERVO_R16B = 102
|
|
365
|
+
SERVO_W32B = 103
|
|
366
|
+
SERVO_R32B = 104
|
|
367
|
+
SERVO_ZERO = 105
|
|
368
|
+
SERVO_DBMSG = 106
|
|
369
|
+
SERVO_ERROR = 107
|
|
370
|
+
|
|
371
|
+
CALI_TCP_POSE = 111
|
|
372
|
+
CALI_TCP_ORIENT = 112
|
|
373
|
+
CALI_WRLD_ORIENT = 113
|
|
374
|
+
CALI_WRLD_POSE = 114
|
|
375
|
+
IDEN_FRIC = 115
|
|
376
|
+
|
|
377
|
+
TGPIO_MB_TIOUT = 123
|
|
378
|
+
TGPIO_MODBUS = 124
|
|
379
|
+
TGPIO_ERR = 125
|
|
380
|
+
TGPIO_W16B = 127
|
|
381
|
+
TGPIO_R16B = 128
|
|
382
|
+
TGPIO_W32B = 129
|
|
383
|
+
TGPIO_R32B = 130
|
|
384
|
+
|
|
385
|
+
CGPIO_GET_DIGIT = 131
|
|
386
|
+
CGPIO_GET_ANALOG1 = 132
|
|
387
|
+
CGPIO_GET_ANALOG2 = 133
|
|
388
|
+
CGPIO_SET_DIGIT = 134
|
|
389
|
+
CGPIO_SET_ANALOG1 = 135
|
|
390
|
+
CGPIO_SET_ANALOG2 = 136
|
|
391
|
+
CGPIO_SET_IN_FUN = 137
|
|
392
|
+
CGPIO_SET_OUT_FUN = 138
|
|
393
|
+
CGPIO_GET_STATE = 139
|
|
394
|
+
|
|
395
|
+
GET_PWR_VERSION = 140
|
|
396
|
+
GET_HD_TYPES = 141
|
|
397
|
+
DELAYED_CGPIO_SET = 142
|
|
398
|
+
DELAYED_TGPIO_SET = 143
|
|
399
|
+
POSITION_CGPIO_SET = 144
|
|
400
|
+
POSITION_TGPIO_SET = 145
|
|
401
|
+
SET_IO_STOP_RESET = 146
|
|
402
|
+
POSITION_CGPIO_SET_ANALOG = 147
|
|
403
|
+
|
|
404
|
+
FTSENSOR_GET_DATA_OLD = 150 # only available in firmware version < 1.8.3
|
|
405
|
+
FTSENSOR_GET_DATA = 200
|
|
406
|
+
FTSENSOR_ENABLE = 201
|
|
407
|
+
FTSENSOR_SET_APP = 202
|
|
408
|
+
FTSENSOR_GET_APP = 203
|
|
409
|
+
IDEN_LOAD = 204
|
|
410
|
+
FTSENSOR_CALI_LOAD_OFFSET = 205
|
|
411
|
+
FTSENSOR_SET_ZERO = 206
|
|
412
|
+
IMPEDANCE_CONFIG = 207
|
|
413
|
+
FORCE_CTRL_PID = 208
|
|
414
|
+
FORCE_CTRL_CONFIG = 209
|
|
415
|
+
IMPEDANCE_CTRL_MBK = 210
|
|
416
|
+
IMPEDANCE_CTRL_CONFIG = 211
|
|
417
|
+
FTSENSOR_GET_CONFIG = 212
|
|
418
|
+
|
|
419
|
+
GET_TRAJ_SPEEDING = 230
|
|
420
|
+
GET_MAX_JOINT_VELOCITY = 231
|
|
421
|
+
SET_COMMON_PARAM = 232
|
|
422
|
+
GET_COMMON_PARAM = 233
|
|
423
|
+
GET_COMMON_INFO = 234
|
|
424
|
+
|
|
425
|
+
TGPIO_COM_TIOUT = 240
|
|
426
|
+
TGPIO_COM_DATA = 241
|
|
427
|
+
|
|
428
|
+
FEEDBACK_CHECK = 253
|
|
429
|
+
SET_FEEDBACK_TYPE = 254
|
|
430
|
+
|
|
431
|
+
class UxbusConf:
|
|
432
|
+
SET_TIMEOUT = 2000 # ms
|
|
433
|
+
GET_TIMEOUT = 2000 # ms
|
|
434
|
+
|
|
435
|
+
class ServoConf:
|
|
436
|
+
CON_EN = 0x0100
|
|
437
|
+
CON_MODE = 0x0101
|
|
438
|
+
CON_DIR = 0x0102
|
|
439
|
+
|
|
440
|
+
SV3MOD_POS = 0
|
|
441
|
+
SV3MOD_SPD = 1
|
|
442
|
+
SV3MOD_FOS = 2
|
|
443
|
+
SV3_SAVE = 0x1000
|
|
444
|
+
|
|
445
|
+
BRAKE = 0x0104
|
|
446
|
+
GET_TEMP = 0x000E
|
|
447
|
+
ERR_CODE = 0x000F
|
|
448
|
+
OVER_TEMP = 0x0108
|
|
449
|
+
CURR_CURR = 0x0001
|
|
450
|
+
POS_KP = 0x0200
|
|
451
|
+
POS_FWDKP = 0x0201
|
|
452
|
+
POS_PWDTC = 0x0202
|
|
453
|
+
SPD_KP = 0x0203
|
|
454
|
+
SPD_KI = 0x0204
|
|
455
|
+
CURR_KP = 0x090C
|
|
456
|
+
CURR_KI = 0x090D
|
|
457
|
+
SPD_IFILT = 0x030C
|
|
458
|
+
SPD_OFILT = 0x030D
|
|
459
|
+
POS_CMDILT = 0x030E
|
|
460
|
+
CURR_IFILT = 0x0401
|
|
461
|
+
POS_KD = 0x0205
|
|
462
|
+
POS_ACCT = 0x0300
|
|
463
|
+
POS_DECT = 0x0301
|
|
464
|
+
POS_STHT = 0x0302
|
|
465
|
+
POS_SPD = 0x0303
|
|
466
|
+
MT_ID = 0x1600
|
|
467
|
+
BAUDRATE = 0x0601
|
|
468
|
+
SOFT_REBOOT = 0x0607
|
|
469
|
+
TAGET_TOQ = 0x050a
|
|
470
|
+
CURR_TOQ = 0x050c
|
|
471
|
+
TOQ_SPD = 0x050e
|
|
472
|
+
TAGET_POS = 0x0700
|
|
473
|
+
CURR_POS = 0x0702
|
|
474
|
+
HARD_VER = 0x0800
|
|
475
|
+
SOFT_VER = 0x0801
|
|
476
|
+
MT_TYPE = 0x0802
|
|
477
|
+
MT_ZERO = 0x0817
|
|
478
|
+
RESET_PVL = 0x0813
|
|
479
|
+
CAL_ZERO = 0x080C
|
|
480
|
+
ERR_SWITCH = 0x0910
|
|
481
|
+
RESET_ERR = 0x0109
|
|
482
|
+
SV3_BRO_ID = 0xFF
|
|
483
|
+
|
|
484
|
+
MODBUS_BAUDRATE = 0x0A0B
|
|
485
|
+
TOOL_MB_TIMEOUT = 0x0A0E
|
|
486
|
+
TI2_IN = 0x0A12
|
|
487
|
+
TI2_TIME = 0x0A13
|
|
488
|
+
DIGITAL_IN = 0x0A14
|
|
489
|
+
DIGITAL_OUT = 0x0A15
|
|
490
|
+
ANALOG_IO1 = 0x0A16
|
|
491
|
+
ANALOG_IO2 = 0x0A17
|
|
492
|
+
|
|
493
|
+
BACK_ORIGIN = 0x0A0A
|
|
494
|
+
STOP_TRACK = 0x0A0E
|
|
495
|
+
|
|
496
|
+
class UxbusState:
|
|
497
|
+
ERR_CODE = 1 # 有尚未清除的错误
|
|
498
|
+
WAR_CODE = 2 # 有尚未清除的警告
|
|
499
|
+
ERR_TOUT = 3 # 获取结果超时
|
|
500
|
+
ERR_LENG = 4 # TCP回复长度错误
|
|
501
|
+
ERR_NUM = 5 # TCP回复序号错误
|
|
502
|
+
ERR_PROT = 6 # TCP协议标志错误
|
|
503
|
+
ERR_FUN = 7 # TCP回复指令和发送指令不匹配
|
|
504
|
+
ERR_NOTTCP = 8 # 发送错误
|
|
505
|
+
STATE_NOT_READY = 9 # 未准备好运动
|
|
506
|
+
INVALID = 10 # 结果无效或执行失败
|
|
507
|
+
ERR_OTHER = 11 # 其它错误
|
|
508
|
+
ERR_PARAM = 12 # 参数错误
|
|
509
|
+
|
|
510
|
+
class TrajState:
|
|
511
|
+
IDLE = 0
|
|
512
|
+
LOADING = 1
|
|
513
|
+
LOAD_SUCCESS = 2
|
|
514
|
+
LOAD_FAIL = 3
|
|
515
|
+
SAVING = 4
|
|
516
|
+
SAVE_SUCCESS = 5
|
|
517
|
+
SAVE_FAIL = 6
|
|
518
|
+
|
|
519
|
+
class BioGripperState:
|
|
520
|
+
IS_STOP = 0
|
|
521
|
+
IS_MOTION = 1
|
|
522
|
+
IS_DETECTED = 2
|
|
523
|
+
IS_FAULT = 3
|
|
524
|
+
IS_NOT_ENABLED = 0
|
|
525
|
+
IS_ENABLING = 1
|
|
526
|
+
IS_ENABLED = 2
|
|
527
|
+
|
|
528
|
+
class CollisionToolType:
|
|
529
|
+
NONE = 0
|
|
530
|
+
XARM_GRIPPER = 1
|
|
531
|
+
XARM_VACUUM_GRIPPER = 2
|
|
532
|
+
XARM_BIO_GRIPPER = 3
|
|
533
|
+
ROBOTIQ_2F85 = 4
|
|
534
|
+
ROBOTIQ_2F140 = 5
|
|
535
|
+
|
|
536
|
+
USE_PRIMITIVES = 20 # just for judgement, threshold.
|
|
537
|
+
CYLINDER = 21 # radius, height
|
|
538
|
+
BOX = 22 # x, y, z in tool coordinate direction
|
|
539
|
+
|
|
540
|
+
class FeedbackType:
|
|
541
|
+
MOTION_START = 1
|
|
542
|
+
MOTION_FINISH = 2
|
|
543
|
+
TRIGGER = 4
|
|
544
|
+
OTHER_START = 32
|
|
545
|
+
OTHER_FINISH = 64
|
|
546
|
+
|
|
547
|
+
class FeedbackCode:
|
|
548
|
+
SUCCESS = 0
|
|
549
|
+
FAILURE = 1
|
|
550
|
+
DISCARD = 2
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: UTF-8 -*-
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# ./common_modules/common_type.py
|
|
6
|
+
# Copyright (C) 2018.4 - UFactory.
|
|
7
|
+
# Author: Jimy Zhang <jimy.zhang@ufactory.cc>
|
|
8
|
+
# <jimy92@163.com>
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
import struct
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def fp32_to_bytes(data, is_big_endian=False):
|
|
15
|
+
"""小端字节序"""
|
|
16
|
+
return bytes(struct.pack('>f' if is_big_endian else '<f', data))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def int32_to_bytes(data, is_big_endian=False):
|
|
20
|
+
"""小端字节序"""
|
|
21
|
+
return bytes(struct.pack('>i' if is_big_endian else '<i', data))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def int32s_to_bytes(data, n):
|
|
25
|
+
"""小端字节序"""
|
|
26
|
+
assert n > 0
|
|
27
|
+
ret = int32_to_bytes(data[0])
|
|
28
|
+
for i in range(1, n):
|
|
29
|
+
ret += int32_to_bytes(data[i])
|
|
30
|
+
return ret
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def bytes_to_fp32(data):
|
|
34
|
+
"""小端字节序"""
|
|
35
|
+
byte = bytes([data[0]])
|
|
36
|
+
byte += bytes([data[1]])
|
|
37
|
+
byte += bytes([data[2]])
|
|
38
|
+
byte += bytes([data[3]])
|
|
39
|
+
ret = struct.unpack('<f', byte)
|
|
40
|
+
return ret[0]
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def fp32s_to_bytes(data, n):
|
|
44
|
+
"""小端字节序"""
|
|
45
|
+
assert n > 0
|
|
46
|
+
ret = fp32_to_bytes(data[0])
|
|
47
|
+
for i in range(1, n):
|
|
48
|
+
ret += fp32_to_bytes(data[i])
|
|
49
|
+
return ret
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def bytes_to_fp32s(data, n):
|
|
53
|
+
"""小端字节序"""
|
|
54
|
+
ret = [0] * n
|
|
55
|
+
for i in range(n):
|
|
56
|
+
ret[i] = bytes_to_fp32(data[i * 4:i * 4 + 4])
|
|
57
|
+
return ret
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def u16_to_bytes(data):
|
|
61
|
+
"""大端字节序"""
|
|
62
|
+
bts = bytes([data // 256 % 256])
|
|
63
|
+
bts += bytes([data % 256])
|
|
64
|
+
return bts
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def u16s_to_bytes(data, num):
|
|
68
|
+
"""大端字节序"""
|
|
69
|
+
bts = b''
|
|
70
|
+
if num != 0:
|
|
71
|
+
bts = u16_to_bytes(data[0])
|
|
72
|
+
for i in range(1, num):
|
|
73
|
+
bts += u16_to_bytes(data[i])
|
|
74
|
+
return bts
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def bytes_to_u16(data):
|
|
78
|
+
"""大端字节序"""
|
|
79
|
+
data_u16 = data[0] << 8 | data[1]
|
|
80
|
+
return data_u16
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def bytes_to_u16s(data, n):
|
|
84
|
+
"""大端字节序"""
|
|
85
|
+
ret = [0] * n
|
|
86
|
+
for i in range(n):
|
|
87
|
+
ret[i] = bytes_to_u16(data[i * 2: i * 2 + 2])
|
|
88
|
+
return ret
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def bytes_to_16s(data, n):
|
|
92
|
+
"""大端字节序"""
|
|
93
|
+
ret = [0] * n
|
|
94
|
+
for i in range(n):
|
|
95
|
+
ret[i] = struct.unpack('>h', bytes(data[i * 2: i * 2 + 2]))[0]
|
|
96
|
+
return ret
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def bytes_to_u32(data):
|
|
100
|
+
"""大端字节序"""
|
|
101
|
+
data_u32 = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3]
|
|
102
|
+
return data_u32
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def bytes_to_u64(data):
|
|
106
|
+
data_u64 = data[0] << 56 | data[1] << 48 | data[2] << 40 | data[3] << 32 | data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7]
|
|
107
|
+
return data_u64
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def bytes_to_num32(data, fmt='>l'):
|
|
111
|
+
byte = bytes([data[0]])
|
|
112
|
+
byte += bytes([data[1]])
|
|
113
|
+
byte += bytes([data[2]])
|
|
114
|
+
byte += bytes([data[3]])
|
|
115
|
+
ret = struct.unpack(fmt, byte)
|
|
116
|
+
return ret[0]
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def bytes_to_long_big(data):
|
|
120
|
+
"""大端字节序"""
|
|
121
|
+
return bytes_to_num32(data, '>l')
|
|
122
|
+
|
|
123
|
+
def bytes_to_int32(data):
|
|
124
|
+
return int.from_bytes(data, byteorder='big', signed=True)
|