Spis treści

Sprawozdanie z laboratorium (zapoznanie z PLNXT)


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:

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