Spis treści

Sprawozdanie z laboratorium (zaawansowane algorytmy w PLNXT)


Początek

Jak zawsze na początku zapoznaliśmy się z tematyką laboratorium. Z racji tego, że na poprzednich zajęciach udało nam się zaimplementować tylko algorytm Więźnia, zaczęliśmy od algorytmu Sprzątacza.

Dostaliśmy zbudowanego już robota, jednakże postanowiliśmy usunąć szczypce i zamienić je na własny spychacz. Zmieniliśmy także umiejscowienie czujników na Ewce.

Zadanie postanowiliśmy realizować w następujący sposób: robot miał obracać się i sprawdzać, czy w promieniu 30-40 cm znajduje się jakiś przedmiot; jeśli tak - podjeżdżał do niego i wypychał go a następnie cofał się na początkową pozycję. Na początku zaimplementowaliśmy algorytm bez stosowania triggerów. Robot zachowywał się poprawnie, jednak nie kończył pracy po wypchnięciu wszystkich przedmiotów. Aby zrealizować tą własność użyliśmy triggerów. Pomimo, że kod programu jest poprawny, otrzymaliśmy błąd arytmetyczny, co nie pozwoliło na pełne przetestowanie nowej wersji.

Kod programów

Sprzątacz ver. 1

:- consult('plnxt.pl').
 
start :-
	nxt_goal(ewka, alg1).
 
alg1 :- 
	nxt_ultrasonic(Value),
	Value < 21,
	nxt_rotate(200, 10),
	alg1.
 
alg1 :-
	nxt_ultrasonic(Value),
	Value > 21,
	nxt_go_cm(200, 30),
	nxt_go_cm(-200, 30),
 	alg1.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Sprzątacz ver. 2

:- consult('plnxt.pl').
 
start :-
	nxt_goal(ewka, alg1).
 
alg1 :- 
	nxt_rotate(200, 360),
 	trigger_create(_,check_distance,[nxt_go_cm(200, 30),nxt_go_cm(-200, 30)]),
	alg1.
 
check_distance :-
	nxt_ultrasonic(Value,force),write(Value),nl,
	Value < 21.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Spakowane pliki źródłowe: lab5_ewka_ppp.rar

Spostrzeżenia, napotkane problemy, wnioski

Napotkane problemy

Spostrzeżenia

Wnioski

Uwagi dotyczące funkcjonalności PLNXT