Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-09b [2010/05/25 22:44]
piw10 utworzono
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-09b [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== Sprawozdanie z laboratorium nr ======+====== Sprawozdanie z laboratorium nr ======
   * Robot: **Ewka**   * Robot: **Ewka**
   * Data wykonania: **19.05.2010 godz. 9:30**   * Data wykonania: **19.05.2010 godz. 9:30**
Linia 7: Linia 7:
 ===== 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 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 =====
-Jako, że nie udało nam się porozumieć z robotem trudno udokumentować nasze dokonania programistyczne... Sama propozycja implementacji algorytmu ​jest łudząco podobna do tej z przykładu nr 2 zaprezentowanego na stronie laboratorium:​+ 
 +**Przykład 1** 
 + 
 +Pierwszy program realizuje sekwencje ruchu robota po kwadracieProgram ​jest uruchamiany w jednym wątku i stosowana jest w nim rekurencja. 
 <​code>​ <​code>​
-:- consult('​sciezka_do_plnxt.pl').+:- consult('​plnxt.pl').
    
 start :- start :-
  nxt_open,  nxt_open,
- trigger_create(_,​check_color,[get_angle(Angle),​nxt_rotate(250,Angle,​force)]), + rectangle_loop. 
- nxt_go(250).+  
 +rectangle_loop :- 
 + nxt_go_cm(350,40), 
 + nxt_rotate(350,90), 
 + rectangle_loop. 
 +</​code>​
  
-get_angle(Angle) :- +**Przykład 2**
-        Angle is 120 + random(120).+
  
-check_color ​:- +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. 
- nxt_light(Valueforce), + 
- Value < X// gdzie X jest arbitralnie dobranym progiem dla potraktowania koloru jako czarny ​wartość bliska 0.+<​code>​ 
 +:- consult('​plnxt.pl'​). 
 +  
 +start :- 
 + nxt_open, 
 + nxt_goal(ewkarectangle_loop). 
 +  
 +rectangle_loop :- 
 + nxt_go_cm(350,​40), 
 + nxt_rotate(350,​90),​ 
 + rectangle_loop. 
 +  
 +stop :- 
 + trigger_killall,​ 
 + nxt_stop,​ 
 + nxt_close.
 </​code>​ </​code>​
-Implementacji drugiego ​algorytmu ​nie podejmowaliśmy się bez możliwości wypróbowania.+ 
 +**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 =====
-Implementacja funkcjonalności robota za pomocą api PLNXT wydaje się dalece bardziej interesująca, niż korzystanie z graficznego edytora ​LEGO. Przede wszystkim jest to narzędzie, które pozwala wreszcie poczuć kontrolę nad robotem ​wykorzystać mechanizm dedukcyjny prologu ​celu nadania maszynie inteligencji. Samo laboratorium stanowiło próbę praktycznego wykorzystania umiejętności programowania ​logice.+Ś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 ​wykorzystywać w pełni możliwości robota. 
 + 
 +Jako wniosek nasuwa się propozycja uwzględnienia ​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ą.
  
-===== Uwagi odnośnie PLNXT ===== 
-Uważamy, że projekt podąża w odpowiednim kierunku. Dość dobra dokumentacja,​ intuicyjność nazw funkcji i łatwość ich wykorzystania sprawiają, że w środowisku pracuję się łątwo i przyjemnie, o ile w ogóle jesteśmy upoważnieni by wystawiać takie opinie, nie mając okazji przetestowania efektów naszej pracy w praktyce ;-) 
pl/dydaktyka/piw/2010/sprawozdania/piw20100519-09b.1274820247.txt.gz · ostatnio zmienione: 2019/06/27 15:54 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0