Wstęp
Zespół składa się z następujących osób:
Szef - Bartłomiej Tyranowski
Mechanik - Bartłomiej Trzciński
Konstruktor - Adrian Toboła
Implementacja
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
Spostrzeżenia, podsumowanie
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.