==== Sprawozdanie z laboratorium nr 4 ===== ---- Robot: **Franek** Data wykonania: **14.01.2009, godz. 9.30** Autorzy: **Szymon Frenkel, Maciej Fabia** ---- Budowa naszego robota: {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:franek14-01-09.jpg?220|}} {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:franek2_14-01-09.jpg?220|}} Franek korzystał z dwóch sensorów: * czujnika dźwięku * czujnika dotyku Najpierw zapoznaliśmy się z podstawowymi poleceniami API robota: * otwieranie i zamykanie połączenia Bluetooth - nxt_open, nxt_close, * poruszanie się z daną prędkością i zatrzymywanie - nxt_go(n), nxt_stop, * pobieranie danych z czujników - nxt_sound, nxt_touch, * reagowanie na zdarzenie - trigger_create. Następnie zaimplementowaliśmy algorytm "panikarz". Robot jechał powoli do przodu. Po usłyszeniu klaśnięcia przez chwilę szybko się cofał, a następnie ponownie zaczynał powoli poruszać się do przodu. :- consult('plnxt.pl'). start:- nxt_open, go_on_buddy, trigger_create(_,pushed,[nxt_stop,nxt_close]). go_on_buddy :- nxt_go(200), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,wait_a_second_buddy). wait_a_second_buddy :- nxt_stop, nxt_rotate(750,-360,force), sleep(1), trigger_create(_,clap,go_on_buddy). % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 55. % Sprawdzenie, czy sensor dotyku jest wciśnięty. pushed :- nxt_touch(Value,force), Value=1. :- start. {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:panikarz_14-01-09.pl|}} === Wnioski === Po zatrzymaniu algorytmu kilkukrotnie musieliśmy restartować SWIPL, ponieważ robot blokował się w momencie, kiedy po ucieczce miał znów jechać do przodu. Nie reagował wtedy na próby ponownego nawiązania połączenia - przyczyną były prawdopodobnie wątki stworzone przez trigger_create. Mimo to naszym zdaniem PLNXT daje większe możliwości niż standardowe środowisko graficzne LEGO.