|
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11c [2009/01/26 10:09] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11c [2019/06/27 15:50] |
=== 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. | |
| |
<code prolog> | |
:-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. | |
</code> | |
| |
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. | |
| |
---- | |
| |
=== 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. | |
| |
---- | |
| |
=== 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. | |
| |