====== 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|}}