Sprawozdanie z laboratorium nr 3

  • Robot: Ewka
  • Data wykonania: 19.05.2010 godz. 9:30
  • Autorzy: Jakub Gorzała, Oskar Jankiewicz, Łukasz Kowalski

Budowa robota

Udostępniony został nam w pełni rozbudowany robot Ewka, uzbrojony we wszystkie dostępne sensory - TriBot.

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

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.

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.

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ą.

pl/dydaktyka/piw/2010/sprawozdania/piw20100519-09b.txt · ostatnio zmienione: 2019/06/27 15:50 (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