Skład zespołu

  • Radosław Chmielarz
  • Łukasz Masłowski
  • Krzysztof Rączka

Kody źródłowe programów

Algorytm: Więzień

Celem algorytmu było wydostanie się robota z obszaru zaznaczonego czarną linią, po znalezieniu klucza.

:- consult('plnxt.pl').
 
 
start :-
	nxt_open,
	nxt_light_LED(activate),
	thread_create(go,_,[detached(true)]). 
 
go :-
    nxt_go(300),
    trigger_create(_,check_for_key,go_away),
    trigger_create(_,check_for_line,turn_a_bit).
 
go_away :-
	nxt_stop,
	trigger_killall,
	sleep(1),
	nxt_play_tone(800,1000),
	nxt_go(300),
	trigger_create(_,check_for_line,free).	
 
free :-
   nxt_play_tone(500,2000),
   stop.
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
    nxt_sound(Value,force),
    Value > 50.
 
turn_a_bit :-
	trigger_killall,
	nxt_stop,
    Angle is 120 + random(120),
    nxt_rotate(200,Angle),
 
    go.
 
check_for_line :-
    nxt_light(Value,force),
    Value < 43.
 
check_for_key :-
    nxt_light(Value,force),
    Value > 47,
    Value < 50.
 
stop :-
	nxt_light_LED(passivate),
	trigger_killall,
	nxt_stop,
	nxt_close.

Napotkaliśmy problemy z odróżnieniem kolorów, okazało się, że ciężko jest znaleźć kolor czerwony, przy różnym naświetleniu pomieszczenia miał on całkiem inne wartości, nie pomagało włączenie lampki w czujniku.

Algorytm: Śledzenie linii

Celem algorytmu było spowodowanie aby robot po znalezieniu czarnej linii zaczął jechać wzdłuż niej.

:- consult('plnxt.pl').
 
 
start :-
	nxt_open,
	nxt_light_LED(activate),
	thread_create(go,_,[detached(true)]). 
 
go :-
    nxt_go(200),
    trigger_create(_,check_for_line,follow_the_black_rabbit).
 
follow_the_black_rabbit :-
	nxt_stop,
	trigger_create(_,check_for_white,turn_a_bit),	
	nxt_go(200).
 
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
    nxt_sound(Value,force),
    Value > 50.
 
turn_a_bit :-
	nxt_stop,
        nxt_rotate(200,-900),
	trigger_create(_,check_for_line,follow_the_black_rabbit).
 
check_for_white :-
    nxt_light(Value,force),
    Value > 43.
 
check_for_line :-
    nxt_light(Value,force),
    Value < 43.
 
stop :-
	nxt_light_LED(passivate),
	trigger_killall,
	nxt_stop,
	nxt_close.

Najlepiej algorytm działał tam gdzie linie były owalne w momencie gdy zaczynały się większe zakrzywienia były trudności.

Algorytm: Sprzątacz

Celem algorytmu było taki sterowanie robotem aby posprzątał teren w promieniu 40 cm od niego.

obrot:
 consult('plnxt.pl').
 
 
start :-
	nxt_open,
	thread_create(go,_,[detached(true)]). 
 
go :-
    nxt_rotate(200,900),
    trigger_create(_,check_for_object,get_rid_of),
    stop.
 
get_rid_of :-
	trigger_killall,
	nxt_stop,
	nxt_go_cm(200,20),
	nxt_go_cm(-200,20),
	go.
 
check_for_object :-
    nxt_ultrasonic(Value,force),
    Value < 25.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Znaleźliśmy błąd w funkcji nxt_go_cm, poprawnie działa w przypadku wywołania z konsoli natomiast przy wywołaniu w kodzie jest błąd i nie działa już dobrze.

Pliki źródłowe

pl/dydaktyka/piw/2009/sprawozdania/piw20090429-15c.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