====Sprawozdanie nr 4====
Robot:[[https://ai.ia.agh.edu.pl/wiki/pl:mindstorms:lab:wyposazenie:11-kajtek|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ł.