Robot: Gienek
Grupa: środa 12.30
Autorzy: Jakubas , Kozera, Płaszowski
Cel: testowanie możliwości interfeju programistycznego PLNXT z użyciem algorytmów o małej złożoności.
Środki:
:- consult('../plnxt/plnxt.pl'). start :- nxt_open, trigger_create(_,pushed_button,[stop]), walking. walking :- trigger_create(_,clap,[run_forest_run]), nxt_go(150). run_forest_run :- nxt_stop, nxt_rotate(300,90), sleep(1), nxt_go(300), sleep(2), nxt_stop, walking. % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 40. pushed_button :- nxt_touch(Value), Value is 1. stop :- nxt_stop, sleep(1), trigger_killall, sleep(2), nxt_stop, nxt_close.
Po pierwsze okazało się, że nasz dotychczasowy towarzysz nauki - Henio - zdezerterował. Nie było go nigdzie. W efekcie do dzisiejszej misji przydzielony został Gienek (aka. nr 7).
Kolejnym problemem okazała się niemożliwość połączenia z robotem. Po bliższych oględzinach stacji roboczej okazało się, że problem jest eksplicite trywialny - brak adaptera Bluetooth. Na szczęście pobliskie stanowisko po prawej stronie posiadało takie urządzenie.
Okazuje się, że dość ciężko jest dobrać odpowiedni próg natężenia dźwięku na jaki robot powinien reagować. Bardzo często robot reagował na 'szum' występujący w tle np.: rozmowy innych grup. Metodą prób i błędów doszliśmy do wniosku że optymalna wartość to 40. Zakłócenia są pomijane, trzeba tylko dobrze klaskać ;)
Gienek
translokacja adaptera z zaprzyjaźnionej stacji roboczej
W początkowej wersji programu, staraliśmy się wykorzystać wątek, tak jak było to podane w przykładzie
thread_create(go_on_buddy,_,[detached(true)]).
Okazało się, że podczas kończenia aplikacji wątek ten nie zostawał niszczony co powodowało powstanie błędu:
Warning: [Thread 3] Thread running "trigger_start(nxt_is_stopped, thread_send_message(2, resume), 1)" died due to failure
Jest to problem podobny do problemu z triggerami z poprzednich zajęć. Wtedy rozwiązaliśmy problem dzięki funkcji trigger_killall, która niszczyła wszystkie triggery (wywoływana podczas kończenia działania programu). W dokumentacji nie zleźliśmy informacji o istnieniu analogicznej funkcji, która niszczyła by wątki. Rozwiązanie polegało zatem na napisaniu programu bez używania wątków. Problem ten się powtarza zawsze i jest to kwestia po stronie API.
Istnieje problem z wątkami - analogiczny do problemu z triggerami na jaki zwróciliśmy uwagę na poprzednich zajęciach.
Istnieje problem z wątkami - analogiczny do problemu z triggerami na jaki zwróciliśmy uwagę na poprzednich zajęciach.
Brak uploadu lokalnego, oddano po terminie. — Igor Wojnicki 2009/05/20 12:45