77from .common import ProtocolCode , read , write
88
99
10- def calibration_parameters ( ** kwargs ):
10+ class MyPalletizedataException ( Exception ):
1111 pass
1212
1313
14+ MIN_ID = 0
15+ MAX_ID = 5
16+
17+ # In fact, most joints cannot reach plus or minus 180 degrees.
18+ # There may be a value greater than 180 when reading the angle,
19+ # and the maximum and minimum values are expanded for compatibility.
20+ MIN_ANGLE = - 170.0
21+ MAX_ANGLE = 170.0
22+
23+
24+ def calibration_parameters (** kwargs ):
25+ if kwargs .get ("id" , None ) is not None and not MIN_ID <= kwargs ["id" ] <= MAX_ID :
26+ raise MyPalletizedataException (
27+ "The id not right, should be {0} ~ {1}, but received {2}." .format (
28+ MIN_ID , MAX_ID , kwargs ["id" ]
29+ )
30+ )
31+
32+ if (
33+ kwargs .get ("degree" , None ) is not None
34+ and not MIN_ANGLE <= kwargs ["degree" ] <= MAX_ANGLE
35+ ):
36+ raise MyPalletizedataException (
37+ "degree value not right, should be {0} ~ {1}, but received {2}" .format (
38+ MIN_ANGLE , MAX_ANGLE , kwargs ["degree" ]
39+ )
40+ )
41+
42+ if kwargs .get ("degrees" , None ) is not None :
43+ degrees = kwargs ["degrees" ]
44+ if not isinstance (degrees , list ):
45+ raise MyPalletizedataException ("`degrees` must be a list." )
46+ if len (degrees ) != 4 :
47+ raise MyPalletizedataException (
48+ "The length of `degrees` must be 4." )
49+ for idx , angle in enumerate (degrees ):
50+ if not MIN_ANGLE <= angle <= MAX_ANGLE :
51+ raise MyPalletizedataException (
52+ "Has invalid degree value, error on index {0}. Degree should be {1} ~ {2}." .format (
53+ idx , MIN_ANGLE , MAX_ANGLE
54+ )
55+ )
56+
57+ if kwargs .get ("coords" , None ) is not None :
58+ coords = kwargs ["coords" ]
59+ if not isinstance (coords , list ):
60+ raise MyPalletizedataException ("`coords` must be a list." )
61+ if len (coords ) != 4 :
62+ raise MyPalletizedataException (
63+ "The length of `coords` must be 4." )
64+
65+ if kwargs .get ("speed" , None ) is not None and not 0 <= kwargs ["speed" ] <= 100 :
66+ raise MyPalletizedataException (
67+ "speed value not right, should be 0 ~ 100, the error speed is %s"
68+ % kwargs ["speed" ]
69+ )
70+
71+ if kwargs .get ("rgb" , None ) is not None :
72+ rgb_str = ["r" , "g" , "b" ]
73+ for i , v in enumerate (kwargs ["rgb" ]):
74+ if not (0 <= v <= 255 ):
75+ raise MyPalletizedataException (
76+ "The RGB value needs be 0 ~ 255, but the %s is %s" % (
77+ rgb_str [i ], v )
78+ )
79+
80+
1481class MyPalletizer (MycobotCommandGenerater ):
1582 def __init__ (self , port , baudrate = "115200" , timeout = 0.1 , debug = False ):
1683 """
@@ -24,7 +91,6 @@ def __init__(self, port, baudrate="115200", timeout=0.1, debug=False):
2491 self .debug = debug
2592 setup_logging (self .debug )
2693 self .log = logging .getLogger (__name__ )
27-
2894 self .calibration_parameters = calibration_parameters
2995
3096 import serial
0 commit comments