Zespół składa się z następujących osób:
Po starannym przygotowaniu naszego stanowiska pracy, przystąpiliśmy do niewielkiej modyfikacji robota. Zainstalowaliśmy czujnik światła:
Podjęliśmy się napisania algorytmu o wdzięcznej nazwie „Więzień”, niestety na resztę nie starczyło nam czasu.
Kod programu prezentuje się następująco:
%consult('/plnxt/'). start :- nxt_light_LED(activate), trigger_create(_,check_color_black,skret), trigger_create(_,check_color_red,czmychajczympredzej), nxt_go(150). check_color_black :- nxt_light(Light2,force), Light2 < 43. check_color_red :- nxt_light(Light,force), Light > 45, Light < 50. skret :- nxt_stop, Angle is 90 + random(90), nxt_rotate(200,Angle), start. czmychajczympredzej :- nxt_stop, trigger_create(_,check_color_black,woohoo), nxt_play_tone(666,2000), nxt_go(300), trigger_killall. woohoo :- nxt_stop, nxt_play_tone(666,2000), nxt_go_cm(200,30).
załączone pliki: lab4_tobola_trzcinski_tyranowski.zip
Głównym problemem, jaki napotkaliśmy pisząc program, była niemożność kalibracji sensora światła. Próbowaliśmy przeróżnych konfiguracji: ustawialiśmy stanowisko na stole, na podłodze, regulowaliśmy odległość czujnika światła od podłoża, korzystaliśmy z wbudowanego oświetlenia, jednakże zabiegi te nie przyniosły oczekiwanego rezultatu. Mieliśmy rozróżnić kolor czerwony i czarny, jednak wartości wskazywane przez sensor często były dla obu jednakowe lub bardzo zbliżone. Możliwe, że za stan rzeczy odpowiedzialna była czerwona dioda doświetlająca podłoże. W związku z tym w miejscu, gdzie namalowany jest czerwony kwadrat, położyliśmy kartę płatniczą barwy niebieskiej. Odnotowaliśmy zdecydowaną poprawę w rozróżnianiu kolorów.
Problemy sprawiała również czarna otoczka czerwonego pola, jednak zniwelowaliśmy to wyżej opisaną metodą.
Istotnym utrudnieniem w pracy z robotem była komunikacja Brick'a z komputerem PC poprzez Bluetooth. Parokrotnie mieliśmy problem ze sparowaniem urządzeń, a otrzymywane komunikaty były sprzeczne z aktualnym stanem:
Po poprawnie przeprowadzonej operacji łączenia, dostawaliśmy komunikaty o błędach, które wprowadzały zamieszanie i były sprawcą naszej dezorientacji. Kolejny raz predykaty nxt_open i stop powodowały zawieszanie środowiska, co skutkowało koniecznością jego restartu i ponownego inicjowania, generując niepotrzebne opóźnienia w realizacji zadań laboratorium.