Robot: Gienek
Link do 07-gienek
Grupa: środa 9.30
Autorzy: Papciak, Kokoć, Srebrny
Użyte narzędzia:
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.
Rys. 1. Wygląd robota |
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:
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.