Sprawozdanie nr 3

  • Robot: Dyzio
  • Data: 19.05.2010, godz. 15.30
  • Autorzy: Andrzej Gryboś, Michał Henslok, Tomasz Jama

Wstęp

Poczatek laboratorium poświęciliśmy na rozwiązanie problemów z łącznością których doświadczyliśmy tydzień temu. Udało nam się je rozwiązać poprzez zamykanie pl i ponowne wpisywanie:

./bin/plnxt_stty <nazwa_robota>

a następnie ponowne uruchomienie powłoki.

Musieliśmy również usunąć polecenie nxt_open z kodu programu i wpisywać je ręcznie przed uruchomieniem. Oto pierwsza działająca wersja programu panikarz:

:- consult('plnxt.pl').
 
start :-
	nxt_go(100),
	nxt_goal(dyzio, go_on_buddy).
 
go_on_buddy :-
	nxt_go(100),
        sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa.
	trigger_create(_,clap,uciekaj),
	trigger_create(_,click,stop),
	go_on_buddy.
 
uciekaj :-
	nxt_stop,	
	nxt_rotate(900, 90),
	nxt_go_sec(900, 1),
        sleep(1),
	go_on_buddy.
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
	nxt_sound(Value,force),
	Value > 50.
 
click :-
	nxt_touch(Value, force),
	Value > 0.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Działające algorytmy

Niestety pierwsza wersja programu działała połowicznie. Robot poruszał się do przodu, ale drugi wątek z triggerami nie działał.

Po przeniesieniu wszystkiego do jednego wątku powstała poniższa, w pełni działająca wersja programu:

:- consult('plnxt.pl').
 
start :-
	nxt_go(100),
        sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa.
	trigger_create(_,clap,uciekaj),
	trigger_create(_,click,stop).
 
uciekaj :-
	nxt_stop,	
	nxt_rotate(900, 90),
	nxt_go_sec(900, 1),
        sleep(1),
	start.
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
	nxt_sound(Value,force),
	Value > 50.
 
click :-
	nxt_touch(Value, force),
	Value > 0.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Następnie napisaliśmy również w 100% działającą wersję omijacza:

:- consult('plnxt.pl').
 
start :-
	nxt_go(100),
	trigger_create(_,clap,stop),
	trigger_create(_,odl,omijaj).
 
omijaj :-
	nxt_stop,	
	nxt_rotate(100, 30),
	start.
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
	nxt_sound(Value,force),
	Value > 50.
 
odl :-
	nxt_ultrasonic(Value, force),
	Value < 20.
 
stop :-
	nxt_stop,
	nxt_close.

Oto zdjęcie robota dla powyższego programu:

pl/dydaktyka/piw/2010/sprawozdania/piw20100519-15e.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