Sponsorzy:
Patroni medialni:
Wspiera nas:
Hosting:
|
 |
LEGO Mindstorms
Pomysł budowy robotów z klocków powstał w zespole z Grupy Epistemologii i Nauczania Laboratorium Mediów MIT. Pod koniec lat osiemdziesiątych, kiedy wśród elementów LEGO można już było znaleźć przekładnie, baterie, silniki oraz osie, zespół ten odczuł potrzebę rozszerzenia listy dostępnych składników LEGO o klocek-mikrokomputer. Głównym tego celem było umożliwienie budowy prostych robotów i mechanizmów o złożonym sterowaniu.
RCX
 |
Mózgiem systemu MindStorms jest RCX 1.0, uproszczona wersja PB120. Do jego konstrukcji wykorzystano procesor Hitachi H8/3292/16MHz z 32KB zewnętrznej RAM, 16KB ROM, 16-bitową szyną adresową, 8 kanałami A/D, 16 8-bit rejestrami, 3 rodzajami liczników, ponad 40 wejściami-wyjściami dyskretnymi. Jeden kanał A/D przeznaczono do monitorowania stanu baterii zasilających RCX, natomiast trzy inne służą do zbierania danych z czujników. Niektóre wyjścia procesora poprzez układ ELEX 10402B sterują silnikami podpiętymi do łącz A, B i C, poprzez modulację PWM zasilania motorów. Do H8/3292 dodatkowo dołączony został wyświetlacz LCD, głośniczek, moduł z nadajnikiem-odbiornikiem podczerwieni i prosta klawiatura.
|
silniki
W skład zestawu MindStorms wchodzą silniki prądu stałego 5225 o napięciu nominalnym 9V i sprawności 80%. Silniki wyposażone są w wewnętrzną przekładnię zwiększającą moment napędowy silnika kosztem jego prędkości obrotowej. RCX steruje silnikami poprzez modulację szerokości wypełnienia fali prostokątnej (PWM). Nieobciążony silnik obraca się z prędkością ok.350 obr./min pobierając przy tym prąd 5-10mA, Po zablokowaniu silnika pobór prądu wzrasta do ok.250-350mA. Silnik 5225 posiada średni moment napędowy i średnią prędkość obrotową. Nie prowadzi to oczywiście do żadnych poważnych ograniczeń w konstruowaniu robotów, bowiem zawsze można zastosować przekładnie.
Prawdziwe kłopoty z silnikiem 5225 rozpoczynają się wtedy, gdy konieczne jest sterowanie położeniem wału lub prędkością obrotową. W standardowym zestawie nie jest bowiem dostarczany żaden enkoder czy prądniczka tachometryczna, zatem nie jest możliwe założenie żadnej pętli regulacyjnej. Trudność tę można obejść dokupując czujnik obrotów i programując odpowiednio RCX.
|
czujnik dotyku

