====== 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ą [[pl:plnxt:pierwsze_kroki|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.