To jest stara wersja strony!


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

  • 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:

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

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.

pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090114-08d.1232456195.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (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