Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17c [2010/05/22 18:27] piw10 |
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17c [2010/05/24 08:16] piw10 |
---- | ---- |
| |
| ==== Kod programów ==== |
| |
| === Algorytm1 === |
| |
| <code prolog> |
| :- 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. |
| </code> |
| |
| === Algorytm2 === |
| |
| <code prolog> |
| :- 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. |
| |
| </code> |
| |
| Spakowane pliki: {{:pl:dydaktyka:piw:2010:sprawozdania:pasek_paszko_piatek_lego_lab3.rar|}} |
===== Spostrzeżenia, napotkane problemy, wnioski ===== | ===== 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//. | * 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ę. |