Sprawozdanie 2

Robot: Ewka
Data wykonania: 12.05.2010 godz. 9:30
Autorzy: Martyka Łukasz, Stereńczak Agata, Szczurek Joanna

Budowa robota

Po przyjściu na zajęcia otrzymaliśmy już zmontowanego robota. Jedyne co dobudowaliśmy to ramię do czujnika ultradźwięków.

Konfiguracja środowiska PLNXT

Postępując zgodnie z instrukcją do laboratorium w pliku plnxt.pl odkomentowaliśmy linię

 :- use_module(lib/nxt_actions_serial).

a następnie w poniższej linii wstawilismy nr naszego robota - 5. Ten sam numer wstawiliśmy w trzech analogicznych liniach.

nxt_goal_definition(my_robot,'/dev/rfcomm5',bt,off,on_demand,17.5,11,'C','B','A',false,'S1','S2','S3','S4').

Testowanie połączenia

Aby dokonać połączenia z robotem w powłoce SWIPL wpisaliśmy poniższy kod:

$ pl
?- [plnxt].
?- nxt_open.

Połączenie poprzez Bluetooth sprawiło nam wiele problemów. W sytuacji gdy Brick przechodził w stan uśpienia następowało przerwanie połączenia, którego ponowne nawiązanie wymagało usuwania ustawień z komputera. Zabiegi te musiały być często powtarzane i nie zawsze przynosiły pożądany skutek.
Odkrytym przez nas sposobem, który umożliwiał skuteczne połączenie było usunięcie połączeń z komputera a następnie nawiązanie połączenia od strony Brick-a.

Praca w powłoce SWIPL

Pracę rozpoczęliśmy od przetestowanie komend podanych w treści laboratorium.

Zadanie 1

Robot porusza się dowolnie wewnątrz obszaru ograniczonego czarną linią (można wykorzystać planszę testową). Nie może poza niego wyjechać! Gdy najedzie na czarną linię, powinien zawrócić – niekoniecznie o 180 stopni, żeby było ciekawiej.

Kod programu:

:- consult('plnxt.pl').
 
start :-
	nxt_open,
	nxt_light_LED(activate, force),
	trigger_create(_,check_light,change_angle),
	nxt_go(300).
 
change_angle :-
	Angle is 100 + random(60), 
	nxt_rotate(360, Angle, force), start.

check_light :-
	nxt_light(Light,force),
	Light < 44.

:- start. 

Działanie naszego robota prezentuje nakręcony przez nas filmik: zadanie 1 na robocie Ewka

Zadanie 2

Robot podąża wzdłuż czarnej linii (można wykorzystać planszę testową). Nie może jej zgubić! Gdy napotka przeszkodę, powinien się zatrzymać i poinformować o problemie sygnałem dźwiękowym. Po usunięciu przeszkody robot powinien kontynuować jazdę.

Kod:

:- consult('plnxt.pl').
 
start :-
	nxt_open,
	nxt_light_LED(activate, force),
	trigger_create(_,check_light,change_angle),
	nxt_go(400).
 
change_angle :-
	Angle is 3, 
	nxt_rotate(140, Angle, force), start.

check_light :-
	nxt_light(Light,force),
	Light > 44.

:- start.
 

Nasz robot jeździł po czarnej linii, kiedy z niej zjeżdżał zmieniał kąt jazdy o 3 stopnie. Jednak jego działanie nie było w pełni poprawne. Na dodanie sygnału dźwiękowego zabrakł nam czasu.

Wnioski

Uważamy, że praca w powłoce PLNXT była dużo bardziej przyjazna, niż praca w graficznym oprogramowaniu LEGO.
Plusem był również fakt, iż komendy można testować na robocie wpisując od razu z konsoli, bez konieczności przesyłania pliku do Brick-a.
Gdyby nie problemy z połączeniem Bluetooth praca w powłoce PLNXT byłaby o wiele bardziej owocna i przyjemna.
Proponowanym przez nas ulepszeniem powłoki PLNXT jest to, aby w sytuacji przerwania połączenia Bluetooth, naprawa połączenia dokonywana była w bardziej zautomatyzowany sposób.

Spakowane pliki

pl/dydaktyka/piw/2010/sprawozdania/piw20100512-09d.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