To jest stara wersja strony!


Przygotowanie

Mieliśmy gotowego robota Jasia, lekko zmodyfikowanego Tribota.

Więzień

Algorytm

Postanowiliśmy przygotować „Więźnia” do ucieczki z więzienia. Po krótce, Jasio miał jeździć po ograniczonym czarną linią terenie, aż nie znajdzie „czerwonego klucza”. Po jego znalezieniu, miał za zadanie zwiewać, gdzie pieprz rośnie.

Dodatkowo postanowiliśmy jako urozmaicenie dołożyć, „kręciołę”, czyli kręcenie się wokół siebie Jasia, ze szczęścia po ucieczce.

Kod programu

:-consult('plnxt.pl').
 
start:-
	nxt_open,
	nxt_light_LED(activate,force),
	jazda,
	trigger_create(_,pushed,[nxt_stop,nxt_light_LED(passivate,force),nxt_close]).
 
jazda:-
	nxt_go(150),
	trigger_create(_,light,[nxt_stop,cofnij]),
	trigger_create(_,red,[nxt_stop,uciekaj]).
 
cofnij:-
	nxt_go_cm(-150,5),
	nxt_rotate(200,105),
	jazda.
 
uciekaj:-
	nxt_go(600),
	trigger_create(_,klask,[nxt_stop,kreciola]).
 
kreciola:-
	nxt_rotate(500,360),
	uciekaj.
 
pushed:-
	nxt_touch(Value,force),
	Value=1.
 
light:-	
	nxt_light(Value,force),
	Value<35.
 
red:-
	nxt_light(Value,force),
	Value>50,
	Value<70.
 
klask:-
	nxt_sound(Value,force),
	Value>90.

Problemy

Niestety po dopisaniu „kręcioły” natkneliśmy się na dziwne i trudne do przewidzenia zachowanie Jasia. Po przeładowaniu „xpce” i ponownemu włączeniu „Więźnia”, Jasio od początku reagował na klaśnięcia, powodujące „kręciołę”. Przy kolejnych wyłączeniach „xpce” pojawiały się podobne komunikaty:

?- start.
Yes
?- halWarning: [Thread 4] Thread running "trigger_start(pushed, [nxt_stop, nxt_light_LED(passivate, force), nxt_close], 1)" died on exception: source_sink `nxt_close' does not exist
Warning: [Thread 3] Thread running "trigger_start(klask, [nxt_stop, kreciola], 1)" died due to failure
?- halt.
3 threads wouldn't die

Najwyraźniej wątki, stworzone dla konkretnych czujników, nie były kończone, po skorzystaniu z wyłącznika dotykowego, który też działał na osobnym wątku. Po ponownym włączeniu „xpce” nie zakończone wątki ciągle działały i powodowały nie przewidziane rezultaty.

Usprawnienia

Dość dużą trudność sprawiło nam ustalenie wartości czerni i czerwieni, dla sensora świetlnego. Można by zaszyć w bibliotece plnxt stałe odpowiadające za te kolory, bądź wprost triggery odpowiadające za ich detekcje.

pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-11b.1232886677.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (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