====== Kody źródłowe programów ======
===== Alogrytm: Śledzenie lini=====
//Robot umieszczony na planszy testowej dojeżdża do grubej czarnej linii i od tego momentu stara się poruszać wzdłuż tej linii. Po wciśnięciu sensora dotyku kończy pracę.//
:- consult('plnxt.pl').
start:-
nxt_open,
nxt_light_LED(activate),
go_on_buddy,
trigger_create(_,pushed,[nxt_stop,nxt_close]).
go_on_buddy :-
nxt_stop,
write('goonbuddy'),
nxt_go(160),
trigger_create(_,lost_line,change_direction).
pushed :-
nxt_touch(Value,force),
Value=1.
find_line :-
nxt_light(Value,force),
Value < 45.
lost_line :-
nxt_light(Value,force),
Value > 45.
change_direction :-
nxt_stop,
trigger_create(_,find_line,go_on_buddy),
write('obrot'),
nxt_rotate(200,-100),
write('koniec obrotu').
Robot początkowo jest ustawiony na czarnej lini i jedzie prosto do przodu.\\
Gdy zjedzie z lini powoli obraca się w lewo, aż do jej znalezienia. Wtedy kontynuuje jazdę na wprost.
Robot zatrzymuje sie po wykryciu sygnału na czujniku dotyku.
=== Reportaż wideo ===
Plik dostępny [[http://student.agh.edu.pl/~zarusz/pliki/piw/VIDEO0018.mp4|tutaj]], [[http://student.agh.edu.pl/~zarusz/pliki/piw/VIDEO0019.mp4|tutaj]] oraz [[http://student.agh.edu.pl/~zarusz/pliki/piw/VIDEO0020.mp4|tutaj]].
===== Alogrytm: Sprzątacz=====
//Robot ma za zadanie oczyścić teren w promieniu np. 40 cm od swojej początkowej pozycji. Jeżeli w tym obszarze znajdują się jakieś przeszkody, próbuje je wypchnąć poza niego. Po oczysczeniu całego terenu, wraca do pozycji wyjściowej i kończy pracę.//
:- consult('plnxt.pl').
start:-
nxt_open,
nxt_light_LED(activate),
go_on_buddy,
trigger_create(_,pushed,[nxt_stop,nxt_close]).
go_on_buddy :-
nxt_rotate(130, 360),
write('goonbuddy'),
trigger_create(_,lost_line,go_cleaning).
pushed :-
nxt_touch(Value,force),
Value=1.
lost_line :-
write('znalaz!'),nl,
nxt_ultrasonic(Value, force),
Value < 40.
go_cleaning :-
trigger_killall,
trigger_create(_,pushed,[nxt_stop,nxt_close]),
write('gocleaning'),nl,
nxt_stop,
write('doprzodu'),nl,
nxt_go_cm(300, 40),
write('dotylu'),nl,
%WNIOSKI: nie dziala jazda do tylu
nxt_rotate(300,180),
nxt_go_cm(300, 40),
go_on_buddy.
Robot ustawiony jest na środku obszaru, który ma wysprzątać.\\
Powoli obraca się.
Gdy wykryje obiekt w odległości około 40cm jedzie 40cm na wprost wypychając przedmiot z zadanego obszaru, poczym obraca się i wraca.
Robot zatrzymuje sie po wykryciu sygnału na czujniku dotyku.
Program nie działał poprawnie. Po uruchomieniu robot zapętlał się w funkcji ''Lost_line''.
Niestety ze względu na brak czasu nie zdążyliśmy dokładnie przetestować programu i znaleźć przyczyny błędu.
===== Spostrzeżenia, napotkane problemy, wnioski =====
Przy realizacji alogrytmu **Sprzątacz** odkrylismy, że nie działa jazda do tyłu.\\
Wywołanie funkcji ''nxt_go_cm'' z ujemną prędokością zawiesza robota i przestaje on reagować na kolejne komendy.\\
W programie ominęliśmy ten problem realizując wracanie przez obrócenie się o 180stopni i jazdę do przodu.
===== Pliki źródłowe =====
{{:pl:dydaktyka:piw2009:sprawozdania:2009_04_29_maruszak_noga_mytnik_lesniakiewicz.zip|}}