1
2
3
4 '''
5 This software is part of the raspibrick module.
6 It is Open Source Free Software, so you may
7 - run the code for any purpose
8 - study how the code works and adapt it to your needs
9 - integrate all or parts of the code in your own programs
10 - redistribute copies of the code
11 - improve the code and release your improvements to the public
12 However the use of the code is entirely your responsibility.
13 '''
14
15 from RobotInstance import RobotInstance
16 from Tools import Tools
17
18
19 x11Colors = {"aqua":[0, 255, 255],
20 "cornflower":[100, 149, 237],
21 "crimson":[220, 20, 60],
22 "fuchsia":[255, 0, 255],
23 "indigo":[75, 0, 130],
24 "lime":[50, 205, 50],
25 "silver":[192, 192, 192],
26 "ghost white":[248, 248, 255],
27 "snow":[255, 250, 250],
28 "ghostwhite":[248, 248, 255],
29 "white smoke":[245, 245, 245],
30 "whitesmoke":[245, 245, 245],
31 "gainsboro":[220, 220, 220],
32 "floral white":[255, 250, 240],
33 "floralwhite":[255, 250, 240],
34 "old lace":[253, 245, 230],
35 "oldlace":[253, 245, 230],
36 "linen":[250, 240, 230],
37 "antique white":[250, 235, 215],
38 "antiquewhite":[250, 235, 215],
39 "papaya whip":[255, 239, 213],
40 "papayawhip":[255, 239, 213],
41 "blanched almond":[255, 235, 205],
42 "blanchedalmond":[255, 235, 205],
43 "bisque":[255, 228, 196],
44 "peach puff":[255, 218, 185],
45 "peachpuff":[255, 218, 185],
46 "navajo white":[255, 222, 173],
47 "navajowhite":[255, 222, 173],
48 "moccasin":[255, 228, 181],
49 "cornsilk":[255, 248, 220],
50 "ivory":[255, 255, 240],
51 "lemon chiffon":[255, 250, 205],
52 "lemonchiffon":[255, 250, 205],
53 "seashell":[255, 245, 238],
54 "honeydew":[240, 255, 240],
55 "mint cream":[245, 255, 250],
56 "mintcream":[245, 255, 250],
57 "azure":[240, 255, 255],
58 "alice blue":[240, 248, 255],
59 "aliceblue":[240, 248, 255],
60 "lavender":[230, 230, 250],
61 "lavender blush":[255, 240, 245],
62 "lavenderblush":[255, 240, 245],
63 "misty rose":[255, 228, 225],
64 "mistyrose":[255, 228, 225],
65 "white":[255, 255, 255],
66 "black":[0, 0, 0],
67 "dark slate gray":[47, 79, 79],
68 "darkslategray":[47, 79, 79],
69 "dark slate grey":[47, 79, 79],
70 "darkslategrey":[47, 79, 79],
71 "dim gray":[105, 105, 105],
72 "dimgray":[105, 105, 105],
73 "dim grey":[105, 105, 105],
74 "dimgrey":[105, 105, 105],
75 "slate gray":[112, 128, 144],
76 "slategray":[112, 128, 144],
77 "slate grey":[112, 128, 144],
78 "slategrey":[112, 128, 144],
79 "light slate gray":[119, 136, 153],
80 "lightslategray":[119, 136, 153],
81 "light slate grey":[119, 136, 153],
82 "lightslategrey":[119, 136, 153],
83 "gray":[190, 190, 190],
84 "grey":[190, 190, 190],
85 "light grey":[211, 211, 211],
86 "lightgrey":[211, 211, 211],
87 "light gray":[211, 211, 211],
88 "lightgray":[211, 211, 211],
89 "midnight blue":[25, 25, 112],
90 "midnightblue":[25, 25, 112],
91 "navy":[0, 0, 128],
92 "navy blue":[0, 0, 128],
93 "navyblue":[0, 0, 128],
94 "cornflower blue":[100, 149, 237],
95 "cornflowerblue":[100, 149, 237],
96 "dark slate blue":[72, 61, 139],
97 "darkslateblue":[72, 61, 139],
98 "slate blue":[106, 90, 205],
99 "slateblue":[106, 90, 205],
100 "medium slate blue":[123, 104, 238],
101 "mediumslateblue":[123, 104, 238],
102 "light slate blue":[132, 112, 255],
103 "lightslateblue":[132, 112, 255],
104 "medium blue":[0, 0, 205],
105 "mediumblue":[0, 0, 205],
106 "royal blue":[65, 105, 225],
107 "royalblue":[65, 105, 225],
108 "blue":[0, 0, 255],
109 "dodger blue":[30, 144, 255],
110 "dodgerblue":[30, 144, 255],
111 "deep sky blue":[0, 191, 255],
112 "deepskyblue":[0, 191, 255],
113 "sky blue":[135, 206, 235],
114 "skyblue":[135, 206, 235],
115 "light sky blue":[135, 206, 250],
116 "lightskyblue":[135, 206, 250],
117 "steel blue":[70, 130, 180],
118 "steelblue":[70, 130, 180],
119 "light steel blue":[176, 196, 222],
120 "lightsteelblue":[176, 196, 222],
121 "light blue":[173, 216, 230],
122 "lightblue":[173, 216, 230],
123 "powder blue":[176, 224, 230],
124 "powderblue":[176, 224, 230],
125 "pale turquoise":[175, 238, 238],
126 "paleturquoise":[175, 238, 238],
127 "dark turquoise":[0, 206, 209],
128 "darkturquoise":[0, 206, 209],
129 "medium turquoise":[72, 209, 204],
130 "mediumturquoise":[72, 209, 204],
131 "turquoise":[64, 224, 208],
132 "cyan":[0, 255, 255],
133 "light cyan":[224, 255, 255],
134 "lightcyan":[224, 255, 255],
135 "cadet blue":[95, 158, 160],
136 "cadetblue":[95, 158, 160],
137 "medium aquamarine":[102, 205, 170],
138 "mediumaquamarine":[102, 205, 170],
139 "aquamarine":[127, 255, 212],
140 "dark green":[0, 100, 0],
141 "darkgreen":[0, 100, 0],
142 "dark olive green":[85, 107, 47],
143 "darkolivegreen":[85, 107, 47],
144 "dark sea green":[143, 188, 143],
145 "darkseagreen":[143, 188, 143],
146 "sea green":[46, 139, 87],
147 "seagreen":[46, 139, 87],
148 "medium sea green":[60, 179, 113],
149 "mediumseagreen":[60, 179, 113],
150 "light sea green":[32, 178, 170],
151 "lightseagreen":[32, 178, 170],
152 "pale green":[152, 251, 152],
153 "palegreen":[152, 251, 152],
154 "spring green":[0, 255, 127],
155 "springgreen":[0, 255, 127],
156 "lawn green":[124, 252, 0],
157 "lawngreen":[124, 252, 0],
158 "green":[0, 255, 0],
159 "chartreuse":[127, 255, 0],
160 "medium spring green":[0, 250, 154],
161 "mediumspringgreen":[0, 250, 154],
162 "green yellow":[173, 255, 47],
163 "greenyellow":[173, 255, 47],
164 "lime green":[50, 205, 50],
165 "limegreen":[50, 205, 50],
166 "yellow green":[154, 205, 50],
167 "yellowgreen":[154, 205, 50],
168 "forest green":[34, 139, 34],
169 "forestgreen":[34, 139, 34],
170 "olive drab":[107, 142, 35],
171 "olivedrab":[107, 142, 35],
172 "dark khaki":[189, 183, 107],
173 "darkkhaki":[189, 183, 107],
174 "khaki":[240, 230, 140],
175 "pale goldenrod":[238, 232, 170],
176 "palegoldenrod":[238, 232, 170],
177 "light goldenrod yellow":[250, 250, 210],
178 "lightgoldenrodyellow":[250, 250, 210],
179 "light yellow":[255, 255, 224],
180 "lightyellow":[255, 255, 224],
181 "yellow":[255, 255, 0],
182 "gold":[255, 215, 0],
183 "light goldenrod":[238, 221, 130],
184 "lightgoldenrod":[238, 221, 130],
185 "goldenrod":[218, 165, 32],
186 "dark goldenrod":[184, 134, 11],
187 "darkgoldenrod":[184, 134, 11],
188 "rosy brown":[188, 143, 143],
189 "rosybrown":[188, 143, 143],
190 "indian red":[205, 92, 92],
191 "indianred":[205, 92, 92],
192 "saddle brown":[139, 69, 19],
193 "saddlebrown":[139, 69, 19],
194 "sienna":[160, 82, 45],
195 "peru":[205, 133, 63],
196 "burlywood":[222, 184, 135],
197 "beige":[245, 245, 220],
198 "wheat":[245, 222, 179],
199 "sandy brown":[244, 164, 96],
200 "sandybrown":[244, 164, 96],
201 "tan":[210, 180, 140],
202 "chocolate":[210, 105, 30],
203 "firebrick":[178, 34, 34],
204 "brown":[165, 42, 42],
205 "dark salmon":[233, 150, 122],
206 "darksalmon":[233, 150, 122],
207 "salmon":[250, 128, 114],
208 "light salmon":[255, 160, 122],
209 "lightsalmon":[255, 160, 122],
210 "orange":[255, 165, 0],
211 "dark orange":[255, 140, 0],
212 "darkorange":[255, 140, 0],
213 "coral":[255, 127, 80],
214 "light coral":[240, 128, 128],
215 "lightcoral":[240, 128, 128],
216 "tomato":[255, 99, 71],
217 "orange red":[255, 69, 0],
218 "orangered":[255, 69, 0],
219 "red":[255, 0, 0],
220 "hot pink":[255, 105, 180],
221 "hotpink":[255, 105, 180],
222 "deep pink":[255, 20, 147],
223 "deeppink":[255, 20, 147],
224 "pink":[255, 192, 203],
225 "light pink":[255, 182, 193],
226 "lightpink":[255, 182, 193],
227 "pale violet red":[219, 112, 147],
228 "palevioletred":[219, 112, 147],
229 "maroon":[176, 48, 96],
230 "medium violet red":[199, 21, 133],
231 "mediumvioletred":[199, 21, 133],
232 "violet red":[208, 32, 144],
233 "violetred":[208, 32, 144],
234 "magenta":[255, 0, 255],
235 "violet":[238, 130, 238],
236 "plum":[221, 160, 221],
237 "orchid":[218, 112, 214],
238 "medium orchid":[186, 85, 211],
239 "mediumorchid":[186, 85, 211],
240 "dark orchid":[153, 50, 204],
241 "darkorchid":[153, 50, 204],
242 "dark violet":[148, 0, 211],
243 "darkviolet":[148, 0, 211],
244 "blue violet":[138, 43, 226],
245 "blueviolet":[138, 43, 226],
246 "purple":[160, 32, 240],
247 "medium purple":[147, 112, 219],
248 "mediumpurple":[147, 112, 219],
249 "thistle":[216, 191, 216],
250 "snow1":[255, 250, 250],
251 "snow2":[238, 233, 233],
252 "snow3":[205, 201, 201],
253 "snow4":[139, 137, 137],
254 "seashell1":[255, 245, 238],
255 "seashell2":[238, 229, 222],
256 "seashell3":[205, 197, 191],
257 "seashell4":[139, 134, 130],
258 "antiquewhite1":[255, 239, 219],
259 "antiquewhite2":[238, 223, 204],
260 "antiquewhite3":[205, 192, 176],
261 "antiquewhite4":[139, 131, 120],
262 "bisque1":[255, 228, 196],
263 "bisque2":[238, 213, 183],
264 "bisque3":[205, 183, 158],
265 "bisque4":[139, 125, 107],
266 "peachpuff1":[255, 218, 185],
267 "peachpuff2":[238, 203, 173],
268 "peachpuff3":[205, 175, 149],
269 "peachpuff4":[139, 119, 101],
270 "navajowhite1":[255, 222, 173],
271 "navajowhite2":[238, 207, 161],
272 "navajowhite3":[205, 179, 139],
273 "navajowhite4":[139, 121, 94],
274 "lemonchiffon1":[255, 250, 205],
275 "lemonchiffon2":[238, 233, 191],
276 "lemonchiffon3":[205, 201, 165],
277 "lemonchiffon4":[139, 137, 112],
278 "cornsilk1":[255, 248, 220],
279 "cornsilk2":[238, 232, 205],
280 "cornsilk3":[205, 200, 177],
281 "cornsilk4":[139, 136, 120],
282 "ivory1":[255, 255, 240],
283 "ivory2":[238, 238, 224],
284 "ivory3":[205, 205, 193],
285 "ivory4":[139, 139, 131],
286 "honeydew1":[240, 255, 240],
287 "honeydew2":[224, 238, 224],
288 "honeydew3":[193, 205, 193],
289 "honeydew4":[131, 139, 131],
290 "lavenderblush1":[255, 240, 245],
291 "lavenderblush2":[238, 224, 229],
292 "lavenderblush3":[205, 193, 197],
293 "lavenderblush4":[139, 131, 134],
294 "mistyrose1":[255, 228, 225],
295 "mistyrose2":[238, 213, 210],
296 "mistyrose3":[205, 183, 181],
297 "mistyrose4":[139, 125, 123],
298 "azure1":[240, 255, 255],
299 "azure2":[224, 238, 238],
300 "azure3":[193, 205, 205],
301 "azure4":[131, 139, 139],
302 "slateblue1":[131, 111, 255],
303 "slateblue2":[122, 103, 238],
304 "slateblue3":[105, 89, 205],
305 "slateblue4":[71, 60, 139],
306 "royalblue1":[72, 118, 255],
307 "royalblue2":[67, 110, 238],
308 "royalblue3":[58, 95, 205],
309 "royalblue4":[39, 64, 139],
310 "blue1":[0, 0, 255],
311 "blue2":[0, 0, 238],
312 "blue3":[0, 0, 205],
313 "blue4":[0, 0, 139],
314 "dodgerblue1":[30, 144, 255],
315 "dodgerblue2":[28, 134, 238],
316 "dodgerblue3":[24, 116, 205],
317 "dodgerblue4":[16, 78, 139],
318 "steelblue1":[99, 184, 255],
319 "steelblue2":[92, 172, 238],
320 "steelblue3":[79, 148, 205],
321 "steelblue4":[54, 100, 139],
322 "deepskyblue1":[0, 191, 255],
323 "deepskyblue2":[0, 178, 238],
324 "deepskyblue3":[0, 154, 205],
325 "deepskyblue4":[0, 104, 139],
326 "skyblue1":[135, 206, 255],
327 "skyblue2":[126, 192, 238],
328 "skyblue3":[108, 166, 205],
329 "skyblue4":[74, 112, 139],
330 "lightskyblue1":[176, 226, 255],
331 "lightskyblue2":[164, 211, 238],
332 "lightskyblue3":[141, 182, 205],
333 "lightskyblue4":[96, 123, 139],
334 "slategray1":[198, 226, 255],
335 "slategray2":[185, 211, 238],
336 "slategray3":[159, 182, 205],
337 "slategray4":[108, 123, 139],
338 "lightsteelblue1":[202, 225, 255],
339 "lightsteelblue2":[188, 210, 238],
340 "lightsteelblue3":[162, 181, 205],
341 "lightsteelblue4":[110, 123, 139],
342 "lightblue1":[191, 239, 255],
343 "lightblue2":[178, 223, 238],
344 "lightblue3":[154, 192, 205],
345 "lightblue4":[104, 131, 139],
346 "lightcyan1":[224, 255, 255],
347 "lightcyan2":[209, 238, 238],
348 "lightcyan3":[180, 205, 205],
349 "lightcyan4":[122, 139, 139],
350 "paleturquoise1":[187, 255, 255],
351 "paleturquoise2":[174, 238, 238],
352 "paleturquoise3":[150, 205, 205],
353 "paleturquoise4":[102, 139, 139],
354 "cadetblue1":[152, 245, 255],
355 "cadetblue2":[142, 229, 238],
356 "cadetblue3":[122, 197, 205],
357 "cadetblue4":[83, 134, 139],
358 "turquoise1":[0, 245, 255],
359 "turquoise2":[0, 229, 238],
360 "turquoise3":[0, 197, 205],
361 "turquoise4":[0, 134, 139],
362 "cyan1":[0, 255, 255],
363 "cyan2":[0, 238, 238],
364 "cyan3":[0, 205, 205],
365 "cyan4":[0, 139, 139],
366 "darkslategray1":[151, 255, 255],
367 "darkslategray2":[141, 238, 238],
368 "darkslategray3":[121, 205, 205],
369 "darkslategray4":[82, 139, 139],
370 "aquamarine1":[127, 255, 212],
371 "aquamarine2":[118, 238, 198],
372 "aquamarine3":[102, 205, 170],
373 "aquamarine4":[69, 139, 116],
374 "darkseagreen1":[193, 255, 193],
375 "darkseagreen2":[180, 238, 180],
376 "darkseagreen3":[155, 205, 155],
377 "darkseagreen4":[105, 139, 105],
378 "seagreen1":[84, 255, 159],
379 "seagreen2":[78, 238, 148],
380 "seagreen3":[67, 205, 128],
381 "seagreen4":[46, 139, 87],
382 "palegreen1":[154, 255, 154],
383 "palegreen2":[144, 238, 144],
384 "palegreen3":[124, 205, 124],
385 "palegreen4":[84, 139, 84],
386 "springgreen1":[0, 255, 127],
387 "springgreen2":[0, 238, 118],
388 "springgreen3":[0, 205, 102],
389 "springgreen4":[0, 139, 69],
390 "green1":[0, 255, 0],
391 "green2":[0, 238, 0],
392 "green3":[0, 205, 0],
393 "green4":[0, 139, 0],
394 "chartreuse1":[127, 255, 0],
395 "chartreuse2":[118, 238, 0],
396 "chartreuse3":[102, 205, 0],
397 "chartreuse4":[69, 139, 0],
398 "olivedrab1":[192, 255, 62],
399 "olivedrab2":[179, 238, 58],
400 "olivedrab3":[154, 205, 50],
401 "olivedrab4":[105, 139, 34],
402 "darkolivegreen1":[202, 255, 112],
403 "darkolivegreen2":[188, 238, 104],
404 "darkolivegreen3":[162, 205, 90],
405 "darkolivegreen4":[110, 139, 61],
406 "khaki1":[255, 246, 143],
407 "khaki2":[238, 230, 133],
408 "khaki3":[205, 198, 115],
409 "khaki4":[139, 134, 78],
410 "lightgoldenrod1":[255, 236, 139],
411 "lightgoldenrod2":[238, 220, 130],
412 "lightgoldenrod3":[205, 190, 112],
413 "lightgoldenrod4":[139, 129, 76],
414 "lightyellow1":[255, 255, 224],
415 "lightyellow2":[238, 238, 209],
416 "lightyellow3":[205, 205, 180],
417 "lightyellow4":[139, 139, 122],
418 "yellow1":[255, 255, 0],
419 "yellow2":[238, 238, 0],
420 "yellow3":[205, 205, 0],
421 "yellow4":[139, 139, 0],
422 "gold1":[255, 215, 0],
423 "gold2":[238, 201, 0],
424 "gold3":[205, 173, 0],
425 "gold4":[139, 117, 0],
426 "goldenrod1":[255, 193, 37],
427 "goldenrod2":[238, 180, 34],
428 "goldenrod3":[205, 155, 29],
429 "goldenrod4":[139, 105, 20],
430 "darkgoldenrod1":[255, 185, 15],
431 "darkgoldenrod2":[238, 173, 14],
432 "darkgoldenrod3":[205, 149, 12],
433 "darkgoldenrod4":[139, 101, 8],
434 "rosybrown1":[255, 193, 193],
435 "rosybrown2":[238, 180, 180],
436 "rosybrown3":[205, 155, 155],
437 "rosybrown4":[139, 105, 105],
438 "indianred1":[255, 106, 106],
439 "indianred2":[238, 99, 99],
440 "indianred3":[205, 85, 85],
441 "indianred4":[139, 58, 58],
442 "sienna1":[255, 130, 71],
443 "sienna2":[238, 121, 66],
444 "sienna3":[205, 104, 57],
445 "sienna4":[139, 71, 38],
446 "burlywood1":[255, 211, 155],
447 "burlywood2":[238, 197, 145],
448 "burlywood3":[205, 170, 125],
449 "burlywood4":[139, 115, 85],
450 "wheat1":[255, 231, 186],
451 "wheat2":[238, 216, 174],
452 "wheat3":[205, 186, 150],
453 "wheat4":[139, 126, 102],
454 "tan1":[255, 165, 79],
455 "tan2":[238, 154, 73],
456 "tan3":[205, 133, 63],
457 "tan4":[139, 90, 43],
458 "chocolate1":[255, 127, 36],
459 "chocolate2":[238, 118, 33],
460 "chocolate3":[205, 102, 29],
461 "chocolate4":[139, 69, 19],
462 "firebrick1":[255, 48, 48],
463 "firebrick2":[238, 44, 44],
464 "firebrick3":[205, 38, 38],
465 "firebrick4":[139, 26, 26],
466 "brown1":[255, 64, 64],
467 "brown2":[238, 59, 59],
468 "brown3":[205, 51, 51],
469 "brown4":[139, 35, 35],
470 "salmon1":[255, 140, 105],
471 "salmon2":[238, 130, 98],
472 "salmon3":[205, 112, 84],
473 "salmon4":[139, 76, 57],
474 "lightsalmon1":[255, 160, 122],
475 "lightsalmon2":[238, 149, 114],
476 "lightsalmon3":[205, 129, 98],
477 "lightsalmon4":[139, 87, 66],
478 "orange1":[255, 165, 0],
479 "orange2":[238, 154, 0],
480 "orange3":[205, 133, 0],
481 "orange4":[139, 90, 0],
482 "darkorange1":[255, 127, 0],
483 "darkorange2":[238, 118, 0],
484 "darkorange3":[205, 102, 0],
485 "darkorange4":[139, 69, 0],
486 "coral1":[255, 114, 86],
487 "coral2":[238, 106, 80],
488 "coral3":[205, 91, 69],
489 "coral4":[139, 62, 47],
490 "tomato1":[255, 99, 71],
491 "tomato2":[238, 92, 66],
492 "tomato3":[205, 79, 57],
493 "tomato4":[139, 54, 38],
494 "orangered1":[255, 69, 0],
495 "orangered2":[238, 64, 0],
496 "orangered3":[205, 55, 0],
497 "orangered4":[139, 37, 0],
498 "red1":[255, 0, 0],
499 "red2":[238, 0, 0],
500 "red3":[205, 0, 0],
501 "red4":[139, 0, 0],
502 "deeppink1":[255, 20, 147],
503 "deeppink2":[238, 18, 137],
504 "deeppink3":[205, 16, 118],
505 "deeppink4":[139, 10, 80],
506 "hotpink1":[255, 110, 180],
507 "hotpink2":[238, 106, 167],
508 "hotpink3":[205, 96, 144],
509 "hotpink4":[139, 58, 98],
510 "pink1":[255, 181, 197],
511 "pink2":[238, 169, 184],
512 "pink3":[205, 145, 158],
513 "pink4":[139, 99, 108],
514 "lightpink1":[255, 174, 185],
515 "lightpink2":[238, 162, 173],
516 "lightpink3":[205, 140, 149],
517 "lightpink4":[139, 95, 101],
518 "palevioletred1":[255, 130, 171],
519 "palevioletred2":[238, 121, 159],
520 "palevioletred3":[205, 104, 137],
521 "palevioletred4":[139, 71, 93],
522 "maroon1":[255, 52, 179],
523 "maroon2":[238, 48, 167],
524 "maroon3":[205, 41, 144],
525 "maroon4":[139, 28, 98],
526 "violetred1":[255, 62, 150],
527 "violetred2":[238, 58, 140],
528 "violetred3":[205, 50, 120],
529 "violetred4":[139, 34, 82],
530 "magenta1":[255, 0, 255],
531 "magenta2":[238, 0, 238],
532 "magenta3":[205, 0, 205],
533 "magenta4":[139, 0, 139],
534 "orchid1":[255, 131, 250],
535 "orchid2":[238, 122, 233],
536 "orchid3":[205, 105, 201],
537 "orchid4":[139, 71, 137],
538 "plum1":[255, 187, 255],
539 "plum2":[238, 174, 238],
540 "plum3":[205, 150, 205],
541 "plum4":[139, 102, 139],
542 "mediumorchid1":[224, 102, 255],
543 "mediumorchid2":[209, 95, 238],
544 "mediumorchid3":[180, 82, 205],
545 "mediumorchid4":[122, 55, 139],
546 "darkorchid1":[191, 62, 255],
547 "darkorchid2":[178, 58, 238],
548 "darkorchid3":[154, 50, 205],
549 "darkorchid4":[104, 34, 139],
550 "purple1":[155, 48, 255],
551 "purple2":[145, 44, 238],
552 "purple3":[125, 38, 205],
553 "purple4":[85, 26, 139],
554 "mediumpurple1":[171, 130, 255],
555 "mediumpurple2":[159, 121, 238],
556 "mediumpurple3":[137, 104, 205],
557 "mediumpurple4":[93, 71, 139],
558 "thistle1":[255, 225, 255],
559 "thistle2":[238, 210, 238],
560 "thistle3":[205, 181, 205],
561 "thistle4":[139, 123, 139],
562 "gray0":[0, 0, 0],
563 "grey0":[0, 0, 0],
564 "gray1":[3, 3, 3],
565 "grey1":[3, 3, 3],
566 "gray2":[5, 5, 5],
567 "grey2":[5, 5, 5],
568 "gray3":[8, 8, 8],
569 "grey3":[8, 8, 8],
570 "gray4":[10, 10, 10],
571 "grey4":[10, 10, 10],
572 "gray5":[13, 13, 13],
573 "grey5":[13, 13, 13],
574 "gray6":[15, 15, 15],
575 "grey6":[15, 15, 15],
576 "gray7":[18, 18, 18],
577 "grey7":[18, 18, 18],
578 "gray8":[20, 20, 20],
579 "grey8":[20, 20, 20],
580 "gray9":[23, 23, 23],
581 "grey9":[23, 23, 23],
582 "gray10":[26, 26, 26],
583 "grey10":[26, 26, 26],
584 "gray11":[28, 28, 28],
585 "grey11":[28, 28, 28],
586 "gray12":[31, 31, 31],
587 "grey12":[31, 31, 31],
588 "gray13":[33, 33, 33],
589 "grey13":[33, 33, 33],
590 "gray14":[36, 36, 36],
591 "grey14":[36, 36, 36],
592 "gray15":[38, 38, 38],
593 "grey15":[38, 38, 38],
594 "gray16":[41, 41, 41],
595 "grey16":[41, 41, 41],
596 "gray17":[43, 43, 43],
597 "grey17":[43, 43, 43],
598 "gray18":[46, 46, 46],
599 "grey18":[46, 46, 46],
600 "gray19":[48, 48, 48],
601 "grey19":[48, 48, 48],
602 "gray20":[51, 51, 51],
603 "grey20":[51, 51, 51],
604 "gray21":[54, 54, 54],
605 "grey21":[54, 54, 54],
606 "gray22":[56, 56, 56],
607 "grey22":[56, 56, 56],
608 "gray23":[59, 59, 59],
609 "grey23":[59, 59, 59],
610 "gray24":[61, 61, 61],
611 "grey24":[61, 61, 61],
612 "gray25":[64, 64, 64],
613 "grey25":[64, 64, 64],
614 "gray26":[66, 66, 66],
615 "grey26":[66, 66, 66],
616 "gray27":[69, 69, 69],
617 "grey27":[69, 69, 69],
618 "gray28":[71, 71, 71],
619 "grey28":[71, 71, 71],
620 "gray29":[74, 74, 74],
621 "grey29":[74, 74, 74],
622 "gray30":[77, 77, 77],
623 "grey30":[77, 77, 77],
624 "gray31":[79, 79, 79],
625 "grey31":[79, 79, 79],
626 "gray32":[82, 82, 82],
627 "grey32":[82, 82, 82],
628 "gray33":[84, 84, 84],
629 "grey33":[84, 84, 84],
630 "gray34":[87, 87, 87],
631 "grey34":[87, 87, 87],
632 "gray35":[89, 89, 89],
633 "grey35":[89, 89, 89],
634 "gray36":[92, 92, 92],
635 "grey36":[92, 92, 92],
636 "gray37":[94, 94, 94],
637 "grey37":[94, 94, 94],
638 "gray38":[97, 97, 97],
639 "grey38":[97, 97, 97],
640 "gray39":[99, 99, 99],
641 "grey39":[99, 99, 99],
642 "gray40":[102, 102, 102],
643 "grey40":[102, 102, 102],
644 "gray41":[105, 105, 105],
645 "grey41":[105, 105, 105],
646 "gray42":[107, 107, 107],
647 "grey42":[107, 107, 107],
648 "gray43":[110, 110, 110],
649 "grey43":[110, 110, 110],
650 "gray44":[112, 112, 112],
651 "grey44":[112, 112, 112],
652 "gray45":[115, 115, 115],
653 "grey45":[115, 115, 115],
654 "gray46":[117, 117, 117],
655 "grey46":[117, 117, 117],
656 "gray47":[120, 120, 120],
657 "grey47":[120, 120, 120],
658 "gray48":[122, 122, 122],
659 "grey48":[122, 122, 122],
660 "gray49":[125, 125, 125],
661 "grey49":[125, 125, 125],
662 "gray50":[127, 127, 127],
663 "grey50":[127, 127, 127],
664 "gray51":[130, 130, 130],
665 "grey51":[130, 130, 130],
666 "gray52":[133, 133, 133],
667 "grey52":[133, 133, 133],
668 "gray53":[135, 135, 135],
669 "grey53":[135, 135, 135],
670 "gray54":[138, 138, 138],
671 "grey54":[138, 138, 138],
672 "gray55":[140, 140, 140],
673 "grey55":[140, 140, 140],
674 "gray56":[143, 143, 143],
675 "grey56":[143, 143, 143],
676 "gray57":[145, 145, 145],
677 "grey57":[145, 145, 145],
678 "gray58":[148, 148, 148],
679 "grey58":[148, 148, 148],
680 "gray59":[150, 150, 150],
681 "grey59":[150, 150, 150],
682 "gray60":[153, 153, 153],
683 "grey60":[153, 153, 153],
684 "gray61":[156, 156, 156],
685 "grey61":[156, 156, 156],
686 "gray62":[158, 158, 158],
687 "grey62":[158, 158, 158],
688 "gray63":[161, 161, 161],
689 "grey63":[161, 161, 161],
690 "gray64":[163, 163, 163],
691 "grey64":[163, 163, 163],
692 "gray65":[166, 166, 166],
693 "grey65":[166, 166, 166],
694 "gray66":[168, 168, 168],
695 "grey66":[168, 168, 168],
696 "gray67":[171, 171, 171],
697 "grey67":[171, 171, 171],
698 "gray68":[173, 173, 173],
699 "grey68":[173, 173, 173],
700 "gray69":[176, 176, 176],
701 "grey69":[176, 176, 176],
702 "gray70":[179, 179, 179],
703 "grey70":[179, 179, 179],
704 "gray71":[181, 181, 181],
705 "grey71":[181, 181, 181],
706 "gray72":[184, 184, 184],
707 "grey72":[184, 184, 184],
708 "gray73":[186, 186, 186],
709 "grey73":[186, 186, 186],
710 "gray74":[189, 189, 189],
711 "grey74":[189, 189, 189],
712 "gray75":[191, 191, 191],
713 "grey75":[191, 191, 191],
714 "gray76":[194, 194, 194],
715 "grey76":[194, 194, 194],
716 "gray77":[196, 196, 196],
717 "grey77":[196, 196, 196],
718 "gray78":[199, 199, 199],
719 "grey78":[199, 199, 199],
720 "gray79":[201, 201, 201],
721 "grey79":[201, 201, 201],
722 "gray80":[204, 204, 204],
723 "grey80":[204, 204, 204],
724 "gray81":[207, 207, 207],
725 "grey81":[207, 207, 207],
726 "gray82":[209, 209, 209],
727 "grey82":[209, 209, 209],
728 "gray83":[212, 212, 212],
729 "grey83":[212, 212, 212],
730 "gray84":[214, 214, 214],
731 "grey84":[214, 214, 214],
732 "gray85":[217, 217, 217],
733 "grey85":[217, 217, 217],
734 "gray86":[219, 219, 219],
735 "grey86":[219, 219, 219],
736 "gray87":[222, 222, 222],
737 "grey87":[222, 222, 222],
738 "gray88":[224, 224, 224],
739 "grey88":[224, 224, 224],
740 "gray89":[227, 227, 227],
741 "grey89":[227, 227, 227],
742 "gray90":[229, 229, 229],
743 "grey90":[229, 229, 229],
744 "gray91":[232, 232, 232],
745 "grey91":[232, 232, 232],
746 "gray92":[235, 235, 235],
747 "grey92":[235, 235, 235],
748 "gray93":[237, 237, 237],
749 "grey93":[237, 237, 237],
750 "gray94":[240, 240, 240],
751 "grey94":[240, 240, 240],
752 "gray95":[242, 242, 242],
753 "grey95":[242, 242, 242],
754 "gray96":[245, 245, 245],
755 "grey96":[245, 245, 245],
756 "gray97":[247, 247, 247],
757 "grey97":[247, 247, 247],
758 "gray98":[250, 250, 250],
759 "grey98":[250, 250, 250],
760 "gray99":[252, 252, 252],
761 "grey99":[252, 252, 252],
762 "gray100":[255, 255, 255],
763 "grey100":[255, 255, 255],
764 "dark grey":[169, 169, 169],
765 "darkgrey":[169, 169, 169],
766 "dark gray":[169, 169, 169],
767 "darkgray":[169, 169, 169],
768 "dark blue":[0, 0, 139],
769 "darkblue":[0, 0, 139],
770 "dark cyan":[0, 139, 139],
771 "darkcyan":[0, 139, 139],
772 "dark magenta":[139, 0, 139],
773 "darkmagenta":[139, 0, 139],
774 "dark red":[139, 0, 0],
775 "darkred":[139, 0, 0],
776 "light green":[144, 238, 144],
777 "lightgreen":[144, 238, 144],
778 "olive":[128, 128, 0],
779 "teal":[0, 128, 128]}
780
781
782 -class Led():
783 '''
784 Class that represents a LED pair.
785 '''
787 '''
788 Creates a Led instance with given ID.
789 IDs of the double LEDs: 0: front, 1: left side , 2: rear, 3: right side.
790 The following global constants are defined:
791 LED_FRONT = 0, LED_LEFT = 1, LED_REAR = 2, RED_RIGHT = 3.
792 @param id: the LED identifier
793 '''
794 self.id = id
795 self.device = "led" + str(id)
796 robot = RobotInstance.getRobot()
797 if robot == None:
798 RobotInstance._partsToRegister.append(self)
799 else:
800 self._setup(robot)
801
803 robot.sendCommand(self.device + ".create")
804 self.robot = robot
805
807 '''
808 Sets the RGB color value of the two LEDs with current ID.
809 @param args list of [red, green, blue] RGB color components 0..255
810 or three color integers 0..255
811 '''
812 self._checkRobot()
813 if len(args) == 1 and type(args[0]) == list:
814 red = args[0][0]
815 green = args[0][1]
816 blue = args[0][2]
817 elif len(args) == 1 and type(args[0]) == str:
818 colorStr = args[0]
819 colorList = x11Colors[colorStr]
820 red = colorList[0]
821 green = colorList[1]
822 blue = colorList[2]
823 elif len(args) == 3:
824 red = args[0]
825 green = args[1]
826 blue = args[2]
827 else:
828 raise ValueError("Illegal param in setColor()")
829 self.robot.sendCommand(self.device + ".setColor." +
830 str(red) + "." + str(green) + "." + str(blue))
831
832
833 - def startBlinker(self, onColor, offColor, onTime, offTime, count = 0, blocking = False):
834 '''
835 Starts blinking with given onColor and offColor. The blinking period
836 is offTime + onTime. May be stopped by calling stopBlinker(). If blocking is False, the
837 function returns immediately while the blinking goes on. The blinking is stopped by setColor().
838 @param onColor: color in on state. Must be X11 color string
839 @param offColor: color in off state. Must be X11 color string
840 @param onTime: the time in ms in on state
841 @param offTime: the time in ms in off state
842 @param count: total number of on states; 0 for endlessly (default)
843 @param blocking: if True, the method blocks until the blinker has finished; otherwise
844 it returns immediately (default: False)
845 '''
846 self._checkRobot()
847 self.robot.sendCommand(self.device + ".startBlinker." +
848 str(onColor) + "." + str(offColor) + "." + str(onTime) + "." + str(offTime) + "." + str(count))
849 if blocking:
850 while self.isBlinkerAlive():
851 continue
852
854 '''
855 Stops blinking and turns the led off.
856 '''
857 self._checkRobot()
858 self.robot.sendCommand(self.device + ".stopBlinker")
859
861 '''
862 @return: True, if the blinker is displaying; otherwise False
863 '''
864 self._checkRobot()
865 rc = self.robot.sendCommand(self.device + ".isBlinkerAlive")
866 return rc == "True"
867
868 @staticmethod
870 '''
871 Sets the RGB color of all 4 LED pairs.
872 @param color list of [red, green, blue] RGB color components 0..255
873 or three color integers 0..255
874 '''
875 if RobotInstance.getRobot() == None:
876 raise Exception("Create Robot instance first")
877 if len(args) == 1 and type(args[0]) == list:
878 red = args[0][0]
879 green = args[0][1]
880 blue = args[0][2]
881 elif len(args) == 1 and type(args[0]) == str:
882 colorStr = args[0]
883 colorList = x11Colors[colorStr]
884 red = colorList[0]
885 green = colorList[1]
886 blue = colorList[2]
887 elif len(args) == 3:
888 red = args[0]
889 green = args[1]
890 blue = args[2]
891 else:
892 raise ValueError("Illegal param in setColor()")
893 RobotInstance.getRobot().sendCommand("led.setColorAll." +
894 str(red) + "." + str(green) + "." + str(blue))
895
896 @staticmethod
904
908