Sprawozdanie z laboratorium nr 1

  • Robot: Kajtek + Irek
  • Data wykonania: 12.05.2010 godz. 15:30 (Oficjalnie jesteśmy w grupie o 9:30, ale nie mogliśmy się wtedy zjawić, prowadzący z 15:30 wyraził zgodę, abyśmy zostali na zajęciach.)
  • Autorzy: Renata Niedziela, Michał Urbańczyk, Artur Glier

Początek

Po przeczytaniu opisu konfiguracji robota przy połączeniu przez bluetooth, wzięliśmy się do pracy. I tutaj pojawiły się największe problemy. Początkowo klucz Bluetooth był niewidoczny, użyliśmy innego i po restarcie komputera pojawił się w systemie i dało się go wykryć innym urządzeniem bluetooth (w tym przypadku telefonem komórkowym - nie mieliśmy zaufania do bricka NXT). Połączyliśmy robota z komputerem, oznaczyliśmy połączenie jako zaufane, podaliśmy PIN, sparowaliśmy urządzenia poprzez plnxt_stty. Kolejne problemy pojawiły się po dodaniu linii w pliku plnxt.pl. Po próbie wykonania go spod powłoki SWIPL, wyskakiwał błąd związany z brakiem pliku rfcomm11. Prowadzący kilkukrotnie próbował pomóc nam rozwiązać ten problem, ale nie dopatrzał się błędu i wymienił nam robota na Irka. Irek 9 okazał się bardziej skory do współpracy i już po 5 minutach mieliśmy sparowanego, przygotowanego robota wraz z otwartą powłoką SWIPL.

Budowa robota

Początkowo testowaliśmy robota podłączając kolejną różne sensory i wywołując polecenia z instrukcji:

      nxt_go(300). % Jazda do przodu z prędkością 300 stopni/sekundę.
 
      nxt_stop.
 
      nxt_go_cm(400,80). % Jazda do przodu z prędkościa 400 stopni/sekundę. Zatrzymanie po 80 cm.
 
      nxt_touch(Value). % Odczyt sensora dotyku.
 
      nxt_sound(Value). % Odczyt sensora dźwięku.
 
      nxt_light(Value). % Odczyt sensora światła.
 
      nxt_light_LED(activate). % Włączenie diody sensora światła.
 
      nxt_light(Value).
 
      nxt_light_LED(passivate).
 
      nxt_ultrasonic(Value).
 
      nxt_rotate(350,360). % Obrót w prawo o 360 stopni z prędkością 350 stopni/sekundę.
 
      nxt_play_tone(500,2000). % Wydanie dźwięku o częstotliwości 500 Hz i czasie trwania 2000 ms.
 
      nxt_voltage_millivolt(Voltage). % Odczyt napięcia baterii.

Nie wymaga to chyba komentarza, wszystko działało tak jak zakładaliśmy.

Program

Chcieliśmy napisać poniższy program (swoją drogą to identyczny do tego, który robiliśmy na wcześniejszych zajęciach, tylko w innym środowisku):

Idź tak długo na przód, aż napotkasz przeszkodę. Po napotkaniu przeszkody zatrzymaj się i cofnij o pewną niewielką odległość(aby móc sprawnie zawrócić nie zahaczając o przeszkodę). Obróć się o kąt prosty w lewo. Powrót do początku programu.

consult('/plnxt/').
 
 
start :-	
        nxt_open,
	trigger_create(_,check_distance,[nxt_stop,skret]),
	nxt_go(300).
 
check_distance :-
	nxt_ultrasonic(Distance,force),
	Distance < 15.
skret :-
        nxt_go_cm(400,10),
        nxt_rotate(350,-90),
        nxt_close,
        start.

I tu zdarzyła się dziwna sprawa, za pierwszym razem program zadziałał i robot „odbijał” się od przeszkód. Przy drugim odpaleniu robot się obraził i nie chciał się ruszyć już do końca zajęć. Pojawiły się problemy z najprostszymi poleceniami i nawet połączenie bluetooth zaczęło szwankować. Nie znaleźliśmy przyczyny tych problemów, ale wiemy, że nie jesteśmy jedyną grupą, której się to przytrafiło.

Wnioski i spostrzeżenia

Możliwe, że przy tak dużej ilości połączeń bluetooth zachodziły pewne interferencje, które przeszkadzały przy komunikacji z robotem.

pl/dydaktyka/piw/2010/sprawozdania/piw20100512-15a.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