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.
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.
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.