Laboratorium 5


Prezentacja robota:

Na ostatnich zajęciach współpracowaliśmy z Bolkiem. Wyglądał on podobnie jak jego poprzednicy, różnił się tylko tym że dodatkowo miał wbudowany czujnik światła, dzięki któremu wiedział po jakim kolorze się porusza no i był w sumie trochę bardziej przerażający 8-). Dodatkowo mieliśmy dostępną planszę na której była przestrzeń ograniczona czarną linią oraz kilka innych elementów, między innymi czerwone koło oznaczające klucz do wyjścia z zamkniętego obszaru.

Zdjęcia Bolka:


Projektowanie algorytmów:

Na dzisiejszych zajęciach po raz drugi projektowaliśmy algorytmy przy wykorzystaniu interfejsu programistycznego PLNXT. Tym razem do labolatorium dołączona była dodatkowa instrukcja o triggerach i timerach, przy wykorzystaniu których można pisać o algorytmy dużo bardziej zaawansowane niż na poprzednich zajęciach. W tym tygodniu nie mieliśmy żadnych problemów jeśli chodzi o połączenie i komunikację z Bolkiem więc od razu wzięliśmy się za pisanie algorytmu.

Algorytm

Do wyboru mieliśmy kilka algorytmów takich jak: „więzień”, „sprzątacz”, „śledzenie linii”, „co przybyło?”. Postanowiliśmy wybrać algorytm „więzień”, który polegał na zatrzymaniu Bolka w obrębie czarnej linii do póki nie odnajdzie klucza którym było pole oznaczone kolorem czerwonym. Po zdobyciu klucza Bolek mógł zwiać z więzienia.

:-consult('plnxt.pl').
 
start:-
	nxt_open,
	nxt_light_LED(activate,force),
	go_on_buddy.
 
go_on_buddy:-
	nxt_go(200),
	trigger_create(_,linia,[nxt_stop,wycofaj]),
	trigger_create(_,klucz,[nxt_stop,wyjedz]).
 
wycofaj:-
	nxt_go_cm(-200,20),
	nxt_rotate(200,90),
	go_on_buddy.
 
wyjedz:-
	nxt_go_cm(900, 100).
 
linia:-	
	nxt_light(Value,force),
	Value<30.
 
klucz:-
	nxt_light(Value,force),
	Value>55,
	Value<60.

Plik algorytmu: wiezien.pl


Integracja i testowanie:

Po stworzeniu algorytmów rozpoczęliśmy ich testowanie. Najpierw jednak postanowiliśmy przetestować czujniki jakie Bolek posiadał. Czujnik ultradźwiękowy spisywał się znakomicie, lecz jeśli chodzi o czujnik światła to z tym mieliśmy niestety nie małe problemy.


Problemy:

  • Przy testowaniu czujnika światła mieliśmy dziwny problem. Czujnik się uruchamiał co sygnalizował zapaleniem diody, natomiast nie chciał nam rozpoznawać kolorów. Czasami czujnik wykrywał kolor który chcieliśmy a czasami po prostu tak jak by nie reagował na żaden z kolorów. Problemu tego tak naprawdę nie udało nam się rozwiązać.

Wnioski:

  • Przy wykorzystaniu nowo poznanych poleceń z API PLNXT można tworzyć o wiele bardziej zaawansowane algorytmy w których można wprowadzić ograniczenia czasowe oraz bardziej złożone operacje przy wykorzystywaniu triggerów.
  • Dokumentacja wymaga dopracowania pod względem opisu podstawowych czujników. Znalezienie interesującego przedziału koloru w czujniku światła było bardzo trudne.

Propozycje rozszerzenia wiki:

  • Proponujemy wzbogacenie wiki o lepszy opis do niektórych funkcji z API PLNXT zwłaszcza tych dotyczących triggerów i wykorzystania czujników oraz dodanie przykładów wykorzystania tych funkcji w różnego rodzaju algorytmach.
  • Na pewno przydał by się dokładny opis wartości które reprezentują dany kolor w funkcji nxt_light/2. Jest to całkowicie nieintuicyjne i nie wiadomo nawet w jakich przedziałach dany kolor się znajduje. Przeprowadzane w tym kierunku doświadczenia są bardzo czasochłonne.
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-11c.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