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