|
|
pl:dydaktyka:piw:2010:sprawozdania:piw20100512-09d [2010/05/17 20:13] piw10 |
pl:dydaktyka:piw:2010:sprawozdania:piw20100512-09d [2019/06/27 15:50] |
====== Sprawozdanie 2 ====== | |
| |
| |
**Robot:** Agatka\\ | |
**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ę | |
<code> :- use_module(lib/nxt_actions_serial).</code> | |
| |
a następnie w poniższej linii wstawilismy nr naszego robota - 5. Ten sam numer wstawiliśmy w trzech analogicznych liniach. | |
<code>nxt_goal_definition(my_robot,'/dev/rfcomm5',bt,off,on_demand,17.5,11,'C','B','A',false,'S1','S2','S3','S4').</code> | |
| |
===== Testowanie połączenia ===== | |
Aby dokonać połączenia z robotem w powłoce SWIPL wpisaliśmy poniższy kod: | |
<code>$ pl | |
?- [plnxt]. | |
?- nxt_open.</code> | |
| |
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: | |
<code>:- 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. </code> | |
| |
Działanie naszego robota prezentuje nakręcony przez nas filmik: | |
[[http://www.youtube.com/watch?v=iu3KdBIg-Pk|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: | |
<code>:- 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. | |
</code> | |
| |
| |
===== 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.\\ | |
| |