Alchemik
Administrator
Dołączył: 22 Wrz 2010 Posty: 48
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Zagórze/Sosnowiec
|
Wysłany: Czw 16:55, 23 Wrz 2010 Temat postu: Zajęcia z Robotyki |
|
|
Pomysł budowy robotów z klocków powstał w zespole z Grupy Epistemologii i Nauczania Laboratorium Mediów MIT w składzie:Fred Martin, Rand Sargent, Brian Silverman, Seymour Papert i Mitchel Resnick. 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 sterowania. Pierwszy sterownik, Programmable Brick 6502, zaprojektowany został przez Randy Sargenta i potrafił interpretować instrukcje Logo. Jego ewolucja, odzwierciadlająca kompromisy pomiędzy możliwościami a ceną, doprowadziła w 1994 do stworzenia PB120.
PB120 jest solidnym komputerem z mikroprocesorem Motorola 68332/20MHz, 256 KB nieulotnej RAM, 6 wejściami dla czujników, 4 wyjściami dla silników, portem podczerwieni i brzęczykiem. Z PB120 w garści, Fred Martin mógł już uruchomić na MIT kurs 6.270, w czasie którego studenci projektują i budują roboty z klocków. Kurs 6.270 szybko zdobył taką sławę i popularność, że firma LEGO zdecydowała się wprowadzić na rynek zestawy Mindstorms- komplety klocków do budowy robotów.
Sterownik RCX 1.0
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-bitowym szyną adresową, 8 kanałami A/D, 16 8-bitowymi rejestrami, interfejsem szeregowym, trzema rodzajami liczników, ponad czterdziestoma 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. Zadanie to realizowane jest jako programowa modulacja PWM zasilania silników za pomocą sprzętowych liczników procesora. Do H8/3292 dodatkowo dołączony został wyświetlacz LCD, głośniczek, moduł z nadajnikiem/odbiornikiem podczerwieni i prosta klawiatura.
Wejścia 1, 2 i 3 RCX mogą pracować w dwóch trybach: biernym i aktywnym. W trybie biernym na wejściu pojawia się napięcie 5V odkładane na rezystorze 10k. Czujnik bierny podłączany jest równolegle do tego rezystora, natomiast RCX mierzy napięcie pojawiające się w takim obwodzie. Takie rozwiązanie techniczne pozwala na dołączenie wielu czujników dotyku do pojedynczego wejścia, co prowadzi do zwiększenia liczby sensorów obsługiwanych przez RCX. Michael Gasperi, autor znakomitej strony o czujnikach RCX zauważa też, że właściwie do wejścia pracującego w trybie biernym można podłączyć dowolny czujnik wymuszający napięcie z zakresu 0-5V i nie obawiać się ryzyka uszkodzenia obwodu.
W trybie aktywnym, RCX podnosi napięcie na wejściu do ok.8V na okres 150 mikrosekund. Pod koniec cyklu, przez 32 mikrosekundy, RCX odłącza 8V i dokonuje pomiaru napięcia tak, jakby podłączony czujnik pracował w trybie biernym. Michael Gasperi przypuszcza, że napięcie 8V dostępne w aktywnym trybie pracy wejścia jest napięciem z baterii pomniejszonym o spadek napięcia na mostku diodowym. W przypadku czujnika światła powoduje to pewne niedogodności. Otóż w miarę wyczerpywania się baterii napięcie zasilające spada, co wprowadza niepomijalne zmiany w wskazania czujnika światła. Zmiany te są tym istotniejsze, im bardziej wyczerpane są baterie i im bardziej obciążone są silniki. Problem ten nie pojawia się przy stosowaniu akumulatorów niklowo-wodorkowych, bowiem z dobrym przybliżeniem są one idealnym źródłem napięciowym.
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ą. Wraz z silnikiem 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ść stosując czujnik obrotów i programując odpowiednio RCX. Niestety, obecnie czujniki takie nie są dostępne w naszym laboratorium.
Inne elementy wykonawcze
W zestawach LEGO dostępne są też inne efektory. Dave Baum, oprócz silnika 5225, opisuje jeszcze dwa inne, wysoko-obrotowe napędy prądu stałego. Z niektórymi kompletami LEGO Technic dostarczane są też akcesoria dla pneumatycznych elementów wykonawczych, jednak ich przydatność do konstrukcji robotów jest dyskusyjna.
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, natomiast Jonathan Woodward zbadał wrażliwość czujnika na różne kolory.
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.
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ą M$ 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, który pokrótce opisany jest w dalszej części tego opracowania.
Warto napisać kilka słów o architekturze oprogramowania RCX. Podstawowe funkcje systemowe wbudowane są w 16 KB pamięci ROM, a najważniejszych 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.
NQC został zainstalowany w naszym laboratorium. Program wywoływany jest za pomocą komendy nqc opisanej w manualu lub w pliku pdf. Składnia i szereg przykładów zawarte są w przewodniku dostępnym również na stronach Dave Bauma.
Klocki LEGO
Czytając ten dokument 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. Nie zdobyłem się na odwagę prezentacji nieporadnych konstrukcji, które wyszły (bądź wyjechały) spod moich rąk, bowiem jestem początkującym budowniczym LEGO i przypuszczalnie każde dziecko wyśmiałoby moje roboty.
Cóż zatem mogę doradzić w tej sytuacji? Po pierwsze trzeba przejrzeć Constructopedię i zbudować kilka wzorcowych pojazdów. Constructopedia zawiera bardzo eleganckie, przemyślane rozwiązania; warto je zapamiętać. Obowiązkowo należy zapoznać się z artykułem Freda Martina o własnościach niektórych elementów LEGO i pewnych elementarnych ich kompozycjach. Trzeba też podglądać rozwiązania innych konstruktorów. Przykładowo, Rene Schalburg zbudował pająka, a Jonathan Knudsen zaprojektował robota mobilnego z napędem synchronicznym. Największe wrażenie robi jednak manipulator o pięciu stopniach swobody autorstwa Jody ze strony MindStorms. Więcej wskazań na interesujące konstrukcje LEGO można znaleźć u Russela Nelsona.
Post został pochwalony 0 razy |
|