====== Sprawozdanie nr 3 ====== * Robot: Dyzio * Data: 19.05.2010, godz. 15.30 * Autorzy: Andrzej Gryboś, Michał Henslok, Tomasz Jama ===== Wstęp ===== Poczatek laboratorium poświęciliśmy na rozwiązanie problemów z łącznością których doświadczyliśmy tydzień temu. Udało nam się je rozwiązać poprzez zamykanie pl i ponowne wpisywanie: ./bin/plnxt_stty a następnie ponowne uruchomienie powłoki. Musieliśmy również usunąć polecenie nxt_open z kodu programu i wpisywać je ręcznie przed uruchomieniem. Oto pierwsza działająca wersja programu panikarz: :- consult('plnxt.pl'). start :- nxt_go(100), nxt_goal(dyzio, go_on_buddy). go_on_buddy :- nxt_go(100), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,uciekaj), trigger_create(_,click,stop), go_on_buddy. uciekaj :- nxt_stop, nxt_rotate(900, 90), nxt_go_sec(900, 1), sleep(1), go_on_buddy. % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 50. click :- nxt_touch(Value, force), Value > 0. stop :- trigger_killall, nxt_stop, nxt_close. ===== Działające algorytmy ===== Niestety pierwsza wersja programu działała połowicznie. Robot poruszał się do przodu, ale drugi wątek z triggerami nie działał. Po przeniesieniu wszystkiego do jednego wątku powstała poniższa, w pełni działająca wersja programu: :- consult('plnxt.pl'). start :- nxt_go(100), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,uciekaj), trigger_create(_,click,stop). uciekaj :- nxt_stop, nxt_rotate(900, 90), nxt_go_sec(900, 1), sleep(1), start. % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 50. click :- nxt_touch(Value, force), Value > 0. stop :- trigger_killall, nxt_stop, nxt_close. Następnie napisaliśmy również w 100% działającą wersję omijacza: :- consult('plnxt.pl'). start :- nxt_go(100), trigger_create(_,clap,stop), trigger_create(_,odl,omijaj). omijaj :- nxt_stop, nxt_rotate(100, 30), start. % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 50. odl :- nxt_ultrasonic(Value, force), Value < 20. stop :- nxt_stop, nxt_close. Oto zdjęcie robota dla powyższego programu: {{:pl:dydaktyka:piw:2010:sprawozdania:zdjecie0017.jpg|}}