|
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-08d [2009/01/20 13:58] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-08d [2019/06/27 15:50] |
====== Cel ====== | |
Celem była konstrukcja robota wg instrukcji oraz zapoznanie się z możliwościami sterowania robotem za pomocą Prologu z użyciem PLNXT. | |
===== Konstrukcja ===== | |
Postanowiliśmy zbudować robota TriBot zamiast modelu z instrukcji QuickStart, aby nadać robotowi większą funkcjonalność. | |
| |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:dsc00149n.jpg|}} | |
---- | |
| |
Jednakże kosztowało nas to zdecydowanie za dużo czasu. W związku z tym nie mieliśmy okazji by wypróbować pełne możliwości konstrukcji. | |
Wydaje się, iż ze względu na rozbudowę chwytaka oraz użycie sprytnej dźwigni zwiększającej czułość sensora dotyku(widać ją powyżej na zdjęciu), | |
znacząco poprawiają się możliwości motoryczne robota. Wskazanym jest działanie przynajmniej na tej formie maszyny. | |
Forma poprzednia pod względem funkcjonalności prezentuje się zdecydowanie bardziej ubogo... pomijając już walory estetyczne co | |
widać poniżej na zdjęciu. | |
| |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:dsc00148.jpg|}} | |
| |
===== Algorytm ===== | |
| |
Algorytm ze względu na ilość czasu poświęconą na konstrukcję ograniczył się jedynie do podstawowego zadania magazyniera: | |
| |
* Jedź prosto na kulkę | |
* Dotknąwszy kulkę zatrzymaj się | |
* Zewrzyj szczęki | |
* Cofnij | |
* Zawróć | |
* Jedź na zadaną odległość | |
* Połóż kulkę | |
| |
====== Wykonanie ====== | |
===== Budowa robota ===== | |
Nasz Jasio został wyposażony w mikrofon, czujnik dotyku oraz szczęki do chwytania kuli. Nie umieściliśmy pozostałych czujników z powodu braku czasu na testowanie. | |
Kula została osadzona na przygotowanej platformie. | |
Robot został przekazany następnej grupie laboratoryjnej. | |
| |
===== Program w Prologu ===== | |
Nasza realizacja algorytmu magazyniera: | |
<code prolog> | |
:- consult('../plnxt'). | |
| |
check_ball :- | |
nxt_touch(Value,force), | |
Value = 1. | |
| |
check_sound :- | |
nxt_sound(Value,force), | |
Value > 50. | |
| |
ball :- | |
nxt_stop, % Stajemy przy kulce | |
nxt_pincer(close), % Lapiemy kulke | |
nxt_go_cm(-200, 15), % Cofamy sie | |
nxt_rotate(400,180), % Odwracamy sie | |
nxt_go_cm(400, 30), % Odjezdzamy 30cm | |
nxt_pincer(open). % Puszczamy przedmiot | |
| |
start :- | |
nxt_open, | |
check_sound, % Wolamy Jasia | |
nxt_pincer(open), % Rozwieramy kleszcze | |
nxt_go(400), % Jedziemy, az napotkamy kulke | |
trigger_create(_,check_ball,ball). | |
</code> | |
Plik programu: {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:gb-magazynier2.pl|}} | |
===== Problemy ===== | |
Czasami Jasio robił się niegrzeczny: | |
* Wykonywał przypadkowe ruchy | |
* Nie wykonywał wgranego programu | |
* Nie dał się sterować z konsoli | |
Powodem mogło być niezakończenie poprzedniego programu. | |
Ponowne uruchomienie powłoki swipl załatwiło sprawę - Jasio znów był grzeczny. | |
===== Podsumowanie ===== | |
Prolog pozwala na programowanie robota w sposób bardziej efektywny. Najważniejszą zaletą jest modelowanie zachowania robota z użyciem reguł. Ponadto Prolog daje możliwość pełniejszej kontroli dzięki lepszemu wykorzystaniu czujników. | |
====== Propozycje ====== | |
Dobrym pomysłem byłoby organizowanie zawodów dla zainteresowanych studentów, polegających nie na budowie robotów, lecz pisaniu programów w prologu działających na konkretnym/tak samo zbudowanym robocie i spełniających zadane cele. Udział w zawodach byłby udokumentowany w życiorysie robota na aiWiki. Programy wzbogaciłyby kolekcję algorytmów dostępnych na stronie. | |
| |
| |
| |