Na niniejszym laboratorium nawiązaliśmy współpracę z robotem Lego Mindstorm NXT, który ma na imię „Czesław”. Wygląda on następująco:
Nasz robot uzbrojony jest w dwa silniki, każdy z nich napędza jedno z kół. Zatem mamy tutaj do czynienia z jednym niezależnym mostem napędowym. Ponadto, „Czesław” zaopatrzony jest w trzy sensory: dotyku, dźwięku oraz ultradźwięku.
Napisaliśmy program w języku Prolog, który po kompilacji, załadowaniu go do pamięci robota, oraz po uruchomieniu go dla naszego robota, sprawia, iż „Czesław” nabiera następujących zachowań:
Robot „Czesław” poruszą się wolno, spokojnie. Po klaśnięciu (czyli po wywołaniu nagłego hałasu) „Czesław” zmienia kierunek ruchu i przez pewien czas poruszą się dość szybko (nie jest wtedy podatny na hałas, np. klaśnięcie). Jednakże, po paru chwilach „Czesław” uspokaja się i znów porusza się wolno, spokojnie, jak poprzednio, przed klaśnięciem. Zatrzymuje się i zamyka połączenie po wciśnięciu sensora dotyku.
Kod źródłowy powyższego algorytmu dla języka Prolog wygląda następująco:
%Zadanie "Panikarz" :- consult('plnxt.pl'). start :- nxt_open, thread_create(go_on_buddy,_,[detached(true)]). go_on_buddy :- nxt_go(200), trigger_create(_,clap,after_clap). after_clap :- nxt_stop, nxt_rotate(350,120), nxt_go_cm(500, 20), nxt_go(200), trigger_create(_,touch,stop). clap :- nxt_sound(Value,force), Value > 75. touch :- nxt_touch(Value,force), Value > 0. stop :- trigger_killall, nxt_stop, nxt_close.
Robot „Czesław” przemieszcza się wzdłuż linii prostej ze stałą, niewielką prędkością (200 jednostek), a gdy pojawi się sygnał na czujniku dźwięku powyżej wartości 75 jednostek, zatrzymuje się i szybko obraca o kąt 120 stopni. Następnie zaczyna szybko przemieszczać się z prędkością 500 w wybranym kierunku, aż przejedzie 20cm. Po paru chwilach robot zwalnia, i kontynuuje przechadzkę z niewielka prędkością (200).
Gdy pojawi się sygnał na czujniku dotyku robot zatrzymuje się i algorytm kończy swoje działanie.
Filmy pokazujące zachowanie naszego robota dla algorytmu „Panikarz” znajdują się w załączniku do niniejszego sprawozdania (filmy *.3gp).
Czasami zdarzało się, iż otrzymywaliśmy od środowiska Prologu komunikaty o błędach lub ostrzeżenia, po czym mieliśmy trudności z ponownym zmuszeniem naszego robota do wykonywania naszych algorytmów. Niekiedy musieliśmy radzić sobie z tymi problemami w sposób siłowy - restart środowiska Prologu lub restart kostki centralnej robota. A oto zrzuty ekranu ukazujące wspomniane problemy:
Poniższy odnośnik zawiera kod źródłowy programu „Panikarz”, oraz wszelkie zdjęcia użyte w niniejszym sprawozdaniu, a także filmy ukazujące działanie programu „Panikarz” na naszym robocie „Czesław”.