Spis treści

Sprawozdanie z laboratorium (zaawansowane algorytmy w PLNXT)


Początek

Na początku zaznajomiliśmy się z tematyką laboratorium oraz specyfikacją algorytmów. Tym razem Ewka nie budziła jakichkolwiek podejrzeń co do nieprawidłowego działania. Robot początkowo zawierał szczypce, jednakże postanowiliśmy je usunąć w celu prawidłowego umocowania czujnika światła.

Uwolnić Ewkę ..

Zaczęliśmy od algorytmu Więźnia. Nasz program budowaliśmy modułowo, to znaczy dodając kolejną funkcjonalność, sprawdzialiśmy jej działanie na dołączonej macie testowej. Kiedy na początku skalibrowaliśmy wartości odbieranie przez czujnik światła z kolorami wzorcowymi na macie testowej, nic nie budziło naszych wątpliwości. Aczkolwiek po pierwszym załadowaniu programu do Ewki i uruchomieniu predykatu start zdaliśmy sobie sprawę, że kolory nie są dobrze odwzorowane. Stwierdziliśmy, że powodem może być zbyt dużego natężenie światła na macie, którą umieściliśmy na biurku przy oknie. Dlatego też spróbowaliśmy poeksperymentować z umiejscowieniem czujnika światła co do wysokości. W taki sposób zebraliśmy kilka próbek wartości referencyjnych kolorów odbieranych przez czujnik, uruchamialiśmy algorytm na Ewce, jednak nic nie wskazywało na poprawne działanie.. Ewka dalej była uwięziona ..

Ostatecznie postanowiliśmy umieścić matę testową na podłodze i pobierać wskazania czujnika właśnie z tej pozycji. Jak przypuszczaliśmy - nawet ponowna modyfikacja wysokości czujnika światła nie pozwoliła nam na ustalenie prawidłowych i jednoznacznych wartości i przedziałów dla identyfikacji kolorów. W dodatku ponownie pojawiały się problemy z połączeniem Bluetooth oraz 'wieszaniem się' predykatów nxt_open oraz stop.

Kod programów

Więzień

:- consult('plnxt.pl').
 %czarny: 17, czerwony: 40, biały: 43, szary: 35
 %18,37,41,36
start :-
	nxt_light_LED(activate),
	nxt_goal(ewka, alg1).
 
alg1 :- 
	nxt_go(250),
	trigger_create(_,check_red,[nxt_stop, nxt_play_tone(1000,1000),stop]),
 	trigger_create(_,check_line,[nxt_stop,Angle is 120 + random(120),nxt_rotate(300,Angle),alg1]).
 
check_line :-
	nxt_light(Value, force),write(Value),nl,
	Value < 25.
 
check_red :-
	nxt_light(Value, force),write(Value),nl,
	Value < 41,
	Value > 38.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Spakowane pliki: pasek_paszko_piatek_lab4.rar

Spostrzeżenia, napotkane problemy, wnioski

Napotkane problemy

Spostrzeżenia

Wnioski

Uwagi dotyczące funkcjonalności PLNXT