Skład zespołu:
Tomek Drożdż
Piotr Jamróz
Paweł Hersztowski
Przemysław Krupiński
Wstęp
Laboratorium pozwoliło nam dowiedzieć się jak konstruować zaawansowanych algorytmów opartych na jednym lub na wielu wątkach.
Zadaniem głównym było rozwiązanie jednego z podanych problemów. Nasz wybór padł na Sprzątacza.
Konstrukcja robota
Do ćwiczeń podeszliśmy już z zbudowanym robotem. Jedyną rzeczą jaką musieliśmy(domontować) były baterie.
Po zamontowaniu baterii i podłączeniu pod USB bluetooth próbowaliśmy nawiązać połączenie z robotem co nam wyjątkowo nie chciało się udać dopiero po zmaganiach z wcześniejszymi ćwiczeniami i zabawach z samym robotem (za dużo połączeń potworzonych) udało nawiązać się połączenie.
(oto i nasz robocik w dobrych rękach)
Opracowanie algorytmów
Z proponowanych zagadnień najbardziej do gustu przypadło nam stworzenie sprzątacza (przydałoby nam się coś takiego na mieszkaniu ;). Zadecydowaliśmy, że nasz robot (Gienio) będzie obracał się dookoła własnej osi. Jeśli w odległości max. 40 cm przed sobą znajdzie jakiś przedmiot postara się go wypchnąć przed siebie. Oto proponowany przez nas algorytm:
:- consult('plnxt.pl').
start :-
nxt_open,
thread_create(go_on_buddy,_,[detached(true)]).
go_on_buddy :-
nxt_rotate(200,360),
trigger_create(_,distance,clear).
clean :-
nxt_stop,
nxt_go_cm(300,40),
nxt_go_cm(-300,40),
go_on_buddy.
distance :-
nxt_ultrasonic(D),
D < 15.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Algorytm ten udało się sprawdzić niestety tylko po części. Wpłynęły na to problemy, które dokładnie opisaliśmy w następnej części sprawozdania.
Napotkane problemy
Niestety spotkaliśmy się z uciążliwymi problemami. Pierwszym z nim było połączenie przez Bluetooth. Po wykonaniu instrukcji dotyczącej kłopotów z połączeniem Bluetooth (czyszczenie dotychczasowych połączeń i ponowne parowanie) udało się w końcu połączyć z robotem. Niestety potem natrafiliśmy na problemy z wątkami (komunikat „threads wouldn't die”). Przy testowaniu algorytmu robot przestał reagować. Po kliku minutach (w czasie, których szukaliśmy błędów w algorytmie) robot nagle wykonał przesłany mu algorytm! Potem znowu przestał reagować i wymagany był jego reset. Niestety ponownie pojawiły się problemy z połączeniem. Pomógł dopiero restart komputera
Wnioski
Laboratorum było bardzo interesujące, a proponowane algorytmy to ciekawy sposób na przyswojenie sobie wątków i triggerów w plnxt. Niestety wciąż najbardziej uciążliwe są problemy z połączenie przez Bluetooth i samego testowania i uruchamiania algorytmy :( Rozwiązywanie tych problemów pochłania niestety sporą część zajęć.
Pliki