====== 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.