Sprawozdanie nr 4
Robot:Kajtek
Data: 26.05.2010
Grupa: Woliński Krzysztof, Dawid Boisse, Paulina Mlaś
Przygotowanie do zajęć
Najpierw uruchomiliśmy dwa testowe programy, aby sprawdzić naszą komunikację z Kajtkiem.
Ćwiczenie pierwsze
:- consult('plnxt.pl').
start :-
nxt_open,
rectangle_loop.
rectangle_loop :-
nxt_go_cm(350,40),
nxt_rotate(350,90),
rectangle_loop.
Ćwiczenie drugie
:- consult('plnxt.pl').
start :-
nxt_open,
nxt_goal(kajtek, rectangle_loop).
rectangle_loop :-
nxt_go_cm(350,40),
nxt_rotate(350,90),
rectangle_loop.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Pierwsze zadanie
Zgodnie z instrukcją rozpoczęliśmy implementację pierwszego zadania o nazwie „Więzień”.
W pierwszej kolejności używając czujnika światła odczytaliśmy wartości dla kolorów: białego, czerwonego i czarnego.
Biały:42,40,41
Czerwony:35,37,37
Czarny:19,25,26,26
Kod programu
:- consult('plnxt.pl').
start :-
nxt_open,
nxt_goal(kajtek, go_on_buddy).
go_on_buddy :-
nxt_go(800,30),
nxt_light(Value),
trigger_create(_,check_red,go_go_go),
trigger_create(_,check_black,go_round),
write(Value),nl,
go_on_buddy.
check_black :-
nxt_light(Value,force),
Value < 30,
write('black'),write(Value),nl.
check_red :-
nxt_light(Value,force),
Value > 34,Value < 38,
write('red'),write(Value),nl.
go_go_go :-
nxt_go(500,300),
write('go'),nl.
go_round :-
nxt_rotate(300,90),
write('round'),nl.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Niestety zauważyliśmy, iż robot nie poruszał się zgodnie z naszymi oczekiwaniami: przekraczał czarną linię zanim napotkał czerwony kwadrat.
Spostrzegliśmy jednak, że plansza nie była jednorodnie oświetlona, np. z powodu cieni generowanych przez samego robota albo biurko. Aby rozwiązać ten problem włączyliśmy LEDa, jednak to także nie rozwiązało całkowicie naszego problemu.
Zanotowaliśmy nowe wartości dla kolorów: białego, czerwonego i czarnego, które generował Kajtek.
Kilka razy członkowie naszego zespołu podnosili robota, co było błędem ponieważ robot nadal zczytywał wartości i błędnie reagował.
Nowe wartości to:
Biały:41,42,43,44
Czerwony:38,39
Czarny:28,30,31,30,31
Poprawiony kod
:- consult('plnxt.pl').
start :-
nxt_open,
nxt_light_LED(activate),
nxt_goal(kajtek, go_on_buddy).
go_on_buddy :-
nxt_go(800,30),
nxt_light(Value),
trigger_create(_,check_red,go_go_go),
trigger_create(_,check_black,go_round),
write(Value),nl,
go_on_buddy.
check_black :-
nxt_light(Value,force),
Value < 33,
write('black'),write(Value),nl.
check_red :-
nxt_light(Value,force),
Value > 37,Value < 40,
write('red'),write(Value),nl.
go_go_go :-
nxt_go(500,300),
write('go'),nl.
go_round :-
nxt_rotate(300,90),
write('round'),nl.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Podsumowanie
Robot niekiedy poprawnie wykonywał swoje zadanie, ale zdarzało się również, że nie poruszał się zgodnie z zamierzeniami.
Bardzo trudno było dobrać wartości w ten sposób by robot bezbłędnie je odczytywał i dobrze na nie reagował.