Sprawozdanie z laboratorium 'lab_plnxt_zaawansowane'
Robot: Gienek
Link do 07-gienek
Grupa: środa 9.30
Autorzy: Papciak, Kokoć, Srebrny
Użyte narzędzia:
zestaw LEGO,
adapter BT,
PLNXT.
Wstęp
Rozpoczynając zajęcia laboratoryjne otrzymaliśmy już gotowego, skonstruowanego robota. Naszym zadaniem było dalsza
praca z interfejsem PLNXT.
Skoncentrowaliśmy się nad zaimplementowaniem algorytmu, który nazwany i opisany został jako: „Śledzenie linii”.
Użyta została plansza testowa, która posiadała tor w postaci grubej czarnej linii, w kształcie bieżni sportowej.
Na niej skoncentrowało się działanie robota, który wykorzystując sensor światła dojeżdżał do niej, a następnie
poruszał się wzdłuż niej aż do naciśnięcia sensora dotyku, który kończył pracę algorytmu i robota.
Kody programów
Poniżej znajduje się nasza implementacja algorytmu.
:- consult('plnxt.pl').
start :-
nxt_open,
nxt_light_LED(activate),
thread_create(stroll,_,[detached(true)]).
stroll :-
nxt_go(200),
sleep(1),
trigger_create(_,swiatlo,prawo),
trigger_create(_,pat,stop),
stroll.
prawo :-
nxt_stop,
nxt_rotate(160, -50),
stroll.
swiatlo :-
nxt_light(L,force), L<50.
pat :-
nxt_touch(Value, force),
Value=:=1.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Plik do pobrania: wiezienie.pl
Włączyliśmy lampę LED, dzięki której mieliśmy lepiej oświetlone „pole manewru”. Dodatkowo obniżyliśmy czujnik
światła tak, aby dokładniej sczytywane były wartości przez niego otrzymane. Wartość: 50, była optymalna
dla takiego ustawienia diody LED i robot dobrze sobie radził z odróżnianiem grubej czarnej od białego pola.
Nie ukrywamy jednak, że bez początkowego zaświecenia diody robot miał problemy wynikające ze słabego oświetlenia sali
laboratoryjnej, a nawet rzucanym przez siebie samego cieniem, więc zabrało nam trochę czasu odpowiednie dobranie tej
wartości.
Tutaj znajdują się filmy z działania robota:
Spostrzeżenia, napotkane problemy
Co do spostrzeżeń: to nasz główno-budujący inżynier znowu narzekał, że robot już jest zbudowany na początku
zajęć i cała satysfakcja z budowania klocków troszkę umyka :)
Co do problemów: to znowu nim było fakt, że wątki uruchomione w poprzednim algorytmie nie były ubijane,
przez co traci się na tym sporo czasu i zastanawia się, czy samemu nie popełniło się jakiegoś błędu. Przez kilka
pierwszych razy fakt ten niezwykle frustruje. Rozwiązanie jest bardzo oporne i przed załadowaniem kolejnego
algorytmu powinniśmy uruchomić środowisko XPCE po raz kolejny.
Lwią część czasu zabrało nam również szukanie błędu, którego przyczyny do tej pory nie znamy. Otóż w pewnym momencie
robot przestał reagować na jakiekolwiek komendy PLNXT! Co śmieszniejsze robot działał z algorytmami, które popełniliśmy
na wcześniejszych zajęciach. Zaczęliśmy analizować kod linijka po linijce wycinając kolejne. I tak: nowy algorytm wciąż
nie działał, stary: działał. Okazało się, że wystarczył restart robota…, ale nie za drugim razem kiedy problem znowu
wystąpił i nie obeszło się bez restartu komputera.
uwagi dotyczące funkcjonalności PLNXT
inne uwagi