Skip to content

Commit 99d450e

Browse files
authored
Optimize MyCobot280 RDK X5 interface parameter error prompt (#156)
* add MyCobot 280 X5PI API * add MyCobot 280 X5 PI doc * Fix MyCobot 280 X5 Pi doc errors * add MyCobot 280 X5 PI sokcet sever&client * MyCobot 280 X5 PI server compatible with python2 * rename MyCobot280x5pi to MyCobot280RDKX5 * fix MyArmMControl bugs * fix MyArmC bugs * fix myArmM&C demo bug * update M&C demo * fix MyCobot280 rdkx5 bug * fix MyArmM&C bugs * fix bugs * fix bug * fix ThreeHand api bug * Fixed the issue that Pro630 could not read data * fix MyArmM bug * MyArmM&C adds get_joints_coord interface * fix Pro630 bug * fix Pro630 bugs * Fixed the pro630 socket communication bug * Optimize MyCobot280 RDK X5 interface parameter error prompt --------- Co-authored-by: Mrkun5018 <[email protected]>
1 parent 7f4357c commit 99d450e

File tree

3 files changed

+725
-280
lines changed

3 files changed

+725
-280
lines changed

pymycobot/error.py

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ def public_check(parameter_list, kwargs, robot_limit, class_name, exception_clas
278278
elif parameter == "pin_no":
279279
if "Mercury" in class_name:
280280
check_0_or_1(parameter, value, [1, 2, 3, 4, 5, 6], value_type, exception_class, int)
281+
282+
281283
def calibration_parameters(**kwargs):
282284
# with open(os.path.dirname(os.path.abspath(__file__))+"/robot_limit.json") as f:
283285
robot_limit = RobotLimit.robot_limit
@@ -1481,6 +1483,115 @@ def calibration_parameters(**kwargs):
14811483
if not 1 <= s <= 100:
14821484
raise ValueError(
14831485
f"speed value not right, should be 1 ~ 100, the received speed is {value}")
1486+
elif class_name in ("MyCobot280RDK-X5", ):
1487+
robotic_limit_table = RobotLimit.robot_limit["MyCobot280RDK-X5"]
1488+
kwargs.pop("class_name", None)
1489+
for parameter, value in kwargs.items():
1490+
if value is None:
1491+
continue
1492+
1493+
if parameter in ("servo_id", "joint_id", "coord_id"):
1494+
servo_ids = robot_limit[class_name][parameter]
1495+
if value not in servo_ids:
1496+
raise ValueError(f"The {parameter} not right, should be in {servo_ids}, but received {value}.")
1497+
1498+
elif parameter in ('angle', 'coord'):
1499+
if parameter == "angle":
1500+
_id = kwargs.get("joint_id")
1501+
else:
1502+
_id = kwargs.get("coord_id")
1503+
1504+
index = _id - 1
1505+
minimum_position = robotic_limit_table[f"{parameter}s_min"][index]
1506+
maximum_position = robotic_limit_table[f"{parameter}s_max"][index]
1507+
if not minimum_position <= value <= maximum_position:
1508+
raise ValueError(
1509+
f"The {parameter} not right, should be in {minimum_position} ~ {maximum_position}, but received {value}."
1510+
)
1511+
1512+
elif parameter in ('angles', 'coords'):
1513+
if len(value) != 6:
1514+
raise ValueError(f"The length of `{parameter}` must be 6.")
1515+
minimum_position = robotic_limit_table[f"{parameter}_min"]
1516+
maximum_position = robotic_limit_table[f"{parameter}_max"]
1517+
for index, angle in enumerate(value):
1518+
min_pos = minimum_position[index]
1519+
max_pos = maximum_position[index]
1520+
if not min_pos <= angle <= max_pos:
1521+
raise ValueError(
1522+
f"The {parameter} not right, should be in {min_pos} ~ {max_pos}, but received {angle}."
1523+
)
1524+
1525+
elif parameter == "speed":
1526+
if not 1 <= value <= 100:
1527+
raise ValueError(f"speed value not right, should be 1 ~ 100, the received speed is {value}")
1528+
1529+
elif parameter == "speeds":
1530+
if len(value) != 6:
1531+
raise ValueError("The length of `speeds` must be 6.")
1532+
1533+
for speed in value:
1534+
if not 1 <= speed <= 100:
1535+
raise ValueError(f"speed value not right, should be 1 ~ 100, the received speed is {speed}")
1536+
1537+
elif parameter == 'encoder':
1538+
if not 0 <= value <= 4096:
1539+
raise ValueError(f"The range of encoder is 0 ~ 4096, but the received value is {value}")
1540+
1541+
elif parameter == 'encoders':
1542+
if not len(value) == 6:
1543+
raise ValueError(f"The length of encoders is 6, but the received value is {len(value)}")
1544+
1545+
for encoder in value:
1546+
if not 0 <= encoder <= 4096:
1547+
raise ValueError(f"The range of encoder is 0 ~ 4096, but the received value is {encoder}")
1548+
elif parameter == "drag_speeds":
1549+
if len(value) != 6:
1550+
raise ValueError("The length of `speeds` must be 6.")
1551+
1552+
for speed in value:
1553+
if not 1 <= speed <= 10000:
1554+
raise ValueError(f"speed value not right, should be 1 ~ 10000, the received speed is {speed}")
1555+
1556+
elif parameter in (
1557+
"monitor_state", "fresh_mode", "vision_mode", "move_type", "pin_signal", "transponder_mode",
1558+
"reference_frame_type", "end_type", "direction", "coord_mode"
1559+
):
1560+
if value not in (0, 1):
1561+
raise ValueError(f"The {parameter} not right, should be in (0, 1), but received {value}.")
1562+
1563+
elif parameter == "gripper_state":
1564+
if value not in (0, 1, 254):
1565+
raise ValueError(f"The {parameter} not right, should be in (0, 1, 254), but received {value}.")
1566+
1567+
elif parameter == "gripper_speed":
1568+
if not 0 <= value <= 100:
1569+
raise ValueError(f"The gripper_speed value not right, should be 0 ~ 100, the received speed is {value}")
1570+
elif parameter == "gripper_torque":
1571+
if not 150 <= value <= 980:
1572+
raise ValueError(f"The gripper_torque value not right, should be 150 ~ 980, the received speed is {value}")
1573+
elif parameter == "gripper_type":
1574+
gripper_types = (1, 2, 3, 4)
1575+
if value not in gripper_types:
1576+
raise ValueError(f"The gripper_type not right, should be in {gripper_types}, but received {value}.")
1577+
elif parameter == "is_torque":
1578+
torque_gripper_types = (0, 1)
1579+
if value not in torque_gripper_types:
1580+
raise ValueError(f"The is_torque not right, should be in {torque_gripper_types}, but received {value}.")
1581+
elif parameter == "value":
1582+
if not 0 <= value <= 4096:
1583+
raise ValueError(f"The value not right, should be 0 ~ 4096, but received {value}.")
1584+
elif parameter == "protect_current":
1585+
if not 1 <= value <= 500:
1586+
raise ValueError(f"The protect_current not right, should be 1 ~ 500, but received {value}.")
1587+
elif parameter == "end_direction":
1588+
if value not in (1, 2, 3):
1589+
raise ValueError(f"The end_direction not right, should be in (1, 2, 3), but received {value}.")
1590+
1591+
elif parameter == "color":
1592+
for color in value:
1593+
if not 0 <= color <= 255:
1594+
raise ValueError(f"The color not right, should be 0 ~ 255, but received {color}.")
14841595

14851596

14861597
def restrict_serial_port(func):

0 commit comments

Comments
 (0)