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ść.


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.

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 w takiej formie został przekazany następnej grupie laboratoryjnej.

Program w Prologu

Nasza realizacja algorytmu magazyniera:

:- 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).

Plik programu: gb-magazynier2.pl

Problemy

Czasami Jasio robił się niegrzeczny:

  • Wykonywał przypadkowe ruchy
  • Nie wykonywał wgranego programu
  • Nie dał się sterować z konsoli

Nie do końca było dla nas jasne czy jest to wina interface'u komunikacyjnego czy może raczej samego programu swipl. Powodem mogło być niezakończenie poprzedniego programu. Ponowne uruchomienie powłoki swipl rozwiązało problem.

Problem ten (miejscami wybitnie irytujący, zwłaszcza gdy dobry program nie raczył poprawnie funkcjonować) kosztował nas również sporo czasu.

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. Dzięki formie programowej konstrukcji algorytmów sterowania robotem, możliwe jest rozwiązywanie dużo bardziej złożonych problemów. Dodatkowo prolog jako język programowania wprowadza zdecydowanie krótszą, a zarazem bardziej logiczną składnię co w konsekwencji obfituje w znaczący wzrost efektywności robota.

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.

pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090114-08d.txt · ostatnio zmienione: 2017/07/17 08:08 (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