Sprawozdanie z zajęć laboratoryjnych realizowanych przez: Świerkosz, Wróbel, Kowalski.
==== Realizacja zadań ====
Po przyjściu na stanowisko zastaliśmy zbudowanego robota. Przebudowaliśmy go trochę zmieniając układ sensorów, po czym przystąpiliśmy do realizacji właściwej części laboratorium.\\
{{pl:dydaktyka:piw2009:sprawozdania:200904222-17c-foto_01.jpg}}
{{pl:dydaktyka:piw2009:sprawozdania:20090422-17c-foto_2.jpg}}
=== Algorytm numer 1 ===
Algorytm naiwny, robot pcha piłkę.
:- consult('../plnxt.pl').
% uruchamia algorytm
start :-
nxt_open,
nxt_light_LED(activate),
trigger_create(_,check_light,[stop]),
nxt_go(200).
% sprawdza jasność podłoża
check_light :-
nxt_light(Value,force),
Value < 40.
% zatrzymuje robota
stop :-
trigger_killall,
nxt_stop,
nxt_close.
{{pl:dydaktyka:piw2009:sprawozdania:20090422-17c-foto_07.jpg}}
{{pl:dydaktyka:piw2009:sprawozdania:20090422-17c-foto_06.jpg}}\\
[[http://www.youtube.com/watch?v=jHLB776_sxg|YouTube: Ball I]]
=== Algorytm numer 2 ===
:- consult('../plnxt.pl').
% uruchamia algorytm
start :-
nxt_open,
nxt_play_tone(1000,1000),
nxt_go(300),
trigger_create(_,check_distance,[turn]).
% sprawdza odległość od potencjalnej przeszkody
check_distance :-
nxt_ultrasonic(Distance,force),
Distance < 20.
% nasłuchuje
check_sound :-
nxt_sound(Value,force),
Value > 70.
% wykonuje obrót i jedzie dalej
turn :-
nxt_stop,
trigger_create(BZZ,check_sound,[stop]),
nxt_rotate(350, 90),
nxt_go_sec(300, 2),
nxt_rotate(350, -90),
trigger_kill(BZZ),
trigger_create(_,check_distance,[turn]),
nxt_go(300).
% zatrzymuje robota
stop :-
nxt_play_tone(1000,1000),
trigger_killall,
nxt_stop,
nxt_close.
[[http://www.youtube.com/watch?v=ErirMhLaPgM|YouTube: Barrier I]], [[http://www.youtube.com/watch?v=u263snQndqI|YouTube: Barrier II]]
=== Algorytm numer 3 ===
:- consult('../plnxt.pl').
% uruchamia algorytm
start :-
nxt_open,
trigger_create(_,check_sound,[run]),
trigger_create(_,check_touch,[stop]),
nxt_go(150).
% nasłuchuje
check_sound :-
nxt_sound(Value,force),
Value > 50.
% sprawdza czujnik dotyku
check_touch :-
nxt_touch(Value,force),
Value = 1.
% wykonuje obrót i jedzie dalej
run :-
nxt_stop,
Angle is 60 + random(60),
nxt_rotate(400, Angle),
nxt_go_sec(600, 2),
trigger_create(_,check_sound,[run]),
nxt_go(150).
% zatrzymuje robota
stop :-
trigger_killall,
nxt_stop,
nxt_close.
[[http://www.youtube.com/watch?v=brR4_9eT6F8|YouTube: Panic I]]