=== 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:** {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:bolo_1.jpg|}}{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:bolo_2.jpg|}}{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:bolo3.jpg|}} ---- === 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: {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008: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.