Sprawozdanie z laboratorium nr 4


Robot: Franek

Data wykonania: 14.01.2009, godz. 9.30

Autorzy: Szymon Frenkel, Maciej Fabia


Budowa naszego robota:

Franek korzystał z dwóch sensorów:

  • czujnika dźwięku
  • czujnika dotyku

Najpierw zapoznaliśmy się z podstawowymi poleceniami API robota:

  • otwieranie i zamykanie połączenia Bluetooth - nxt_open, nxt_close,
  • poruszanie się z daną prędkością i zatrzymywanie - nxt_go(n), nxt_stop,
  • pobieranie danych z czujników - nxt_sound, nxt_touch,
  • reagowanie na zdarzenie - trigger_create.

Następnie zaimplementowaliśmy algorytm „panikarz”. Robot jechał powoli do przodu. Po usłyszeniu klaśnięcia przez chwilę szybko się cofał, a następnie ponownie zaczynał powoli poruszać się do przodu.

:- consult('plnxt.pl').
 
start:-
	nxt_open,
	go_on_buddy,
	trigger_create(_,pushed,[nxt_stop,nxt_close]).
 
go_on_buddy :-
	nxt_go(200),
        sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa.
	trigger_create(_,clap,wait_a_second_buddy).
 
wait_a_second_buddy :-
	nxt_stop,
	nxt_rotate(750,-360,force),
        sleep(1),
	trigger_create(_,clap,go_on_buddy).
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
	nxt_sound(Value,force),
	Value > 55.
 
% Sprawdzenie, czy sensor dotyku jest wciśnięty.
pushed :-
	nxt_touch(Value,force),
	Value=1.
 
:- start.

panikarz_14-01-09.pl

Wnioski

Po zatrzymaniu algorytmu kilkukrotnie musieliśmy restartować SWIPL, ponieważ robot blokował się w momencie, kiedy po ucieczce miał znów jechać do przodu. Nie reagował wtedy na próby ponownego nawiązania połączenia - przyczyną były prawdopodobnie wątki stworzone przez trigger_create. Mimo to naszym zdaniem PLNXT daje większe możliwości niż standardowe środowisko graficzne LEGO.

pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090114-09a.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