Sprawozdanie z laboratorium (zapoznanie z PLNXT)

  • Robot: Agatka
  • Data wykonania: 12.05.2010 godz. 17:00
  • Autorzy: Gabriela Pasek, Michał Paszko, Leszek Piątek

Przygotowanie

Na początku przeglądnęliśmy instrukcję do laboratorium w celu poznania tematyki oraz zadań do wykonania. Uruchomiliśmy moduł Bluetooth, sparowaliśmy urządzenia.

Problemy

Udało nam się wykonać z sukcesem skrypt ./bin/plnxt_stty agatka. Jednak zaraz później napotkaliśmy na bardzo uciążliwy błąd - przy wykonywaniu predykatu nxt_open pojawiał się trzykrotnie komunikat: Connection Refused Not Connected. Na Bricku nie było żadnego aktywnego połączenia BlueTooth, przy samym parowaniu urządzeń pojawiał się komunikat Line busy.

Kilkukrotnie próbowaliśmy powtarzać całą procedurę od początku, resetować komputer, bricka, zajrzeliśmy nawet do działu Rozwiązywanie problemów https://ai.ia.agh.edu.pl/wiki/pl:mindstorms:lab:lab215, ale nic nie pomagało.

W końcu spróbowaliśmy wykonać ćwiczenie na starszej wersji oprogramowania PINXT - nie zgłaszała ona żadnych błędów przy kompilacji i łączeniu się z brickiem, ale rezultatem komendy nxt_go(300) było jedynie zablokowanie jednego z kółek (nie można było nim obracać). Co więcej cały interpreter swipl się zawieszał (nie pojawiał się znak zachęty).

Przewróciliśmy nowszą wersję PINXT.

Rozwiązanie

Mniej więcej 20 minut przed końcem laboratorium okazało się, że robot pomimo komunikatu Not Connected i braku aktywnego połączenia BlueTooth jest połączony z komputerem. Udało nam się zrealizować podpunkt testowania komend:

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

Robot zachowywał się zgodnie ze specyfikacją, wszystkie sensory i ich odczyty działały poprawnie.

Udało się nam wykonać pierwszy złożony program bez żadnych problemów. Mogliśmy go dowolnie dużo razy powtarzać.

Znowu problemy...

Przy przejściu do wykonywania bardziej złożonych programów a dokładniej:

:- consult('sciezka_do_plnxt.pl').
 
start :-
	nxt_open,
	trigger_create(_,check_distance,[nxt_stop,nxt_close]),
	nxt_go(300).
 
check_distance :-
	nxt_ultrasonic(Distance,force),
	Distance < 15.

Robot się zawiesił po jednokrotnym, prawidłowym wykonaniu programu. Interpreter swipl nie zawieszał się, jednak wpisywane komendy w żaden sposób nie sterowały robotem.

Takie zachowanie powtórzyło się dokładnie za drugim razem (udało się nam zresetować połączenie, odzyskać komunikację z agatką i jeszcze raz wykonać program).

Wnioski

  • Jeżeli brick z komputerem długo się łączy po wykonaniu komendy nxt_open , a później zgłasza błąd Connection Refused a na końcu Not connected - kłamie bo połączenie istnieje!
  • Aby być pewnym, że połączenie między brickiem a komputerem jest zrealizowane poprawnie, należy:
    • wyłączyć i włączyć bricka
    • usunąć wszystkie połączenia (łączenie z zaufaniem) z BlueTooth'a z komputera
    • usunąć wszystkie połączenia Bluetooth z Brick'a
    • sparować urządzenia zgodnie z instrukcją
    • zignorować błędy typu Not Connected lub Line busy oraz Connection Refused
pl/dydaktyka/piw/2010/sprawozdania/piw20100512-17d.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