Kontynuowaliśmy naszą pracę z poprzedniego laboratorium. Został nam do zaimplementowania ostatni algorytm. Sensory odległości i dźwięku były zamontowane, zatem rozpoczęliśmy prace. Na początku sprawdziliśmy połączenie z robotem i wykonaliśmy ruch do przodu - wszystko sprawne. Poniżej przedstawiamy efekt naszej pracy:
% :- consult('plnxt.pl'). :- dynamic(odleglosc/2). start :- write('-- start 0.0 --'), abolish(odleglosc/2), nxt_goal(ewka, zapamietuj(0)). clap :- nxt_sound(Value,force), Value > 30, write('clap!\n'). zapamietuj(360) :- trigger_create(_, clap, sprawdzaj_start),!. zapamietuj(Kat) :- stop, nxt_rotate(30, 10), nxt_ultrasonic(V), write('zapamietuj: Kat '),write(Kat),write(' '),write(V),write('\n'), assert(odleglosc(Kat,V)), Kat2 is Kat + 10, zapamietuj(Kat2). sprawdzaj_start :- stop, sprawdzaj(0, 0, 0). sprawdzaj(360, _, _) :- !. sprawdzaj(_, Zapamietana, Odczytana) :- Zapamietana - 5 > Odczytana,!, write('NOWOSC!\n'), stop, nxt_go_cm(200,Odczytana-1). sprawdzaj(Kat, _, _) :- stop, nxt_rotate(30, 10), nxt_ultrasonic(V), odleglosc(Kat,Zapamietana), write('sprawdzaj: Kat '),write(Kat),write(' zapamietana '),write(Zapamietana),write(' odczytana '),write(V),write('\n'), Kat2 is Kat + 10, sprawdzaj(Kat2, Zapamietana, V),!. stop :- trigger_killall, nxt_stop.
Tutaj przedstawiamy krótkie działanie, mianowicie robot obraca się tylko kawałek, a następnie po klaśnięciu sprawdza czy położenie jest takie samo. Oczywiście przy pierwszym odczycie obiektu powinien go wykryć i tak też się dzieje http://www.youtube.com/watch?v=HeH6luFyy6A
A tutaj jest pełny obrót Ewki, niestety 36 obrotów po 10 stopni nie dało pełnego obrotu - błąd dokładności sterowania silnikami http://www.youtube.com/watch?v=zSj07QgmdMA