====== 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ę.