Labolatorium
Podczas laboratorium zapoznaliśmy się z przykładami algorytmów oraz ze sposobem działania wątków. Zaprojektowaliśmy oraz zaimplementowaliśmy algorytm, dzięki któremu robot na zmianę zatrzymywał się i ruszał zmieniając kierunek jazdy po wykryciu odpowiedniego sygnały dźwiękowego.
Implementacja algorytmu Panikarz
:- consult('../plnxt.pl').
start :-
nxt_open,
thread_create(go_on_buddy,_,[detached(true)]).
go_on_buddy :-
go,
trigger_create(_, touch, stop).
go :-
nxt_go(200),
trigger_create(_, clap, runaway, 1).
runaway :-
nxt_rotate(350, 180, force),
nxt_go_sec(400, 5),
timer_create(_, 6, go).
clap :-
nxt_sound(Value,force),
Value > 40.
touch :-
nxt_touch(Value, force),
Value is 1.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Napotkane problemy
Na samym początku laboratorium mieliśmy duże problemy z rozpoczęciem pracy, ponieważ nie mogliśmy połączyć robota z komputerem. Sukces przyniosła dopiero interwencja prowadzącego. Jednym z problemów był problem z BT - pomogła zmiana portu oraz restart systemu.
Warto także sprawdzić czy w robocie jest włączony Bluetooth. Czasami Bluetooth sam się wyłącza (być może oszczędzanie energii) i tym samym płata ogromnego psikusa osobom próbującym wykonać laboratorium.
Dodatkowym czynnikiem wzmagającym występowanie problemów związanych z komunikacją, było przekonanie iż poprzednia grupa pracująca przy tym samym stanowisku używała tego samego robota, a tym samym brak potrzeby re konfiguracji pliku plnxt.pl. Czego objawem jest przy skonsultowaniu powyższego pliku i wydaniu komendy nxt_open.
w interpreterze prolog'a komunikat: ?- nxt_open. ERROR: source_sink `/dev/rfcomm3' does not exist (Host is down) Exception: (10) open('/dev/rfcomm3', write, _L182, [buffer(false)]) ?
.
Dopiero po rozwiązaniu wszystkich problemów związanych z przygotowanie stanowiska pracy mogliśmy przystąpić do implementacji zadanych algorytmów. Niestety czas który pozostał do końca laboratorium pozwolił nam tylko na opracowanie jednego, którego kod źródłowy zamieściliśmy powyżej.