Sprawozdanie z laboratorium (sterowanie wieloma robotami w PLNXT)
Robot: Kajtek
Data wykonania: 9.06.2010 godz. 17:00
Autorzy: Gabriela Pasek, Michał Paszko, Leszek Piątek
Początek
Tym razem w nasze ręce trafił robot Kajtek. Już po pierwszym uruchomieniu brick'a zauważyliśmy wadliwe działanie - kilka linii poziomych wyświetlacza w ogóle nie wyświetlało się. Co więcej brick nie wydawał jakichkolwiek sygnałów dźwiękowych - zarówno podczas uruchomienia jak, poruszania po menu jak i po posłużeniu się predykatem nxt_sound.
Mimo początkowych rozczarować co do poprawnego działania Kajtka rozpoczęliśmy pracę. Na początku jak zawsze przeanalizowaliśmy zadanie postawione przed nami w tym laboratorium.
Kod programów
:- consult('plnxt.pl').
%17 czarne, 40czerwone ,43 biale, szare 35
%18,37,41,36
%36, 53, 64, 57
start :-
nxt_light_LED(activate),
nxt_goal(kajtek, idz).
idz:-
nxt_go(200),
trigger_create(_,check_red,[nxt_stop, nxt_light_LED(passivate),trigger_killall, nxt_stop]),
trigger_create(_,check_line,[obrot]).
obrot :-
trigger_killall,
nxt_stop,
Angle is 120 + random(120),
nxt_rotate(200,Angle),
idz.
check_line :-
nxt_light(Value, force),write(Value),nl,
Value < 39.
check_red :-
nxt_light(Value, force),write(Value),nl,
Value < 55,
Value > 42,
sleep(1),
nxt_light(Value2, force),write(Value2),nl,
Value2 < 55,
Value2 > 42.
stop :-
trigger_killall,
nxt_stop.
Spakowane pliki źródłowe: ppp_komunikacja_lab6.rar
Spostrzeżenia, napotkane problemy, wnioski
Napotkane problemy
Głownym problemem, który napotkaliśmy podczas laboratorium był brak poprawnego odwzorowania koloru czerwonego poprzez czujnik Kajtka, a dokładnie rozróżnienia koloru białego i czerwonego. Wartości te dodatkowo co chwila zmieniały się, dlatego spróbowaliśmy zamiast koloru czerwonego użyć niebieskiej karty płatniczej.
Z racji 'niedomagania' Kajtka w wydawaniu jakichkolwiek sygnałów dźwiękowych, dlatego też nasz algorytm zakłada, iż jeżeli robot znajdzie odpowiedni element (w naszym przypadku niebieska karta płatnicza) wyłącza czujnik światła.
Spostrzeżenia
Kilka linii poziomych na wyświetlaczu brick'a Kajtka w ogóle nie wyświetlało się.
Brak wydawanych sygnałów dźwiękowych - zarówno podczas włączania i poruszana się po menu brick'a, jak i podczas zastosowania predykatu nxt_sound (tę wadę działania stwierdziliśmy dopiero w połowie laboratorium, więc wyszliśmy z założenia, że nie ma sensu już wymieniać robota na inny).
Brak dokumentacji PLNXT umożliwiającej łatwe znalezienie funkcji potrzebnych do komunikacji z robotami spowodował, że nie udało się nam zrealizować głównego tematu laboratorium czyli komunikacji między robotami
Wnioski
Niewielka różnica odczytów pomiędzy kolorem czerwonym a białym uniemożliwia skalibrowania zachowania robota. Dopiero kalibracja na kolor niebieski pozwala na swobodne rozróżnianie kolorów i implementację działającego algorytmu więźnia.
Przydało by się jakieś krótkie wprowadzenie do komunikacji pomiędzy robotami, albo chociaż jakiś odnośnik z wiki do odpowiedniej dokumentacji.
Uwagi dotyczące funkcjonalności PLNXT
Po raz pierwszy nie napotkaliśmy trudności z wywołaniem i działaniem predykatów środowiska PLNXT, natomiast problemy stały po stronie komunikacji poprzez Bluetooth, dlatego często musieliśmy resetować robota i ponownie 'sparować' połączenie.
Być może warto uzupełnić stronę laboratorium o bezpośredni opis komunikacji pomiędzy robotami z użyciem predykatów PLNXT.