pymycobot 3.5.0.dev9__tar.gz → 3.5.0.dev10__tar.gz
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.
- {pymycobot-3.5.0.dev9/pymycobot.egg-info → pymycobot-3.5.0.dev10}/PKG-INFO +1 -1
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/__init__.py +1 -1
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercury_api.py +45 -44
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10/pymycobot.egg-info}/PKG-INFO +1 -1
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/LICENSE +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/MANIFEST.in +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/README.md +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/Interface.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/bluet.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/close_loop.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/common.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/conveyor_api.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/dualcobotx.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/elephantrobot.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/error.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/generate.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/genre.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/log.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mecharm.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mecharm270.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mecharmsocket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercury.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercury_arms_socket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercury_ros_api.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercurychassis.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercurychassis_api.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mercurysocket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myagv.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myarm.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myarm_api.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myarmc.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myarmm.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myarmm_control.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/myarmsocket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mybuddy.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mybuddybluetooth.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mybuddyemoticon.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mybuddysocket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobot.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobot280.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobot280socket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobot280x5pi.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobot320.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobot320socket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobotpro630.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mycobotsocket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mypalletizer.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mypalletizer260.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/mypalletizersocket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/pro400.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/pro400client.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/pro630.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/pro630client.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/progripper.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/protocol_packet_handler.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/public.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/robot_info.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/sms.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/tool_coords.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/ultraArm.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot/utils.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot.egg-info/SOURCES.txt +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot.egg-info/dependency_links.txt +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot.egg-info/requires.txt +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/pymycobot.egg-info/top_level.txt +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/requirements.txt +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/setup.cfg +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/setup.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/__init__.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/conftest.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/rasp_myArm_test_gui.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/rasp_mycobot_test_gui.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/rasp_mypall_test_gui.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/special_angles.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/test_api.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/test_generator.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/test_socket.py +0 -0
- {pymycobot-3.5.0.dev9 → pymycobot-3.5.0.dev10}/tests/test_utils.py +0 -0
|
@@ -87,7 +87,7 @@ if sys.platform == "linux":
|
|
|
87
87
|
from pymycobot.mybuddyemoticon import MyBuddyEmoticon
|
|
88
88
|
__all__.append("MyBuddyEmoticon")
|
|
89
89
|
|
|
90
|
-
__version__ = "3.5.
|
|
90
|
+
__version__ = "3.5.0dev10"
|
|
91
91
|
__author__ = "Elephantrobotics"
|
|
92
92
|
__email__ = "weiquan.xu@elephantrobotics.com"
|
|
93
93
|
__git_url__ = "https://github.com/elephantrobotics/pymycobot"
|
|
@@ -32,9 +32,9 @@ class MercuryCommandGenerator(DataProcessor):
|
|
|
32
32
|
self.all_read_data = b""
|
|
33
33
|
|
|
34
34
|
def _joint_limit_init(self):
|
|
35
|
-
max_joint = np.zeros(
|
|
36
|
-
min_joint = np.zeros(
|
|
37
|
-
for i in range(
|
|
35
|
+
max_joint = np.zeros(6)
|
|
36
|
+
min_joint = np.zeros(6)
|
|
37
|
+
for i in range(6):
|
|
38
38
|
max_joint[i] = self.get_joint_max_angle(i + 1)
|
|
39
39
|
min_joint[i] = self.get_joint_min_angle(i + 1)
|
|
40
40
|
return max_joint, min_joint
|
|
@@ -318,8 +318,8 @@ class MercuryCommandGenerator(DataProcessor):
|
|
|
318
318
|
byte_value = int.from_bytes(
|
|
319
319
|
valid_data[i:i+4], byteorder='big', signed=True)
|
|
320
320
|
res.append(byte_value)
|
|
321
|
-
elif data_len == 6 and genre in [ProtocolCode.GET_SERVO_STATUS, ProtocolCode.GET_SERVO_VOLTAGES,
|
|
322
|
-
ProtocolCode.GET_SERVO_CURRENTS]:
|
|
321
|
+
elif data_len == 6 and genre in [ProtocolCode.GET_SERVO_STATUS, ProtocolCode.GET_SERVO_VOLTAGES,ProtocolCode.GET_TORQUE_COMP,
|
|
322
|
+
ProtocolCode.GET_SERVO_CURRENTS, ProtocolCode.GET_MODEL_DIRECTION, ProtocolCode.GET_COLLISION_THRESHOLD]:
|
|
323
323
|
for i in range(data_len):
|
|
324
324
|
res.append(valid_data[i])
|
|
325
325
|
else:
|
|
@@ -396,8 +396,8 @@ class MercuryCommandGenerator(DataProcessor):
|
|
|
396
396
|
one = valid_data[i: i + 2]
|
|
397
397
|
res.append(self._decode_int16(one))
|
|
398
398
|
i += 2
|
|
399
|
-
elif data_len ==
|
|
400
|
-
#
|
|
399
|
+
elif data_len == 36 and genre == ProtocolCode.MERCURY_ROBOT_STATUS:
|
|
400
|
+
# 图灵右臂上位机错误:2+6+8*2+6*2 = 36
|
|
401
401
|
i = 0
|
|
402
402
|
res = []
|
|
403
403
|
while i < data_len:
|
|
@@ -590,6 +590,7 @@ class MercuryCommandGenerator(DataProcessor):
|
|
|
590
590
|
elif genre == ProtocolCode.COBOTX_GET_ANGLE:
|
|
591
591
|
return self._int2angle(res[0])
|
|
592
592
|
elif genre == ProtocolCode.MERCURY_ROBOT_STATUS:
|
|
593
|
+
# 图灵:2+6+8*2+6*2 = 36
|
|
593
594
|
if len(res) == 23:
|
|
594
595
|
index = 9
|
|
595
596
|
else:
|
|
@@ -1537,47 +1538,47 @@ class MercuryCommandGenerator(DataProcessor):
|
|
|
1537
1538
|
return self._mesg(ProtocolCode.SEND_ANGLE, joint_id, [self._angle2int(angle)], speed, has_reply=True,
|
|
1538
1539
|
_async=_async)
|
|
1539
1540
|
|
|
1540
|
-
|
|
1541
|
-
|
|
1541
|
+
def send_coord(self, coord_id, coord, speed, _async=False):
|
|
1542
|
+
"""Send one coord to robot arm.
|
|
1542
1543
|
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1544
|
+
Args:
|
|
1545
|
+
coord_id (int): coord id, range 1 ~ 6
|
|
1546
|
+
coord (float): coord value.
|
|
1547
|
+
The coord range of `X` is -351.11 ~ 566.92.
|
|
1548
|
+
The coord range of `Y` is -645.91 ~ 272.12.
|
|
1549
|
+
The coord range of `Y` is -262.91 ~ 655.13.
|
|
1550
|
+
The coord range of `RX` is -180 ~ 180.
|
|
1551
|
+
The coord range of `RY` is -180 ~ 180.
|
|
1552
|
+
The coord range of `RZ` is -180 ~ 180.
|
|
1553
|
+
speed (int): 1 ~ 100
|
|
1554
|
+
"""
|
|
1554
1555
|
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1556
|
+
self.calibration_parameters(
|
|
1557
|
+
class_name=self.__class__.__name__, coord_id=coord_id, coord=coord, speed=speed)
|
|
1558
|
+
value = self._coord2int(coord) if coord_id <= 3 else self._angle2int(coord)
|
|
1559
|
+
return self._mesg(ProtocolCode.SEND_COORD, coord_id, [value], speed, has_reply=True, _async=_async)
|
|
1559
1560
|
|
|
1560
|
-
|
|
1561
|
-
|
|
1561
|
+
def send_coords(self, coords, speed, _async=False):
|
|
1562
|
+
"""Send all coords to robot arm.
|
|
1562
1563
|
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1564
|
+
Args:
|
|
1565
|
+
coords: a list of coords value(List[float]). len 6 [x, y, z, rx, ry, rz]
|
|
1566
|
+
The coord range of `X` is -351.11 ~ 566.92.
|
|
1567
|
+
The coord range of `Y` is -645.91 ~ 272.12.
|
|
1568
|
+
The coord range of `Y` is -262.91 ~ 655.13.
|
|
1569
|
+
The coord range of `RX` is -180 ~ 180.
|
|
1570
|
+
The coord range of `RY` is -180 ~ 180.
|
|
1571
|
+
The coord range of `RZ` is -180 ~ 180.
|
|
1572
|
+
speed : (int) 1 ~ 100
|
|
1573
|
+
"""
|
|
1574
|
+
self.calibration_parameters(
|
|
1575
|
+
class_name=self.__class__.__name__, coords=coords, speed=speed)
|
|
1576
|
+
coord_list = []
|
|
1577
|
+
for idx in range(3):
|
|
1578
|
+
coord_list.append(self._coord2int(coords[idx]))
|
|
1579
|
+
for angle in coords[3:]:
|
|
1580
|
+
coord_list.append(self._angle2int(angle))
|
|
1581
|
+
return self._mesg(ProtocolCode.SEND_COORDS, coord_list, speed, has_reply=True, _async=_async)
|
|
1581
1582
|
|
|
1582
1583
|
def resume(self):
|
|
1583
1584
|
"""Recovery movement"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|