Czujnik dotyku jest jest zwykłym przełącznikiem analogowym wbudowanym w klocek LEGO, zatem jest to czujnik bierny. Zwarty (wciśnięty) posiada bardzo małą rezystancję, w stanie rozwarcia jego opór jest nieskończony.
|
czujnik światła
Czujnik światła 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 natomiast rejestruje natężenie docierającego doń światła. Zastosowany fototranzytor jest przede wszystkim wrażliwy na podczerwień. Czujnik światła znakomicie się więc nadaje do poszukiwania źródeł takiego promieniowania np. aktywnych nadajników IR innych RCX. Schemat i zasady działania czujnika światła zostały dokładnie opisane przez Michaela Gasperi.
|
inne czujniki
Firma LEGO dostarcza w zestawach uzupełniających szereg czujników przystosowanych do współpracy z MindStorms. W pierwszej kolejności należy wymienić czujnik obrotów - prosty enkoder położenia wału silnika o rozdzielczości 1/16 obrotu. Klocek ten pozwala rozwiązać problem sterowania położeniowego i prędkościowego silnika 5225. Z kolei czujnik temperatury oferowany przez LEGO pozwala mierzyć temperaturę od -20 do +70 stopni Celcjusza. Najbardziej złożonych sensorem jest jednak kolorowa kamera podłączona do PC za pomocą USB.
![[Rozmiar: 15359 bajtów]](img/9891.jpg)
enkoder
|
![[Rozmiar: 19515 bajtów]](img/9889.jpg) czujnik temperatury
|
![[Rozmiar: 14748 bajtów]](img/cam.jpg)
kamerka |
Obok oryginalnych istnieją też czujniki dodatkowe. Przykładowo, partner LEGO, firma Pitsco rozszerza zestaw MindStorms o czujniki wilgotności, ruchu, dźwięku i ciśnienia. Możliwe, a chyba i najbardziej interesujące jest jednak samodzielne zaprojektowanie bądź zbudowanie czujników współpracujących z RCX. Strony Michaela Gasperi zawierają szereg wskazówek, pomysłów a nawet schematy czujników do mierzenia różnych wielkości.
|
programowanie sterownika RCX
Programy dla RCX przygotowywane są za pomocą PC lub Mac. Wraz z MindStorms dostarczane są dobrze przemyślane i wypieszczone narzędzia programistyczne pracujące pod kontrolą MS Windows. Niestety, projektowane były one z myślą o dzieciach, zatem nie oferują zbyt zaawansowanych możliwości. Programowanie RCX w rozumieniu firmy LEGO polega bowiem na kombinacyjnym zestawianiu zachowań złożonych z bloczków z zachowaniami prymitywnymi. Do tego celu właściwie wystarczy sprawnie posługiwać się myszką. Programy bloczkowe przekształcane są w ciągi kodów operacyjnych związanych z poszczególnymi funkcjami systemowymi, a następnie przesyłane do RCX. Wykonanie programu sterującego polega na interpretacji kodów operacyjnych przez oprogramowanie firmowe i wywoływaniu odpowiednich funkcji systemowych.
Bardziej wyrafinowane żądania stawiane robotom wymagają jednak bardziej wyrafinowanych narzędzi programistycznych. Dlatego też Kekoa Proudfoot poświęcił swój czas na rozpracowanie protokołów i disassemblację ROM RCX. Wyniki jego pracy wykorzystał Dave Baum do budowy kompilatora o nazwie Not Quite C(NQC). Praca Kekoa'y stała się podstawą napisanego przez Markusa Noga, niezależnego od firmy LEGO systemu operacyjnego LegOS.
Warto napisać kilka słów o architekturze oprogramowania RCX. Podstawowe funkcje systemowe wbudowane są w 16 KB pamięci ROM, a najważniejsze z nich zajmują się taki zadaniami jak:
- Sterowanie silnikami, w tym modulacja PWM
- Zarządzanie konwersją A/D sygnałów z wejść RCX
- Obsługa łącza szeregowego i niskopoziomowych protokołów komunikacji
- Obsługa wyświetlacza i głośniczka
- Ładowanie i uruchamianie oprogramowania firmowego
W ROM wbudowane jest też 5 programów pozwalających na elementarne testy robotów.
Przed uruchomieniem własnych programów należy do RCX wprowadzić oprogramowanie firmowe w postaci interpretera kodów operacyjnych. Po załadowaniu oprogramowania firmowego, w RAM zostaje zaledwie 6KB pamięci przeznaczonej na programy. Ograniczenia pamięci nie obowiązują w systemie LegOS, który zupełnie inaczej zarządza pamięcią H8/3292.
Niewielki rozmiar programu nie jest jedyną niedogodnością oprogramowania firmowego. Do najważniejszych jego ograniczeń należą też:
- Brak innych typów zmiennych niż 16-bitowe słowo ze znakiem
- Ograniczenie liczby wszystkich zmiennych do 32
- Ograniczenie liczby procedur do 8
- Brak możliwości przekazywania parametrów do procedur
- Procedury nie mogą wywoływać innych procedur
- Ograniczenie do 9 liczby wątków programu
Jest jasne, że każdy ambitny programista wpada w popłoch słysząc o takich ograniczeniach. Rzecz w tym, że bloczkowa filozofia sterowania RCX nie pozwoli mu dotrzeć nawet w ich okolice.
Not Quite C
NQC jest programem, który udostępnia wszystkie możliwości oprogramowania firmowego. Dave Baum opisuje NQC jako:
Krok pośredni pomiędzy GUI dostarczonym przez LEGO wraz z MindStorms, a pbForthem czy LegOSem NQC jest o wiele potężniejszy niż GUI LEGO, ale nie udostępnia tego samego poziomu bezpośredniej kontroli RCX, jaki uzyskuje się zastępując oprogramowanie firmowe.
Naturalnie, opisane powyżej ograniczenia oprogramowania firmowego obowiązują również w programach NQC, jednak Dave Baum dołożył wszelkich starań by zminimalizować ich znaczenie. Przykładowo, w NQC wprowadzone zostały funkcje inline- krótkie fragmenty programu rozwijane w miejscu wywołania. Funkcje te posiadają parametry, mogą też zwracać wyniki obliczeń. Sprytne zarządzanie dostępnymi zmiennymi OF pozwolą na wykorzystanie w NQC zmiennych lokalnych. NQC jest zatem wyśmienitym narzędziem wprowadzającym do programowania RCX.
Klocki LEGO
Czytając ten opis można odnieść wrażenie, że zestaw MindStorms składa się z elektroniki i oprogramowania. Nic bardziej mylnego! MindStorms to klocki służące do budowy Mechanizmów. A umiejętność konstrukcji dobrych mechanizmów jest sztuką, której nie można nauczyć się inaczej jak poprzez precyzyjne budowanie i rozkładanie, podpatrywanie i ściąganie pomysłów, a przede wszystkim bujanie w obłokach i ćwiczenie wyobraźni.
Opisy znajdujące się na tej podstronie zostały zaczerpnięte z innej strony o MindStorms.
|
 |
 |