Warsztaty Idea BEST Trial Summer Course

16 września 2004 r.

Idea BEST Trial Summer Course

W dniach od 22 sierpnia do 2 września 2004, na wydziale Elektroniki Telekomunikacji i informatyki Politechniki Gdańskiej, miały miejsce warsztaty BEST Trial Summer Course ?Martian holidays ? Mobile Robots Contest?. Uczestnicy warsztatów wywodzący się z 8 krajów europejskich (Słowenia, Hiszpania, Włochy, Rumunia, Polska, Belgia, Chorwacja, Słowacja) oraz Kanady, mieli do wykonania trudne zadanie skonstruowania i zaprogramowania, autonomicznego robota mobilnego, symulatora sondy kosmicznej. Materiałem w jaki wyposażeni zostali konstruktorzy były znane wszystkim klocki LEGO a dokładnie zestawy LEGO Mindstorms Robotics Invention Sysem 2.0

Zestawy Robotic Invention System, są doskonałą platformą pozwalającą studentom uczelni technicznych na zapoznanie się z podstawowymi zagadnieniami i problemami Robotyki praktycznej. Z myślą o propagowaniu tej formy praktycznego zdobywania wiedzy Koło Naukowe Studentów Automatyki SKALP wraz z Organizacją Studencką BEST Gdańsk zorganizowało warsztaty, których forma tj. Turniej Robotów Mobilnych jest narzędziem tzw. dydaktyki eksperymentalnej (ang. learning-by-doing). Ten sposób uczenia się sprawia, że problemy przestają być akademickie, a świat rzeczywisty jest najlepszym kolokwium zaliczeniowym. Organizując warsztaty w takiej a nie innej formie, chcemy pokazać iż nauka i wyzwania przez nią stawiane może być ciekawa i fascynująca. Zdobywanie zaś wiedzy szczególnie praktycznej może być świetną zabawą. Dzięki wsparciu naszej inicjatywy przez firmę ASTOR oraz National Instruments Poland, mogliśmy pokazać studentom Polskich i Europejskich uczelni technicznych jaką pasją może być rozwiązywanie, konstrukcyjnych i programistycznych wyzwań.

?Tell me, and I forget
Teach, and I may remember.
Involve me, and I learn?

– Benjamin Franklin

Budowa Robotów z klocków LEGO

Pomysł budowy robotów z klocków LEGO powstał w zespole Grupy Epistemologi i nauczania w Laboratorium Mediów Massachusetts Institute of Technology. Pod koniec lat osiemdziesiątych, kiedy wśród elementów LEGO można już było znaleźć osie, przekładnie, silniki, zespół ten odczuł potrzebę wzbogacenia listy dostępnych elementów o klocek mikrokomputer. Zaowocowało to rozpoczęciem na MIT przez Freda Martina kursu numer 6.270. Celem kursu 6.270 było przekazanie studentom wiedzy na temat konstruowania i programowania robotów. W krótkim czasie kurs 6.270 zdobył taka sławę i popularność, iż firma LEGO zdecydowała się wprowadzić na rynek zestawy MindStorms – kompletne zestawy pozwalające na budowę programowalnych robotów. W myśl pierwotnej idei LEGO miały to być zestawy przeznaczone dla dzieci od lat 12. Jednak bardzo szybko okazało się, iż zestawy te świetnie nadają się do implementacji podstawowych problemów konstrukcyjno – programistycznych na wyższych Uczelniach Technicznych.

Czym jest zestaw Robotics Invention System?

RIS jest podstawowym zestawem LEGO MindStorms. Zawiera on standardowe elementy LEGO (podstawowe klocki konstrukcyjne, łączniki, osie, koła), dodatkowe elementy (silniki, przekładnie pasowe, przekładnie ślimakowe, czujniki, dotyku i barw) oraz programowalny sterownik (RCX) – mikrokomputer w formie klocka LEGO.

Sterownik

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. 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.

Inne elementy wykonawcze:

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. Prawdziwe kłopoty z silnikiem 5225 rozpoczynają się wtedy, gdy konieczne jeststerowanie 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.

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

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.

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 jest programem, który udostępnia wszystkie możliwości oprogramowania firmowego.

RoboLab

Kolejnym narzędziem do programowania RCX jest graficzne środowisko RoboLab dające dużo większe możliwości niż RCX Code. Robolab jest wersją graficznego języka programowania LavVIEW? przeznaczoną dla zestawu LEGO Mindstorms. Program tworzony za pomocą edytora pracującego na komputerze stacjonarnym jest następnie przesyłany do sterownika RCX. Robolab zawiera rozbudowany zestaw  procedur (tzw. subvi) odpowiedzialnych są za komunikację z komponentami zestawu Mindstorms (czujnikami, silnikami, diodami LED). Dane zbierane za pomocą czujników zestawumogą być po przesłaniu prezentowane na komputerze stacjonarnym. Robolab oparty jest na programowaniu graficznym, czyli takim, w którym kod programu ma postać diagramu definiującego przepływ danych pomiędzy węzłami realizującymi operacje przetwarzania danych. Język ten posiada oczywiście wszelkie elementy znane z tradycyjnych, tekstowych języków programowania, takie jak instrukcje warunkowe, iteracyjne (pętle), podprogramy itp. W zastosowaniach edukacyjnych szczególnie istotną cechą języka graficznego jest czytelność stworzonego kodu, pozwalająca w łatwy sposób dostrzec i zrealizować logiczne założenia programu. Poniżej widać przykładowy diagram programu w Robolab.

Przebieg Konkursu

Całość konkursu odbyła się w czterech częściach. Pierwsze trzy, nazwane rundą eliminacyjną, wymagały zaprezentowania możliwości robota w trzech oddzielnych konkurencjach: astronawigacji, tropienia śladów oraz przejechaniu tunelu. W każdym z tych etapów był oceniany czas wykonania zadania Do rundy finałowej przeszły te drużyny, które w rundach eliminacyjnych uzyskały najmniejsze sumy czasów za wszystkie konkurencje. Finał był połączeniem zadań z trzech pierwszych etapów.

Zwycięzcy

Wygrała drużyna w składzie hiszpańsko-włosko-belgijsko-polskim: Adilia Vallejo Santildeudo z Hiszpani, Alessio Buzzoni – Włochy, Yves Alexandre z Belgii oraz Marek Malczewski z Polski.