Robot:Kajtek
Data: 26.05.2010
Grupa: Woliński Krzysztof, Dawid Boisse, Paulina Mlaś
Najpierw uruchomiliśmy dwa testowe programy, aby sprawdzić naszą komunikację z Kajtkiem.
:- consult('plnxt.pl'). start :- nxt_open, rectangle_loop. rectangle_loop :- nxt_go_cm(350,40), nxt_rotate(350,90), rectangle_loop.
:- 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.
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
:- 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
:- 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.
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ł.