@@ -278,6 +278,8 @@ def public_check(parameter_list, kwargs, robot_limit, class_name, exception_clas
278
278
elif parameter == "pin_no" :
279
279
if "Mercury" in class_name :
280
280
check_0_or_1 (parameter , value , [1 , 2 , 3 , 4 , 5 , 6 ], value_type , exception_class , int )
281
+
282
+
281
283
def calibration_parameters (** kwargs ):
282
284
# with open(os.path.dirname(os.path.abspath(__file__))+"/robot_limit.json") as f:
283
285
robot_limit = RobotLimit .robot_limit
@@ -1481,6 +1483,115 @@ def calibration_parameters(**kwargs):
1481
1483
if not 1 <= s <= 100 :
1482
1484
raise ValueError (
1483
1485
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 } ." )
1484
1595
1485
1596
1486
1597
def restrict_serial_port (func ):
0 commit comments