Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-09b [2010/05/25 22:57] piw10 |
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-09b [2019/06/27 15:50] (aktualna) |
===== Budowa robota ===== | ===== Budowa robota ===== |
Udostępniony został nam w pełni rozbudowany robot Ewka, uzbrojony we wszystkie dostępne sensory - TriBot. | Udostępniony został nam w pełni rozbudowany robot Ewka, uzbrojony we wszystkie dostępne sensory - TriBot. |
| |
| |
===== Konfiguracja środowiska pracy ===== | ===== Konfiguracja środowiska pracy ===== |
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 około połowy zajęć udało się nawiązać połączenie - kluczem do sukcesu była zmiana nazwy urządzenia w preferencjach bluetooth'a. | 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. |
| |
| |
===== Implementacja algorytmów ===== | ===== Implementacja algorytmów ===== |
| |
| **Przykład 1** |
| |
| Pierwszy program realizuje sekwencje ruchu robota po kwadracie. Program jest uruchamiany w jednym wątku i stosowana jest w nim rekurencja. |
| |
| <code> |
| :- consult('plnxt.pl'). |
| |
| start :- |
| nxt_open, |
| rectangle_loop. |
| |
| rectangle_loop :- |
| nxt_go_cm(350,40), |
| nxt_rotate(350,90), |
| rectangle_loop. |
| </code> |
| |
| **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. |
| |
| <code> |
| :- 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. |
| </code> |
| |
| **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. |
| |
| <code> |
| :- 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. |
| </code> |
| |
| |
| 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. |
| |
===== Spostrzeżenia i wnioski ===== | ===== Spostrzeżenia i wnioski ===== |
Ś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. | Ś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. |
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 :) | |
Jako wniosek nasuwa się również 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ą. | 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ą. |
| |