Sprawozdanie 2

  • Robot: Ewka
  • Data wykonania: 12.05.2010 godz. 17:00
  • Autorzy: Agata Krysian, Łukasz Mendakiewicz, Tomasz Skrzypczak

Rozeznanie

Zasiadając do stanowiska pracy zastaliśmy złożoną już Ewkę, mobilnego robota o znanej nam już, standardowej konstrukcji. Dodatkowo dołączone były do niego sensory ultradźwiękowy, światła i dźwięku.

Start

Zgodnie z instrukcją oraz zaleceniami prowadzącego rozpoczęliśmy konfigurację stanowiska do pracy z NXT. Po zalogowaniu się do systemu w pierwszej kolejności usunęliśmy wszystkie ustawienia pozostałe po poprzednich grupach. Chcieliśmy mieć pewność, że wszystko zostanie zrobione prawidłowo. Ściągnęliśmy więc najnowszą wersję PINXT, rozpakowaliśmy zgodnie z instrukcją i uruchomiliśmy skrypt.

W pliku konfiguracyjnym plnxt.pl dodaliśmy naszego robota:

nxt_robot_definition(ewka,'/dev/rfcomm5',bt,off,on_demand,17.5,11,'C','B','A',false,'S1','S2','S3','S4').

Następnie sprawdziliśmy konfigurację postępując zgodnie z instrukcją Pierwsze kroki. Za pomocą konsoli uruchomiliśmy powłokę SWIPL i załadowaliśmy zmodyfikowany przez nas wcześniej plik konfiguracyjny. Otworzyliśmy połączenie z Ewką i ku naszej uciesze posłusznie wykonywała ona nasze polecenia (testowaliśmy wszystkie polecenia z dokumentacji poleceń (przemieszczanie, odczyt sensorów). Zamknęliśmy połączenie i powróciliśmy do programu laboratorium.

Poniższy kod wpisaliśmy do pliku lab2_1.pl

:- consult('plnxt.pl').
 
start :-
        nxt_open,
        nxt_go_cm(400,80), % Jazda 80 cm do przodu z prędkością 400 stopni/sekundę.
        nxt_go_cm(-400,80), % Jazda 80 cm do tyłu z prędkością 400 stopni/sekundę.
        nxt_close.
 
:- start.

i uruchomiliśmy. Ewka ochoczo ruszyła do przodu. Wykazując się nieprzeciętnym refleksem Tomasz w niemalże ostatniej chwili złapał ją, uchroniwszy ją tym samym od bolesnego zderzenia ze ścianką. Chwilę później robot zmienił zwrot. Położyliśmy go z powrotem na ławce i wrócił do nas jadąc tyłem. Byliśmy przeszczęśliwi, gdyż udało nam się to jako pierwszej grupie i jak się później okazało, jako jednej z niewielu…

Co się stało?

Zachwyceni dotychczasowym działaniem robota chcieliśmy powtórzyć jego ostatnie manewry. Niestety przy drugiej próbie robot przestał reagować na nasze instrukcje. Po kilka nieudanych próbach pobudzenia go podjęliśmy decyzje o ponownym uruchomieniu komputera. Od razu po zalogowaniu się, chcieliśmy ponownie przetestować ruch Ewki do przodu oraz powrotny. Interpreter prologu zatrzymał się i przez dłuższą chwilę nie wyświetlał żadnego komunikatu (zapewne starał się połączyć). Po kilkuminutowym oczekiwaniu postanowiliśmy zakończyć proces xpce. Po ponownym otwarciu powłoki uruchamialiśmy polecenia kolejno jedno po drugim:

nxt_open.
nxt_go_cm(400,80).
nxt_go_cm(-400,80).
nxt_close.

Wszystko działało, nawet kolejna próba to potwierdziła. Jednak uruchomienie pliku lab2_1.pl nadal nie przynosiło takiego samego efektu. Nasze następne działania niestety były bezskuteczne. W pewnej chwili nie mogliśmy się połączyć z Ewką. Na rozwiązanie tego problemu nie mieliśmy już pomysłu. Kolega z sąsiedniej grupy zasugerował nam, że problem wynika z tego, że tylko jedna grupa w sali może się połączyć z robotem. Gdy my byliśmy połączeni - oni nie mogli, a teraz sytuacja jest odwrotna. Sceptycznie nastawieni do jego odczucia, podjęliśmy kolejne próby połączenia. Kilkunastominutowe starania przyniosły efekt! (jak się po chwili okazało, koledzy obok stracili połączenie).

Zimny prysznic

Uradowani, jeszcze raz kazaliśmy Ewce wykonać nasze polecenia pisane w powłoce linia po linii. Robot działał jak powinien, więc nadeszła próba jak zachowa się podczas tych poleceń wpisanych razem. Efekt - uruchomienie lab2_1.pl znów nie dało rezultatu. Połączenie z Ewką zostało utracone, a koledzy obok je „odzyskali”. Mimo wszystko nie poddaliśmy się, nasze starania dały zadziwiający efekt, na polecenie:

nxt_open.

otrzymaliśmy odpowiedź:

Segmentation fault

Co przerosło nasze najśmielsze oczekiwania.

Syzyfowa praca

Do końca laboratorium próbowaliśmy wszelkimi możliwymi sposobami wskrzesić Ewkę. Restartowaliśmy i komputer, i robota. Sprawdzaliśmy bluetooth, nawet zaczynaliśmy wykonywać instrukcję ze wszystkimi ustawieniami jeszcze raz od samego początku… Wszystko - na marne.

Refleksje

  • Wciąż nie wiemy co było przyczyną tak absurdalnego zachowania programu.
  • Szkoda, że zamiast wykorzystywać nasz potencjał intelektualny na tworzenie sprytnego algorytmu, musieliśmy przez całe zajęcia zmagać się z problemami technicznymi.
  • Jest nam bardzo przykro, że pomimo wielkich chęci i olbrzymich starań, nie mieliśmy możliwości wykonać wszystkich zadań podanych w instrukcji.
pl/dydaktyka/piw/2010/sprawozdania/piw20100512-17c.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0