Sprawozdanie 2

Skład zespołu

  1. Łukasz Masłowski
  2. Krzysztof Rączka
  3. Radosław Chmielarz

1. Wstęp

  • Celem laboratorium było testowanie możliwości interfejsu programistycznego PLNXT z użyciem algorytmów o małej złożoności.
  • Laboratorium polegało na zapoznaniu się z dwoma przykładowymi programami, a następnie zaimplementowaniu własnych programów sprawdzających funkcjonalność biblioteki PLNXT

2. Przykładowe programy

W czasie laboratorium posłużyliśmy się robotem, udostępnionym w ramach stanowiska przy którym pracowaliśmy.

Przy pierwszych dwóch przykładowych programach nie napotkaliśmy na żadne problemy, dopiero przy ostatnim przykładzie pojawiły się problemy z biblioteką PLNXT. Przy uruchomieniu poniższego kodu ( start. )

:- consult('../plnxt.pl').
 
start :-
	nxt_open,
	thread_create(go_on_buddy,_,[detached(true)]).
 
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.

w momencie gdy chcieliśmy zatrzymać robota otrzymaliśmy komunikaty:

?- stop.
Warning: [Thread 3] Thread running "trigger_start(nxt_is_stopped, thread_send_message(2, resume), 1)" died due to failure
 
Yes
?- Warning: [Thread 3] Thread running "trigger_start(nxt_is_stopped, thread_send_message(2, resume), 1)" died due to failure
 

Po tym błędzie nie udało się nam ponownie uruchomić przykładu. Dopiero uruchomienie na nowo powłoki pl pozwoliło dalej kontynuować prace w ramach laboratorium.

3. Nasze implementacje

W ramach tego laboratorium mieliśmy zaimplementować jeden lub więcej z podanych programów. Wybraliśmy 2 przykładowe, dzięki którym testowaliśmy bibliotekę PLNXT.

3.1 Panikarz

Opis programu

Wymagane sensory: dźwięku, dotyku. Robot przemieszcza się powoli. Po klaśnięciu zmienia kierunek i szybko ucieka przez jakiś czas (wtedy nie jest podatny na klaśnięcie), po czym uspokaja się i znowu jedzie powoli. Zatrzymuje się i zamyka połączenie po wciśnięciu sensora dotyku.

Nasz kod

start :-
	nxt_open,
	thread_create(go_on_buddy,_,[detached(true)]).
 
go_on_buddy :-
	nxt_go(300),
	trigger_create(_,clap,run_forest_run),
        trigger_create(_, touch, stop)..
 
run_forest_run :-
	nxt_stop,
	Angle is 40 + random(120),
	nxt_rotate(400,Angle),
	nxt_go_cm(700,60),
       go_on_buddy.
 
% sprawdzenie, czy sensor dotyku został naciśnięty
touch :-
        nxt_touch(Touch, force),
        Touch = 1.
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
	nxt_sound(Value,force),
	Value > 40.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

3.2 Omijanie przeszkód

Opis

Wymagane sensory: odległości, dźwięku. Robot przemieszcza się do przodu. Po napotkaniu przeszkody zatrzymuje się i próbuje ją ominąć. W fazie przemieszczania do przodu (tylko w tej fazie) robot zatrzymuje się i zamyka połączenie po klaśnięciu.

Nasz kod

:- consult('plnxt.pl').
 
start :-
	nxt_open,
	thread_create(go_on_buddy,_,[detached(true)]).
 
% podstawowy ruch robota
go_on_buddy :-
	nxt_go(400),
	trigger_create(_,clap,stop),
	trigger_create(_,obstacle,ommit).
 
% ominięcie przeszkody 
ommit :-
	nxt_stop,
	Angle is 40 + random(120),
	nxt_rotate(400,Angle),
       go_on_buddy.
 
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość.
clap :-
	nxt_sound(Value,force),
	Value > 60.
 
% sprawdzenie czy z przodu znajduje się przeszkoda
obstacle :-
	nxt_ultrasonic(Distance, force),
	Distance < 15.
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.
 

4 Podsumowanie

Podczas laboratorium kilkukrotnie zawiesiła się nam powłoka pl, przez co zmuszeni byliśmy do jej ponownego uruchomienia. Pojawiły się również problem z komunikacją z robotem, a konkretnie to jej nie było ( nie pojawiały się żadne komunikaty o błędach ). Postępując jednak w myśl podstawowej zasady informatyka: „Jeśli coś nie działa to wyłącz i włącz. ” Udało się nam uruchomić i przetestować opisane wyżej programy.

5 O co rozszerzyć laboratorium ?

  • Wszystkie programy, które mieliśmy sami zaimplementować są niemal identyczne, różnią się tylko tym w jaki sposób robot odbiera sygnały z zewnątrz. Proponujemy, aby były one nieco bardziej rozbudowane i aby nieco się między sobą różniły, dzięki temu praca na laboratorium będzie znacznie ciekawsza

6 Pliki

pl/dydaktyka/piw/2009/sprawozdania/piw20090422-15c.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