Both sides previous revision
Poprzednia wersja
|
|
pl:mindstorms:mindstorms_lab [2008/04/23 10:00] wojnicki dodane BT |
pl:mindstorms:mindstorms_lab [2019/06/27 15:50] (aktualna) |
| ====== 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 |
| * przetestować połączenie BT |
| |
| ===== 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: |
| |