====== Sprawozdanie z laboratorium (proste algorytmy w PLNXT) ======
* Robot: **Ewka**
* Data wykonania: **19.05.2010 godz. 17:00**
* Autorzy: **Gabriela Pasek, Michał Paszko, Leszek Piątek**
----
==== Kod programów ====
=== Algorytm1 ===
:- consult('plnxt.pl').
start :-
nxt_open,
nxt_goal(ewka, alg1).
alg1 :-
nxt_go(200),
trigger_create(_,check_line,[nxt_stop,Angle is 120 + random(120),nxt_rotate(100,Angle)]),
alg1.
check_line :-
nxt_light(Value, force),write(Value),nl,
Value < 30.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
=== Algorytm2 ===
:- consult('plnxt.pl').
start :-
nxt_open,
nxt_goal(ewka, alg2).
alg2 :-
nxt_go(100),
trigger_create(_,check_line,[wroc_na_linie]),
alg2.
check_line :-
nxt_light(Value, force),write(Value),nl,
Value > 30.
wroc_na_linie :-
nxt_stop,
nxt_rotate(100, 10),
trigger_create(_,not(check_line),[alg2]).
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Spakowane pliki: {{:pl:dydaktyka:piw:2010:sprawozdania:pasek_paszko_piatek_lego_lab3.rar|}}
===== Spostrzeżenia, napotkane problemy, wnioski =====
=== Spotrzeżenia ===
* Bez wątpienia praca w środowisku PLNXT daję nam większa kontrolę nad robotem, niż wykorzystywanie środowiska LEGO - przynajmniej na razie.
=== Napotkane problemy ===
* Pierwszym zauważonym przez nas problemem był brak charakterystycznego dźwięku przy włączaniu //brick'a// robota //Ewka//.
* Drugim mogącym budzić podejrzenia objawem było dziwnie zachowanie ikonki baterii //brick'a//, to znaczy kiedy robot był w stanie //idle// stan baterii wynosił 100%, natomiast kiedy robot wykonywał algorytmy poziom baterii malał do poziomu 40% - 50%, a następnie ustalił się na poziomie 100% po ponownym przejściu do stanu //idle//.
* Problemowym predykatem okazał się dla naszego zespołu predykat //nxt_goal//, który miał tworzyć nowy wątek i kierować robotem, jednak nie zawsze predykat ten spełniał swoje przeznaczenie - nie wiem co było tego przyczyną.
* Niestety po raz kolejny zawiodło połączenie Blutetooth pomiędzy komputerem, a naszym robotem. Na szczęście tym razem udało nam się zaprogramować i wykonać Algorytm1 oraz Algorytm2 z laboratorium. Kiedy przystąpiliśmy do implementacji i częściowego testowania poszczególnych predykatów, połączenie z //Ewką// przestało istnieć. Wykorzystywaliśmy doświadczenie zdobyte na poprzednim laboratorium, ale nie udało nam się ponownie połączyć z robotem - nie pomagał restart komputera, restart robota, ponowne sparowanie urządzeń oraz usuwanie skojarzonych wcześniej urządzeń.
=== Wnioski ===
* Jest nam bardzo przykro, że z powodu problemów z połączeniem Bluetooth - a mimo wielkich chęci - nie wykonaliśmy wszystkich zadań z opisywanych zajęć.
===== Uwagi dotyczące funkcjonalności PLNXT ====
* PLNXT często dziwnie zachowuje się, gdy chcemy zakończyć działanie programu. Nie pomaga wywołanie predykatów //stop.// oraz //halt.// - ostatecznym rozwiązaniem jest 'zabicie' procesu.
* Przy wykonywaniu predykatu //nxt_open.// PLNXT często zawieszał się.