Sprawozdanie z laboratorium nr 4
Robot: Agatka
Data wykonania: 26.05.2010 godz. 15:30 (Oficjalnie jesteśmy w grupie o 9:30, ale nie mogliśmy się wtedy zjawić, prowadzący z 15:30 wyraził zgodę, abyśmy zostali na zajęciach.)
Autorzy: Renata Niedziela, Michał Urbańczyk, Artur Glier
Początek
Bez większych problemów sparowaliśmy robota z komputerem. Dla sprawdzenia poprawności połączenia sprawdziliśmy działanie robota kilkoma prostymi poleceniami
Budowa robota
Zdecydowaliśmy się zaimplementować program „Więzień” ponieważ wydawał się w miarę prosty i od razu wiedzieliśmy jakiego algorytmu użyć. Robot był już zbudowany, jedyną naszą modyfikacją było lepsze zamocowanie czujnika, aby był skierowany prostopadle do ziemi.
Nasz robot na planszy testowej:
Program
Na początku musieliśmy określić zakresy odczytów czujnika dla koloru białego, czarnego i czerwonego. Po kilku próbach zdecydowaliśmy się na:
biały>67
60<czerwony<67
czarny<45
Po wyliczeniu tych progów zaczęliśmy pisać program, co poszło dosyć sprawnie. Jedynym problemem okazało się zabijanie wątków. Gdy ich nie zabijaliśmy to nie było sposobu aby zatrzymać robota - natworzyło się bardzo dużo wątków które działały w tle.
start :-
trigger_create(Trigger1,check_color,[nxt_stop,skret]),
trigger_create(Trigger2,check_color2,[nxt_stop,uciekaj]),
nxt_go(200).
check_color :-
nxt_light(Light2,force),
Light2 < 45.
check_color2 :-
nxt_light(Light,force),
Light > 60,
Light < 67.
skret :-
trigger_killall,
nxt_go_cm(-100,5),
nxt_rotate(100,150),
start.
uciekaj :-
nxt_play_tone(500,2000),
nxt_go_cm(300,70),
nxt_play_tone(500,2000),
trigger_killall.
Program działał całkiem nieźle, czasami tylko wychodził poza planszę, ale było to spowodowane bardziej niedokładnością czujnika niż wadą algorytmu.
Wnioski i spostrzeżenia
Czasami po błędnym programie xpce zawieszało się. Nie mieliśmy sposobu na obejście tego problemu - od nowa parowaliśmy urządzenia i zwykle robot zaczynał znowu z nami współpracować, ale nie było to regułą.