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.
Files changed (63) hide show
  1. xarm/__init__.py +2 -0
  2. xarm/build_backend.py +17 -0
  3. xarm/core/__init__.py +2 -0
  4. xarm/core/comm/__init__.py +5 -0
  5. xarm/core/comm/base.py +303 -0
  6. xarm/core/comm/serial_port.py +44 -0
  7. xarm/core/comm/socket_port.py +150 -0
  8. xarm/core/comm/uxbus_cmd_protocol.py +100 -0
  9. xarm/core/config/__init__.py +0 -0
  10. xarm/core/config/x_code.py +1427 -0
  11. xarm/core/config/x_config.py +553 -0
  12. xarm/core/utils/__init__.py +3 -0
  13. xarm/core/utils/convert.py +124 -0
  14. xarm/core/utils/crc16.py +76 -0
  15. xarm/core/utils/debug_print.py +21 -0
  16. xarm/core/utils/log.py +98 -0
  17. xarm/core/version.py +1 -0
  18. xarm/core/wrapper/__init__.py +11 -0
  19. xarm/core/wrapper/uxbus_cmd.py +1457 -0
  20. xarm/core/wrapper/uxbus_cmd_ser.py +94 -0
  21. xarm/core/wrapper/uxbus_cmd_tcp.py +305 -0
  22. xarm/tools/__init__.py +0 -0
  23. xarm/tools/blockly/__init__.py +1 -0
  24. xarm/tools/blockly/_blockly_base.py +416 -0
  25. xarm/tools/blockly/_blockly_handler.py +1338 -0
  26. xarm/tools/blockly/_blockly_highlight.py +94 -0
  27. xarm/tools/blockly/_blockly_node.py +61 -0
  28. xarm/tools/blockly/_blockly_tool.py +480 -0
  29. xarm/tools/blockly_tool.py +1864 -0
  30. xarm/tools/gcode.py +90 -0
  31. xarm/tools/list_ports.py +39 -0
  32. xarm/tools/modbus_tcp.py +205 -0
  33. xarm/tools/threads.py +30 -0
  34. xarm/tools/utils.py +36 -0
  35. xarm/version.py +1 -0
  36. xarm/wrapper/__init__.py +1 -0
  37. xarm/wrapper/studio_api.py +34 -0
  38. xarm/wrapper/xarm_api.py +4416 -0
  39. xarm/x3/__init__.py +2 -0
  40. xarm/x3/base.py +2638 -0
  41. xarm/x3/base_board.py +198 -0
  42. xarm/x3/code.py +62 -0
  43. xarm/x3/decorator.py +104 -0
  44. xarm/x3/events.py +166 -0
  45. xarm/x3/ft_sensor.py +264 -0
  46. xarm/x3/gpio.py +457 -0
  47. xarm/x3/grammar_async.py +21 -0
  48. xarm/x3/grammar_coroutine.py +24 -0
  49. xarm/x3/gripper.py +830 -0
  50. xarm/x3/modbus_tcp.py +84 -0
  51. xarm/x3/parse.py +110 -0
  52. xarm/x3/record.py +216 -0
  53. xarm/x3/report.py +204 -0
  54. xarm/x3/robotiq.py +220 -0
  55. xarm/x3/servo.py +485 -0
  56. xarm/x3/studio.py +138 -0
  57. xarm/x3/track.py +424 -0
  58. xarm/x3/utils.py +43 -0
  59. xarm/x3/xarm.py +1928 -0
  60. xarm_python_sdk-1.15.2.dist-info/METADATA +103 -0
  61. xarm_python_sdk-1.15.2.dist-info/RECORD +63 -0
  62. xarm_python_sdk-1.15.2.dist-info/WHEEL +4 -0
  63. 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,3 @@
1
+ #!/usr/bin/python3
2
+ # -*- coding: UTF-8 -*-
3
+
@@ -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)