Celem pierwszego laboratorium dotyczącego LEGO Mindstorms było poznanie zestawu Mindstorms NXT. Nasz zestaw nazywał się Bolek i składał z Brick'a (komputera), czterech sensorów, 3 silników, kabli i klocków LEGO do budowy robota. Razem z zestawem poznawaliśmy najprostszą metodę programowania NXT z wykorzystaniem dostarczonego środowiska.
Zestawy dostaliśmy od razu zmontowane. Przez to ominęło nas poznawanie metod konstrukcji i możliwość poprawy robota. Przód, składający się z sensorów natężenia światła i ultradźwiękowego, oraz szczęk nie jest najlepiej przymocowany. Dlatego więc dodaliśmy wzmacniające połączenie.
Na początku laboratorium, używając funkcji Brick'a „Try Me” i „View” poznaliśmy działanie sensorów i silników. Przy przeglądzie sensorów ważne było, by podawać dobre numery portów, dzięki temu odczyty były prawidłowe. Używaliśmy sensorów natężenia światła, ultradźwiękowego do pomiaru odległości, dźwięku i dotykowego. Silniki, czyli serwomechanizmy można pozycjonować nawet z dokładnością jednego stopnia. W tej fazie laboratorium zbudowaliśmy też platformę pod piłeczkę, do późniejszego użycia.
Programowanie robota odbywało się w środowisku dostarczonym przez LEGO. Jest to bardzo proste środowisko, przyjazne dla użytkownika. Ma jednak swoje wady i do bardziej skomplikowanych zadań może nie wystarczyć. Programowanie odbywa się w następujący sposób: najpierw wybieramy typ bloku z danej grupy, a następnie określamy parametry tego bloku, takie jak np. dla bloku Move, którymi silnikami ma poruszać, z jaką mocą, ile obrotów/stopni/czasu, w którą stronę. Następnie po podłączeniu robota za pomocą USB, po naciśnięciu przycisku Download, program zgrywany był do Brick'a, w którym to był kompilowany i gotowy do wykonania.
Pierwsze pisane przez nas programy były trywialne i używały pojedynczych sensorów i np. tylko silników B i C. Dodatkowo korzystaliśmy w nich z pętel warunkowych i nieskończonych. Jednym z takich programów był program, który powodował jazdę do przodu, aż do napotkania przeszkody, a następnie zawrócenie i kontynuację programu od początku.
Film 1: http://www.youtube.com/watch?v=hFLRkSaH8uo
Modyfikacją programu polegało na wykorzystaniu sensora natężenia światła i jazdę po wnętrzu planszy, nie zdążyliśmy jednak przetestować tego programu.
Następnie zrealizowaliśmy program, który polegał otwarciu na początku szczęk robota (zakładamy, że robot zaczyna z zamkniętymi), a następnie wykonywanie w kółko zadań: jechanie do przodu, aż do napotkania przeszkody, po napotkaniu, zatrzymanie się i złapanie (piłki), obrót, jazdę do przodu, aż do sygnału dźwiękowego (klaśnięcia) zatrzymanie się, wypuszczenie piłeczki i poczekanie 5 sekund (na obrazku wersja bez czekania). Do obracania robota użyliśmy możliwości zadania kąta obrotu silników B i C. Zadowalająca nas wartością okazało się 330 stopni. Przy zamykaniu szczęk 90 stopni.
Film 2: http://www.youtube.com/watch?v=xGrN7v1pW8c
Na koniec próbowaliśmy zrealizować program, który polegał będzie na połączeniu unikania przeszkód i łapania piłeczki. Najlepszą próbą było wykorzystanie rozdzielenia szyny programu (wprowadzenie równoległości) za pomocą rysowania szyny z SHIFTEM.
Problemem, było to, że robot nie zatrzymywał się po złapaniu piłeczki. Próbowaliśmy to naprawić stosując zagnieżdzenie pętli, lecz tak skonstruowany program również nie działał tak jak zakładaliśmy, robot albo nie reagował na przeszkodę, albo nie łapał piłeczki (w zależności jak ustawiliśmy pętle warunkową, czy od sensora dotyku, czy od sensora odległości).
Pierwsze zajęcia związane z LEGO Mindstorms z wykorzystaniem modelu NXT były ciekawe i pozwalały na zapoznanie się z zestawem. Poznaliśmy sensory i sposoby działania silników, najprostsze metody programowania. Bardzo dużym plusem zajęć było to, że w formie zabawy/nauki poznaliśmy sposoby i możliwości programowania robotów i widzieliśmy efekty tego w rzeczywistości. Mimo iż nie wykorzystaliśmy wszystkich metod środowiska i modelu, takich jak programowanie z wykorzystaniem linków, bloków sterujących wyświetlaczem i głośnikiem Brick'a, dzięki którym można np. wyświetlać kółko o promieniu równym odległości sensora ultradźwiękowego, to uważamy, że dużo więcej dałoby się osiągnąć, używając innego środowiska, np. pisania programów w języku podobnym do C. Naszym zdaniem laboratorium można byłoby poszerzyć właśnie o więcej technik programowania w środowisku, np. o wyżej wymienione linki.
Laboratorium, było naprawdę warte polecenia, co widać na poniższym filmie. Nawet mimo pewnych niepowodzeń, dobry humor nas nie opuszczał.
Link do spakowanych programów (nie wszystkich): lego_lapa_lab1.rar