|
|
pl:mindstorms:mindstorms_lab [2007/12/17 18:40] wojnicki |
pl:mindstorms:mindstorms_lab [2019/06/27 15:50] |
====== Laboratorium LEGO Mindstorms ====== | |
Cele Lab: | |
* Zapoznanie się z technologią Mindstorms | |
* Programowanie podzespołów robotów przy pomocy istniejących metod i narzędzi | |
* Przygotowanie do rozwijania w oparciu o Mindstorms mechanizmów projektowania logiki sterujących dla robotów, z wykorzystaniem wizualnych metod reprezentacji wiedzy i języka Prolog | |
| |
Środki: | |
* zestawy Mindstorms NXT | |
* oprogramowanie LEGO dostarczone z w.w. | |
* software opensource, w szczególności: [[http://bricxcc.sourceforge.net/nbc/|NBC]], [[http://bricxcc.sourceforge.net/|BrixCC]], [[http://nxtpp.sourceforge.net/|NXT++]], [[http://lejos.sourceforge.net/|LeJOS]] | |
| |
FIXME | |
--- //[[gjn@agh.edu.pl|Grzegorz J. Nalepa]] 2007/11/29 13:27// | |
| |
====== Zaliczenie ====== | |
Uwagi dla JSI 2007 | |
* w czasie 1. lab należy pokazać co się udalo zrobić | |
* o ile grupa narysowala jakiś ciekawy alg. sterujący w środowisku LEGO należy go zachować (np. wyslać sobie mailem) | |
* na 2. lab: zademonstrować co udalo się zrobić | |
* po 2. lab należy zachować swoje pliki z algorytmami i wyslac emailem | |
* przygotować krótki opis/sprawozdanie i wyslać do prowadzącego emailem, w formacie TXT, szkielet: | |
* JSI2007, imiona, nazwiska, data | |
* co udalo się zrobić | |
* krótki opis opracowanych zalączonych algorytmów (1-2 akapity na każdy) | |
* sugestie, pomysly, życzenia, uwagi | |
* zalączyć wszystkie opracowane pliki (projekty środowiska LEGO) | |
| |
====== LAB1 ====== | |
| |
===== Opis ===== | |
Cel: | |
* Zapoznać się z elementami sprzętowymi zestawu NXT: NXTbrick, sensorami i silnikami. | |
* Zapoznać się z podstawami programowania i komunikacji w.w. przy pomocy środowiska LEGO | |
| |
Środki: | |
* sprzęt: NXTbrick, 2 silniki, 3 sensory, kable łączące, kabel USB, ew. łącze BT | |
* software: środowisko LEGO | |
| |
===== Przygotowanie ===== | |
Ważne jest przemyślane zagospodarowanie przestrzeni. | |
Każda grupa ma obok swojego stołu inny, wolny. | |
Należy mieć na tyle przestrzeni, żeby klocki nie leżały na klawiaturze, nic nie spadlo na podlogę, etc. | |
| |
Istotny jest podzial ról w zespole: należy wybrać osobę obslugującą | |
* komputer (wiki, instrukcja, email) | |
* pudelko (wyciaganie i podawanie elementów) | |
* klocki (skladanie, podlączanie elementów) | |
| |
===== Wstęp ===== | |
W zależności od sytuacji i stanu zestawu NXT, zidentyfikować: | |
* opisy //Quickstart// (**QS**) i //User Manual// (**UM**) | |
* podzespoły: | |
* Brick (komputer) - małe białe pudełko | |
* sensory x4 | |
* silniki x2 | |
* kable 2+4+1 | |
* ew. czarne pudełko //Quickstart// a w nim zestaw podstawowych elementów do silnika | |
Uwaga: przed zakończeniem zajęć należy wszystko spakować tak, jak się zastalo, więc proszę zwrócić uwagę na sposób pakowania! | |
| |
===== Podłączenie Zmysłów ===== | |
* włożyć baterie do Brick | |
* podłączyć silniki i sensory (QS:2, UM:7) __zgodnie__ z numerami portów | |
* włączyć Brick, | |
| |
===== I'm alive! ===== | |
Przetestować UI Brick. | |
* podstawy, QS:3 | |
* uruchomić testowe programy UM:14--17 ("Try Me") | |
* pełny opis UI w UM:20--21 | |
* oglądnąć dane ze zmysłów przez "View" | |
| |
| |
===== Podłączenie do komputera ===== | |
* uruchomić aplikację LEGO | |
* podłączyć Brick przez USB do komputera | |
* utworzyć nowy projekt | |
* nawiązać połączenie | |
| |
===== Programowanie ===== | |
* skonstruować trywialny program składający się z 2 elementów w sekwencji sensor/motor | |
* przesłać program do Brick i przetestować | |
* powyższe 2 kroki powtórzyć dla kilku sensorów | |
| |
===== Logika ===== | |
Użycie podstawowych konstrukcji sterujących (np. warunkowych) do budowania trywialnych miniprogramów. | |
* zaprogramować algorytmy typu: jeżeli jakieś zdarzenie sensoryczne, wtedy, jeżeli inne coś innego, etc. | |
| |
===== Koniec ===== | |
Po zakończeniu laboratorium a __przed__ wyjściem z sali należy: | |
* wyłączyć Brick i odłączyć USB | |
* wylogować się | |
* rozłączyć elementy | |
* schować brick, silniki i sensory do pudełek | |
| |
| |
====== LAB2 ====== | |
Cel: budowa prostych algorytmów sterowania w środowisku LEGO | |
| |
Środki: Brick ze zmysłami, ew. gotowy mini/robot + software LEGO | |
| |
===== Opis ===== | |
Przebieg lab: | |
- budowa prostego robota mobilnego, równolegle z | |
- projektowaniem prostego algorytmu, następnie | |
- integracja i testowanie, | |
- ewaluacja i wnioski. | |
Podział zespołu: | |
* budowniczy robota 1,2 osoby, | |
* tworzenie algorytmu 1,2 osoby | |
__UWAGA__: | |
* należy używać wyłącznie niezbędnych klocków, | |
* należy wyciągać klocki stopniowo, | |
* wszystkie nieużyte klocki należy schować do zamykanego pojemnika. | |
| |
===== Budowa robota ===== | |
(Zespół budowniczy) | |
* Należy zbudować trywialnego robota mobilnego opisanego w **QS**. | |
* Należy znaleźć odpowiedni woreczek z elementami - podpisany //QS// | |
* W przypadku braku w.w, należy je skompletować z pomocą prowadzącego i włożyć do woreczka. | |
* Dołączyć z boku lub z przodu Brick wybrany sensor (np. sonar), do tego mogą być potrzebne dodatkowe klocki z innego woreczka | |
| |
===== Tworzenie algorytmu ===== | |
(Zespół sterowania) | |
* stworzyć proste (1-2) alg. sterowania, | |
* założyć użycie 1 sensora | |
* zapisać pliki projektów | |
| |
===== Algorytmy ===== | |
| |
==== Patrol ==== | |
* robot jeździ po zadanej trajektorii (kwadrat, koło, trójkąt) | |
* powtarza przejazd N razy | |
* robot zatrzymuje się po napotkaniu przeszkody (zbliżenie, dotyk) | |
* odtwarzany jest sygnał dźwiękowy | |
* robot cofa | |
| |
==== Uniki ==== | |
* robot jedzie prosto, ew. po trajektorii | |
* po zbliżeniu do przeszkody (sonar) wykonuje unik, np. obrót w prawo | |
* przy uniku odtwarzany jest dźwięk | |
| |
==== Śledzenie ==== | |
* robot podąża za źródłem światła, dźwięku | |
| |
==== Sterowanie ==== | |
* sterowanie robotem za pomocą sygnałów dźwiękowych, klaśnięcie, ew dotykowych? | |
* np. 1 klaśnięcie - przód, 2 - tył | |
| |
==== Komunikacja ==== | |
* proszę przeanalizować możliwość komunikacji między robotami przez Bluetooth | |
| |
===== Integracja ===== | |
Oba zespoły testują stworzony algorytm na zbudowanym robocie. | |
| |
Proszę pamiętać, że po wgraniu do robota programu sterującego, można odlączyć kabel USB i puścić go na podlodze. | |
| |
===== Zakończenie ===== | |
* Rozmontować robota, wkladając wszystkie części (poza kablami, silnikami,sonsorem i Brick), do jednego większego pojemnika, woreczka. __UWAGA__: należy to robić powoli i ostrożnie - polamanie klocków przy rozmontowaniu jest latwiejsze niż przy montażu. :-( | |
* wyslać emailem sprawozdanie zawierające: pliki stworzonych algorytmów, kilkuzdaniowe opisy algorytmów, pomysly na inne algorytmy, zdjęcia zrobionych robotów, etc. | |
| |
====== LAB3 ====== | |
Cel: zaawansowane programowanie w LEGO | |
| |
Środki: | |
| |
===== Opis ===== | |
Przebieg lab: | |
- zapoznanie się z budową robota UG (robot zożony, instrukcja budowy znajduje sie w Users Guide) | |
- uruchomienie przygototowanego programu ''Robo3'' //na sucho// | |
- unieś robota tak aby nie dotykal kolami podloża, | |
- uruchom program -- kola zaczną się obracać | |
- aktywuj sensor dotyku -- kola powinny się zatrzymać | |
- aktywuj sensor dźwieku (gwizdnij, klaśnij, dmuchnij...) -- kola zaczną sie obracać, szczęki zostaną rozwarte | |
- uruchomienie ''Robo3'' | |
- ustaw robota na plaskiej powierzchni na przeciwko koszyka z kulką | |
- uruchom program ''Robo3'' | |
- co zrobil robot? | |
- projektowanie algorytmu sterowania, | |
- integracja i testowanie, | |
- ewaluacja i wnioski. | |
| |
===== Tworzenie algorytmu ===== | |
* stworzyć algorytm sterowania, | |
* założyć użycie wielu sensorów | |
* zapisać pliki projektów | |
| |
===== Algorytmy ===== | |
| |
Poniżej znajdują się przykladowe algorytmy. Zaimplementuj przynajmniej jeden z nich. Oczywiście można zaproponować swój wlasny algorytm. | |
| |
| |
==== Magazynier ==== | |
* podnieś kulkę (użyj sensora dotyku) | |
* wykonaj zwrot o 180 stopni | |
* przenieś kulkę pod ścianę (użyj sonaru do określenia co jest ścianą) | |
* wylacznik awaryjny: klaśniecie | |
| |
| |
==== Magazynier 2 ==== | |
* podnieś kulkę (użyj sensora dotyku) | |
* wykonaj zwrot o 180 stopni | |
* przenieś kulkę w miejsce oznaczone innym kolorem (np. biala kartka), wykorzystaj sensor światla | |
* wylacznik awaryjny: klaśniecie | |
| |
| |
==== Zlodziej ==== | |
* zlap kulke gdy znajdzie się z odpowiedniej odleglości od szczęk | |
* cofnij | |
* wykonaj zwrot np. o 180 stopni | |
* jedź tak dlugo az ktoś krzyknie: 'Stać, policja!' ;-) | |
| |
==== Zlodziej 2 ==== | |
* tak jak Zlodziej, ale przyspiesza i/lub zaczyna kluczyć na wiadomośc o policji | |
| |
===== Integracja ===== | |
Algorytm należy przetestować na robocie UG | |
| |
Proszę pamiętać, że po wgraniu do robota programu sterującego, można odlączyć kabel USB i puścić go na podlodze. | |
| |
===== Zakończenie ===== | |
* Proszę **nie rozmotowywać robota** | |
* wyslać emailem sprawozdanie zawierające: pliki stworzonych algorytmów, kilkuzdaniowe opisy algorytmów, pomysly na inne algorytmy, zdjęcia zrobionych robotów, etc. | |
| |
====== LAB ====== | |
Cel: programowanie NXT przy pomocy NBC, Bricxcc | |
| |
Środki: | |
| |
====== LAB ====== | |
Cel: | |
| |
Środki: | |
| |