Spis treści

Sprawozdanie 5


Co przybyło

Kontynuowaliśmy naszą pracę z poprzedniego laboratorium. Został nam do zaimplementowania ostatni algorytm. Sensory odległości i dźwięku były zamontowane, zatem rozpoczęliśmy prace. Na początku sprawdziliśmy połączenie z robotem i wykonaliśmy ruch do przodu - wszystko sprawne. Poniżej przedstawiamy efekt naszej pracy:

% :- consult('plnxt.pl').
:- dynamic(odleglosc/2).
 
start :-
	write('-- start 0.0 --'),
	abolish(odleglosc/2),
	nxt_goal(ewka, zapamietuj(0)).
 
clap :-
	nxt_sound(Value,force),
	Value > 30,
	write('clap!\n').
 
zapamietuj(360) :-
	trigger_create(_, clap, sprawdzaj_start),!.
 
zapamietuj(Kat) :-
	stop,
	nxt_rotate(30, 10),
	nxt_ultrasonic(V),
	write('zapamietuj: Kat '),write(Kat),write(' '),write(V),write('\n'),
	assert(odleglosc(Kat,V)),
	Kat2 is Kat + 10,
	zapamietuj(Kat2).
 
sprawdzaj_start :-
	stop,
	sprawdzaj(0, 0, 0).
 
sprawdzaj(360, _, _) :- !.
 
sprawdzaj(_, Zapamietana, Odczytana) :-
	Zapamietana - 5 > Odczytana,!,
	write('NOWOSC!\n'),
	stop,
	nxt_go_cm(200,Odczytana-1).
 
sprawdzaj(Kat, _, _) :-
	stop,
	nxt_rotate(30, 10),
	nxt_ultrasonic(V),
	odleglosc(Kat,Zapamietana),
	write('sprawdzaj: Kat '),write(Kat),write(' zapamietana '),write(Zapamietana),write(' odczytana '),write(V),write('\n'),
	Kat2 is Kat + 10,
	sprawdzaj(Kat2, Zapamietana, V),!.
 
stop :-
	trigger_killall,
	nxt_stop.

Tutaj przedstawiamy krótkie działanie, mianowicie robot obraca się tylko kawałek, a następnie po klaśnięciu sprawdza czy położenie jest takie samo. Oczywiście przy pierwszym odczycie obiektu powinien go wykryć i tak też się dzieje http://www.youtube.com/watch?v=HeH6luFyy6A

A tutaj jest pełny obrót Ewki, niestety 36 obrotów po 10 stopni nie dało pełnego obrotu - błąd dokładności sterowania silnikami http://www.youtube.com/watch?v=zSj07QgmdMA


Spostrzeżenia i wnioski