Udostępniony został nam w pełni rozbudowany robot Ewka, uzbrojony we wszystkie dostępne sensory - TriBot.
Podczas pracy na laboratorium ponownie pojawił się problem z komunikacją z robotem poprzez bluetooth. Początkowo udało się nawiązać połączenie z robotem, lecz podczas próby wykonania pierwszego algorytmu komunikacja została zerwana i ponowne próby połączenia nie dawały efektu. Po upływie ponad połowy czasu zajęć udało się nawiązać połączenie - kluczem do sukcesu była zmiana nazwy urządzenia w preferencjach bluetooth'a.
Przykład 1
Pierwszy program realizuje sekwencje ruchu robota po kwadracie. Program jest uruchamiany w jednym wątku i stosowana jest w nim rekurencja.
:- consult('plnxt.pl'). start :- nxt_open, rectangle_loop. rectangle_loop :- nxt_go_cm(350,40), nxt_rotate(350,90), rectangle_loop.
Przykład 2
Drugi przykład realizuje te same działania co przykład pierwszy, lecz umożliwia działanie wielowątkowe. Przetestować to można uruchamiając algorytm przy pomocy start, co powoduje uruchomienie sie programu w tle, a my mamy dostęp do konsoli. Użycie predykatu stop powoduje zatrzymanie się robota.
:- consult('plnxt.pl'). start :- nxt_open, nxt_goal(ewka, rectangle_loop). rectangle_loop :- nxt_go_cm(350,40), nxt_rotate(350,90), rectangle_loop. stop :- trigger_killall, nxt_stop, nxt_close.
Przykład algorytmu
Przykład rozbudowanego algorytmu wykorzystującego sensor dźwięku. Robot zatrzymuje się po klaśnięciu. Po ponownym klaśnięciu wznawia ruch. Predykat stop zadany z konsoli powoduje zatrzymanie się robota i zamknięcie połączenia.
:- consult('plnxt.pl'). start :- nxt_open, nxt_goal(ewka, go_on_buddy). go_on_buddy :- nxt_go(200), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,wait_a_second_buddy). wait_a_second_buddy :- nxt_stop, sleep(1), trigger_create(_,clap,go_on_buddy). % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 15. stop :- trigger_killall, nxt_stop, nxt_close.
Przedstawione przykłady są kopiami kodu ze strony laboratorium. Brak czasu, spowodowany problemami z połączeniem bluetooth uniemożliwił nam podjęcie pracy nad własnymi algorytmami. Mamy nadzieje, że na następnych laboratoriach nie pojawi się już problem z komunikacja i będziemy mogli cały czas wykorzystać na tworzenie algorytmów.
Środowisko PLNXT umożliwia dużo większą kontrole nad robotem niż proste oprogramowanie udostępniane przez firmę LEGO. Algorytmy budowane przy pomocy języka proglog mogą być bardziej skomplikowane i wykorzystywać w pełni możliwości robota.
Jako wniosek nasuwa się propozycja uwzględnienia w opisie laboratorium podpowiedzi dotyczącej problemów z komunikacja. Rozwiązaniem tego problemu może okazać się zmiana nazwy urządzenia bluetooth w preferencjach z domyślnej - robo0-2 na dowolną inną.