Paweł Bachman, Piotr Gawłowicz, Marcin Chciuk Możliwości wykorzystania Lego Mindstorms w nauczaniu mechatroniki W artykule przedstawiono historię rozwoju Lego MindStorms. Krótko opisano sterowniki RCX i NXT, urządzenia wejścia/wyjścia oraz interfejsy programistyczne. Następnie opisano konstrukcje robota, którego zadaniem jest poruszanie się po linii. Końcowa część artykułu stanowi zarys możliwości wykorzystania zestawów RIS i NXT przez studentów w badaniach do prac dyplomowych. 1. Wstęp Według definicji przyjętej przez International Federation for the Theory of Machines and Mechanism mechatronika jest synergiczną kombinacją mechaniki precyzyjnej, elektronicznego sterowania i systemowego myślenia przy projektowaniu produktów i procesów produkcyjnych. Mechatronika, jako inżynierskie połączenie i współdziałanie podstawowych nauk technicznych, wydzieliła się w latach osiemdziesiątych w celu wytworzenia wielofunkcyjnych produktów działających inteligentnie w zmieniającym się środowisku [1]. Postępująca ewolucja w dziedzinie mechatroniki wymusza kształcenie specjalistów o bardzo szerokich umiejętnościach. Nowoczesne maszyny coraz bardziej przypominają żywe organizmy, które dzięki zastosowaniu w ich budowie szeregu różnych czujników oraz sterowaniu nimi przy pomocy algorytmów zbliżonych strukturą do procesu myślenia człowieka potrafią dostosować się do warunków otaczającego je środowiska. Niniejszy artykuł ma na celu przybliżenie możliwości zestawów LEGO MindStorms Robotics Invention System 2.0 oraz NXT, które doskonale nadają się nie tylko do konstruowania zaawansowanych robotów, ale także do wykorzystania ich jako pomocy dydaktycznej na zajęciach związanych z nauczaniem mechatroniki 2. Historia rozwoju Lego MindStorms Firma LEGO, mylnie kojarzona wyłącznie z klockami dla dzieci posiada w swojej ofercie specjalną, najbardziej rozwiniętą serię MindStorms, a w niej zestawy Robotics Invention System 2.0 oraz NXT [4]. Historia Lego Mindstorms zaczęła się w roku 1985, kiedy to dr Papert, dr Resnick i Steve Ocko założyli Microworlds Learning Inc. i zaczęli pracę nad nowym typem zabawki. Chcieli oni stworzyć zestawy, które pozwoliłaby dzieciom budować różne maszyny, tak jak od lat to robiły z konstrukcjami Lego, z jedną dodatkową funkcją: mogłyby być one poruszane. Miało to umożliwić dzieciom budowę urządzeń i kontrolę nad nimi za pomocą programów komputerowych, które by same napisały. Pod koniec roku 1985 Papert i Resnick z zespołem zaczęli współpracować z Lego Company. Microworlds zaczęło wiązać kostki Lego z językiem programowania Logo w kombinacji, jak ją nazwali Lego/Logo. W roku 1986 Papert i Resnick przenieśli się do MIT (Massachusetts Institute of Technology) Media Laboratory, gdzie założyli The Epistomology and Learning Group, a Lego stało się ich sponsorem. Pierwszy sterownik, nazwany Programmable Brick 6502, został zbudowany w roku 1989. Od roku 1993 do 1995 pracowano też nad The Pocket Programmable Brick (Grey Programmable Brick). Ewolucja pierwszych sterowników doprowadziła w 1996 do stworzenia The Model 120 Programmable Brick (Red Programmable Brick), zwanego po prostu PB120 (rys.1a). Dzięki tej kostce Fred Martin uruchomił na MIT kurs, podczas którego studenci projektowali i budowali roboty z klocków.
Kurs ten w krótkim czasie zdobył taką sławę i popularność, że firma Lego postanowiła rozszerzyć swoją działalność w tym kierunku i wprowadziła na rynek komplety klocków do budowy robotów, nazwane zestawami Mindstorms [2]. W roku 1997 powstał czytnik kodów kreskowych zwany Code Pilot (rys. 1b.). Urządzenie posiadało obudowę z czytnikiem LED (ang. Light Emitting Diode), przyciski sterujące, głośnik oraz jedno wejście i jedno wyjście. W roku 1998 stworzono Programmable Brick RCX 1.0. Była to uproszczona wersja PB120. RCX 1.0 jest to klocek zawierający mikrosterownik, powstały z mikrokomputera jednoukładowego Hitachi H8/3292/16 MHz (rys. 2a). a) b) Rys. 1. Red Programmable Brick (a); Code Pilot (b) Pierwszy zestaw, który zawierał RCX 1.0 powstał w 1998 roku, a nazywał się 9719 Robotics Invention System 1.0. Składał się z 727 elementów, w tym między innymi różne klocki, koła zębate, przekładnie, kable, złącza, silniki, czujniki dotyku i światła, a także port komunikacyjny IR Tower. Do zestawu dołączono również płytę CD-ROM z oprogramowaniem, dzięki któremu można było tworzyć programy do RCX-a. a) b) c) d) Rys. 2. Klocki programowalne RCX (a), Scout (b), MicroScout (c), (d) NXT W 1999 roku powstało sporo nowości z serii Mindstorms. Pierwszą z nich był zestaw 9747 Robotics Invention System 1.5, który posiadał Programmable Brick RCX 1.5. Druga to rozszerzający zestaw 9736 Exploration Mars. Rok 2000 przyniósł kolejny rozszerzający zestaw nazwany 3801 Ultimate Accessory Set, a w 2001 powstał zestaw zawierający kostkę RCX 2.0. Nazywał się on 3804 Robotics Invention System 2.0. W 2001 roku wyszedł również zestaw rozszerzający o nazwie 3800 Ultimate Builders Set. Kolejny zestaw Lego MindStorms, Robotics Discovery Set 9735, który powstał w 1999 roku nie posiadał sterownika RCX. Zamiast niego, do zestawu załączono prostszy sterownik o nazwie Scout (rys. 2b). Miał on wbudowany czujnik światła, dwa porty na czujniki i dwa porty na silniki.
Kolejny zestaw, który wyszedł w roku 1999 nazywał się 9748 Droid Development Kit. Był to zestaw przygotowany głównie dla miłośników filmu Star Wars. Tym razem kostkę RCX zastąpiła kostka MicroScout (rys. 2c). Kostkę tę zawierał również następny zestaw o nazwie 9754 Dark Side Developer Kit, który wyszedł na rynek w roku 2000. W roku 1999 powstało też wiele dodatków, takich jak 3803 RIS 1.5 Upgrade Kit, 9757 Touch Sensor, 9755 Temperature Sensor, 9738 Remote Control oraz 9756 Rotation Sensor. Urządzenia te powstały w celu zwiększenia możliwości robotów. Czujniki te dostarczały nowych danych o świecie zewnętrznym, co umożliwiło pisanie bardziej skomplikowanych programów i budowanie mobilniejszych robotów. W roku 2000 wyszedł dodatek nazwany 9731 Vision Command, który zawierał kamerę USB z oprogramowaniem. Zwiększała ona możliwości rozbudowy robotów i innych konstrukcji, wzbogacając je o sensor wizyjny. W 2002 roku powstały zupełnie nowe produkty o nazwie Spybotics. Były to cztery modele, które miały ten sam sterownik o nazwie Electric Spybotic Brick. Programowalna kostka posiadała dwa silniki, czujnik dotyku, czujnik światła i emitery światła. Miała także zdolność wykrywania innych pojazdów Spybotic. Do zestawów dołączone były płyty CD, które zawierały dziesięć misji do zrealizowania. Spybotic programowało się za pomocą komputera, lecz nie miały one z nim łączności podczas działania. Można je było kontrolować za pomocą pilota, który łączył się z nimi przez port podczerwieni. Spybotic miały na celu przenieść gry komputerowe do świata realnego. a) b) c) d) Rys. 3. Spyboty: a) Gigamesh G40, b) Snaptrax S45, c) Shadowstrike S70, d) Technojaw T55 W lipcu 2006 roku na rynku ukazał się nowy zestaw nazwany Lego Mindstorms NXT (rys. 2d). Użyty w nim sterownik oparty był na 32-bitowym mikroprocesorze ARM7, z 256 KB pamięci FLASH, 64 KB RAM. Posiadał wyświetlacz LCD 100x64 pikseli, USB 2.0, Bluetooth, 4 porty wejścia i 3 porty wyjścia. 3. Opis zestawów RIS i NXT Choć klocki LEGO słyną ze swojej prostoty jednak zbudowanie działającego, rozbudowanego robota wciąż może się być bardzo poważnym wyzwaniem, przede wszystkim koncepcyjnym. Pomijając osoby, które mają w tym względzie specjalne przygotowanie, wyobrażenie sobie całej konstrukcji, a następnie jej szczegółowe zaplanowanie wymaga znacznego wysiłku intelektualnego.
Oprócz sterowników RCX lub NXT w zestawów skład wchodzi jeszcze cała gama czujników oraz silniki. Czujnik dotyku (rys. 4a RIS, 4g NXT) jest podstawowym czujnikiem wykorzystywanym przy konstruowaniu robotów z LEGO i jest to czujnik bierny, który do działania nie potrzebuje zasilania (zwarty posiada bardzo małą rezystancję, natomiast w stanie rozwarcia jego opór jest nieskończony). Klocek nadaje się do wykrywania i informowania sterownika o napotkanych przeszkodach. a) b) c) d) e) f) g) h) i) j) k) Rys. 4. Urządzenia zewnętrzne zestawów Mindstorms [3]: a do f RIS, g do k NXT: a, g) czujnik dotyku, B, h) czujnik natężenia światła, c) enkoder, d) czujnik temperatury, e) kamera, f) silnik, i) czujnik natężenia dźwięku, j) czujnik ultradźwiękowy, k) silnik z enkoderem Czujnik światła (rys. 4b RIS, 4h NXT) jest elementem aktywnym, chociaż można wykorzystać go także jako czujnik bierny. Z zewnątrz widoczne są dwa elementy elektroniczne: dioda i fototranzystor. Dioda wykorzystywana jest do oświetlania otoczenia czujnika. Fototranzystor rejestruje natężenie docierającego do niego światła. Zastosowany fototranzystor jest przede wszystkim wrażliwy na podczerwień. Czujnik światła znakomicie nadaje się więc do poszukiwania źródeł takiego promieniowania, jak aktywnych nadajników IR innych RCX. Wiedząc, że obiekty o ciemniejszej barwie pochłaniają więcej światła, możemy wykorzystać czujnik do rozróżniania kolorów. Czujnik obrotów firmy LEGO (rys. 4c) jest aktywnym czujnikiem umożliwiającym kontrolerowi pomiar obrotów z niewielką rozdzielczością, a dzięki temu pomiar drogi, jaką przebył robot. W zestawach NXT (rys. 4k) czujnik ten został umieszczony w jednej obudowie wraz z silnikiem. W skład LEGO MindStorms wchodzą dwa silniki elektryczne prądu stałego (rys. 4f RIS, 4k NXT) o napięciu nominalnym 9 V. Silniki te wyposażone są w wewnętrzną przekładnię zwiększającą jego moment napędowy. Sterowanie prędkością silnika odbywa się poprzez modulację szerokości wypełnienia fali prostokątnej (PWM). Modulacja tego typu polega na tym, że silnik jest bardzo szybko naprzemiennie włączany i wyłączany. Moc wytworzona w trakcie jednego cyklu pracy zależy od tego jak długo silnik był włączony. W zestawie RIS istnieje możliwość zamontowania kamery (rys. 4e). Łączy się ona komputerem za pośrednictwem USB i można dzięki niej oglądać na monitorze obrazy z otoczenia robota. Zestaw NXT został wyposażony jeszcze w dwa dodatkowe sensory: sensor natężenia dźwięku (rys. 4i), który może służyć np. do uruchamiania programu (gdy użytkownik głośno wypowie
np. słowo START), oraz czujnik ultradźwiękowy (rys. 4j), dzięki któremu robot może mierzyć odległość. a) b) c) Rys. 5. Interfejsy programowania: a) Robotnic Inventions System, b) NXT, c) RoboLab Programy dla RCX i NXT przygotowuje się na komputerach typu PC lub Mac. Aby napisać program, wystarczy sprawnie posługiwać się myszką. Gotowy program blokowy przekształcany jest w ciągi kodów operacyjnych związanych z poszczególnymi funkcjami systemowymi, a następnie przesyłany jest do sterownika za pomocą portu podczerwieni (RCX) lub USB (NXT). Ciągi kodów operacyjnych interpretowane są przez oprogramowanie firmowe i wywołują odpowiednie funkcje systemowe, a co za tym idzie, wykonywane są żądane czynności. Istnieje wiele różnych sposobów programowania robotów Lego MindStorms. Każdy zestaw ma też swój interfejs programistyczny. Do klocków RCX dołaczany jest Robotnic Invention System (rys. 5a). Oprogramowanie do kostki NXT jest stworzone na podstawie programu LabView przez firmę National Instruments (rys. 5b). Roboty można tez programować przy pomocy innych interfejsów (np. RoboLab rys. 5c), który często wykorzystywany jest na uczelniach USA i zachodniej Europy. 4. Opis wybranej konstrukcji robota Zadaniem robota jest znalezienie i podążanie wzdłuż czarnej linii (rys. 6a). Robot porusza się za pomocą napędu gąsienicowego. Wyposażony on jest w czujnik światła zamontowany z przodu (rys. 6b) i podłączony pod wejście 2 mikrokontrolera.
Rys. 6. Zasada działania robota poruszającego się po czarnej linii a) oraz widok robota b) [5] Graficzny obraz programu Linia oraz tekstowy kod źródłowy przedstawiony został na rys. 7. program test { a) b) #include <RCX2.h> #include <RCX2MLT.h> #include <RCX2Sounds.h> #include <RCX2Def.h> sensor rotation1 on 1 rotation1 is rotation as angle event greater_rotation1eventhigh when rotation1 > 32 event less_rotation1eventlow when rotation1 < -32 main { } ext InterfaceType "kfreestyle" rcx_cleartimers bbs_globalreset([a B C]) rcx_calibrate(4,7) clear Rotation1 repeat { bb_forward(a, C, 1) } until greater_rotation1eventhigh off [ A C ] rcx_calibrate(4,7) clear Rotation1 repeat { bb_backward(a, C, 1) } until less_rotation1eventlow off [ A C ] Rys. 7. Tekstowy kod źródłowy (a) oraz graficzny obraz programu (b) robota poruszającego się po czarnej linii [5] 5. Możliwości wykorzystania zestawów przez studentów w badaniach do prac dyplomowych W związku z tym, że sterowniki Lego MindStorms wykorzystują podobne sygnały jak profesjonalne sterowniki przemysłowe, można dzięki nim sprawdzać, jak wyglądają poszczególne przebiegi napięć. Poniżej przedstawiono przykładowe charakterystyki otrzymane podczas badania napędu z RIS 2.0. Wykonano je za pośrednictwem karty pomiarowej DaqBoard 3000. Pierwsze pomiary miały na celu zbadanie, jaki wpływ na szybkość zatrzymania silnika ma metoda hamowania (rys. 8). Badano silnik obciążony przy odłączeniu zasilania po wykonaniu ruchu ( Coast motors when off ), a następnie w czasie podczas zahamowania silnika ( Brake
motors when off ). Na wykresie widać, że zahamowanie silnika przyspieszyło zatrzymanie się wirnika o ponad 2 sekundy. Rys. 8. Dynamika silnika z obciążeniem w zależności od sposobu hamowania [5] Kolejnym zadaniem badawczym, jakie można wykonywać z wykorzystaniem Lego MindStorms jest badanie, jak na rozpędzanie i hamowanie silnika wpływa wielkość obciążenia (np. masa robota). Wykresy otrzymane na podstawie pomiarów (rys. 9) pokazują że przy największym obciążeniu czas rozpędzania był porównywalny do przypadku bez obciążenia, natomiast podczas hamowania czas wydłużył się kilkukrotnie. Rys. 9. Dynamika silnika w zależności od jego obciążenia [5] Następną rzeczą, jaką można sprawdzić jest kształt przebiegu sterującego silnikiem dla różnych współczynników wypełnienia (w sterowniku można je ustawiać od 1 do 8). Z otrzymanych charakterystyk (rys. 10) wynika, że dla współczynnika 1 sygnał składa się z krótkich pików, dla współczynnika 4 wypełnienie wynosi około 50% a dla 8 sygnał zasilania silnika to linia ciągła o wartości 9V.
U [V] 10 8 poz. 8 6 4 2 poz. 1 poz. 7 poz. 3 0 0 50 100 150 200-2 t [ms] Rys. 10. porównanie szerokości impulsów dla wybranych poziomów zasilania silnika [6] Zakończenie Możliwości dydaktyczne zestawów Lego MindStorms są zaskakujące. Możemy przy ich wykorzystaniu nauczać mechaniki, fizyki, elektroniki, projektowania robotów, automatyki i programowania, czyli praktycznie wszystkich składowych mechatroniki. Konstruowanie z klocków nie narzuca rozwiązania ani praktycznie żadnych innych ograniczeń pozwalając tym samym na wykazanie się kreatywnością konstruktora. Zajęcia z wykorzystaniem LEGO nie sprowadzają się jedynie do powielania rozwiązań prowadzącego, pozwalają też samemu studentowi wyszukać rozwiązania postawionego problemu. Rozwiązanie problemu zazwyczaj wymaga wykonania wielu różnych doświadczeń, wyciągania wniosków z przeprowadzonych eksperymentów oraz wprowadzania modyfikacji w kolejnych etapach pracy. Testowanie jest bowiem nieodłącznym elementem projektowania, a ponieważ żadne elementy nie są cięte, klejone czy wyginane, wykonanie kolejnych próbnych konstrukcji nic nie kosztuje, co sprawia, że zestawy MindStorms są idealne do tego typu prac. Również w zależności od zainteresowań uczestników, zajęcia mogą koncentrować się na elektronice (konstrukcja czujników, układów sterujących), programowaniu czy mechanice robota, natomiast interdyscyplinarność zajęć może pomóc studentom w rozwijaniu własnych zainteresowań. Oprogramowanie dostarczone z zestawem firmy LEGO jest bardzo funkcjonalne i pomimo prostego interfejsu pozwala na pisanie skomplikowanych programów. Współpracuje ono ponadto także z najnowszymi, 64-bitowymi systemami operacyjnymi Windows Vista firmy Microsoft. Wskazana jest jednak instalacja starszej wersji aplikacji Quick Time firmy Apple, która jest niezbędna do działania programu. Literatura [1] Grono Andrzej J., Mechatronika laboratorium, Wydawnictwo Politechniki Gdańskiej, Gdańsk 2004. [2] http://www.mit.edu [3] http://www.peeron.com Prace inżynierskie [4] Borsukiewicz M.: Ewolucja Lego MindStorms programowanie, urządzenia wejściawyjścia, Zielona Góra, 2008, promotor: dr inż. Piotr Gawłowicz. [5] Szyk A.: Wykorzystanie LEGO Robotics Invention System 2.0 w nauczaniu mechatroniki, Zielona Góra, 2008, promotor: dr inż. Piotr Gawłowicz.
[6] Żurawiński M.: Urządzenia wejścia/wyjścia stosowane w robocie MindStorms firmy LEGO, Zielona Góra, 2008, promotor: dr inż. Piotr Gawłowicz.