Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta
Tvorba a obsluha robotické jednotky Bakalářská práce
Vedoucí práce:
Autor:
Ing. Oldřich Trenz, Ph.D.
Ondřej Chytil
Chtěl bych tímto poděkovat vedoucímu bakalářské práce, panu Ing. Oldřichu Trenzovi, Ph.D. za konzultace a odborné rady.
3
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně s použitím literatury a zdrojů uvedených v části Literatura
.................................................
4
Abstract Chytil, O. Creation and control of robotic unit. Bachelor thesis. Brno, 2009. This bachelor thesis is describing robotic unit Lego Mindstorms NXT. Text contains hardware specifications and potentiality of programming in different languages. Thesis includes mapping program which demonstrates possibilities of this technology. Keywords NXT, robot, NXT-G, intelligent brick, sensor Abstrakt Chytil, O. Tvorba a obsluha robotické jednotky. Bakalářská práce. Brno, 2009. Tato práce se zabývá popisem robotické jednotky Lego Mindstorms NXT. Jsou uvedeny hardwarové specifikace i možnosti programování v různých jazycích. Součástí práce je mapovací program demonstrující možnosti této techniky. Klíčová slova NXT, robot, NXT-G, inteligentní kostka, senzor
5
Obsah Obsah...............................................................................................................6 1. Úvod............................................................................................................7 2. Cíl práce......................................................................................................8 3. Historie vývoje Lego Mindstorms...............................................................9 4. Hardware Lego Mindstorms NXT........................................................11 4.1 Programovatelná kostka NXT.............................................................11 4.2 Servomotory........................................................................................13 4.3 LCD displej.........................................................................................13 4.4 Senzory................................................................................................14 4.4.1 Standardní senzory...........................................................................15 4.4.2 Senzory externích firem.......................................................................18 4.4.3 Ukázka produktů firmy HiTechnic...................................................19 4.4.4 Ukázka produktů firmy Vernier.......................................................21 4.4.5 Ukázka produktů firmy Mindsensors.com...........................................22 5. Software k programování NXT.............................................................25 5.1 NXT-G.................................................................................................26 5.2 LabVIEW Toolkit for Lego Mindstorms NXT 2.0.............................27 5.3 RobotC.................................................................................................29 5.4 Lego Mindstorms NXT toolkit for Matlab and Simulink.......................30 6. Praktická část.........................................................................................32 6.1 Řešení zadané úlohy............................................................................34 6.2 Zhodnocení úlohy....................................................................................36 7. Závěr..........................................................................................................37
6
1. Úvod Lidstvo se celou dobu své existence snaží zjednodušit si práci vývojem techniky, která více či méně zastane úlohu člověka při vykonávání této práce. Od jednoduchých nástrojů ke zpracování ulovené zvěře či obdělávání půdy se po mnoha letech dopracovalo až k částečné automatizaci či plné robotizaci některých výrobních procesů. Slovo robot bylo poprvé použito v dramatu významného českého spisovatele Karla Čapka R.U.R. Později byla tematika robotů v literatuře zpracována Isaacem Asimovem. Jeho povídky se většinou zabývají „duchovnem“ androidů, jejich interakcí s člověkem a přisuzuje jim v nich do jisté míry nezávislé myšlení. Na rozdíl od sci-fi literatury a filmové tvorby, kde se klade důraz na humanoidní vzezření s co největším podobenstvím na člověka jak po fyzické tak psychické stránce, zajímá tvůrce robotických zařízení ve skutečném světě spíše efektivita jejich provozu. První průmyslový robot byl vyroben v USA společností Unimation roku 1954. V 60. letech byly otevřeny laboratoře umělé inteligence na několika amerických vzdělávacích institucích, především pak na MIT. Od počátku 80. let minulého století začali být roboti vybavováni čidly pro určování stavu okolního světa. V této době se také do vývoje robotiky zapojuje ve větší míře několik velkých japonských firem, které v současnosti určují směr dalšího vývoje.
7
2. Cíl práce Cílem této práce je demonstrování možností využití robotické jednotky Lego Mindstorms NXT. K dosažení výše uvedeného je nutné nejprve prostudovat současný stav hardwarových a softwarových prostředků souvisejících s NXT technologií. Součástí práce bude také praktická ukázka programu vytvořeného v některém z popsaných vývojových prostředí.
8
3. Historie vývoje Lego Mindstorms Dánská společnost Lego byla založena roku 1932. Název je odvozen ze slov leg godt, jejichž význam v latině je skládat dohromady. Napovídá to o zaměření společnosti, která se po roce 1949 začala specializovat na produkci různých druhů stavebnic tvořených plastovými kostkami. První produkty ovládané pomocí počítačové technologie byly od firmy distribuovány již v roce 1986. Většího pokroku v tomto oboru bylo dosaženo o dva roky později, když začala spolupráce firmy Lego a MIT (Massachusetts Institute of Technology - Massachusettský technologický institut). Tímto začal vývoj inteligentní kostky, která v současnosti tvoří základ Lego Mindstorms stavebnic. Poprvé došlo k představení Lego Mindstorms veřejnosti v lednu a únoru roku 1998 na výstavách hraček v Norimberku, Londýně a New Yorku. Jednalo se o stavebnici
RIS
(Robotics
Invention
System)
s programovatelnou
„inteligentní“ kostkou RCX (Robotic Control Explorer). Program utvořený v dodávaném software či v jiném jazyce (např. C, Java, Visual Basic a další) bylo možné uložit do RAM paměti kostky čítající 32kB prostoru. O provoz kostky se staral osmibitový mikroprocesor. Komunikace mezi PC a RCX byla zajištěna pomocí infračerveného portu. Dále byl systém opatřen třemi vstupními porty pro záznam údajů z připojených senzorů a třemi výstupními porty pro vysílání signálu pro řízení servomotorů zajišťujících pohyb.
9
obrázek 1 Robotic Control Explorer [http://en.wikipedia.org/wiki/Lego_Mindstorms]
Tato první verze Lego Mindstorms byla používána v několika edicích stavebnic Lego až do července roku 2006, kdy byla na světovém veletrhu spotřební elektroniky CES (Consumer Electronics Show) představena nová generace robotického systému, Lego Mindstorms NXT [3] [4].
10
4. Hardware Lego Mindstorms NXT
4.1 Programovatelná kostka NXT Podobně jako u předchozí verze je jádrem NXT programovatelná kostka. Její vylepšená verze je také hlavním rozdílem oproti starší RIS.
obrázek 2 Programovatelná kostka NXT [http://www.unomaha.edu/aimforthestars/img/nxt.jpg]
11
Technická specifikace programovatelné kostky NXT: Dvaatřicetibitový mikroprocesor pracující na frekvenci 48MHz. Obsahuje 256kB flash paměti a 64kB RAM paměti. Osmibitový koprocesor taktovaný na frekvenci 8MHz a využívající 4kB flash paměti a 512B paměti RAM. Ovladač technologie bluetooth CSR BlueCore 4. Monochromatický LCD displej s rozlišením 100x64 pixelu. Port pro připojení sběrnice USB verze 2.0. Čtyři vstupní porty pro zapojení senzorů. Tři výstupní porty k zapojení servomotorů. Osmibitový reproduktor se vzorkovací frekvencí 2-16kHz. Napájení pomocí šesti AA baterií [5]. Zapojení a kooperaci jednotlivých částí pak ilustruje následující schéma [14].
obrázek 3 Schéma zapojení kostky NXT [14]
12
4.2 Servomotory Pro pohybové a manipulační funkce NXT robota se užívá několika servomotorů. Servomotorem se rozumí motor pro pohony, u kterých lze na rozdíl od běžného motoru nastavit přesnou polohu natočení osy. Jako u většiny těchto motorů je i u Mindstorms systémů použito elektrických servomotorů. K programovatelné kostce NXT lze připojit maximálně 3 motory. Každý obsahuje zabudovaný systém pro měření otáček, čímž je umožněno efektivní řízení rychlosti a směru pohybu, které chybělo u předchozí verze a bylo částečně kompenzováno optimalizací zdrojového kódu. Počet otáček je zjišťován pomocí optoelektrického snímače. Světelný paprsek prochází přes děrované klečko na fotocitlivou buňku snímající impulsy. Ta je hned převádí na informaci o rychlosti otáčení [2][5].
obrázek 4 Uspořádání servomotoru [http://www.activerobots.com/products/mindstorms4schools/nxt-accessories/9842-prod-02-inside-500.jpg]
4.3 LCD displej Displej z tekutých krystalů (Liquid crystal display) je tenké a ploché zobrazovací zařízení skládající se z omezeného počtu barevných nebo monochromatických pixelů seřazených před zdrojem světla nebo reflektorem.
13
Vyžaduje poměrně malé množství elektrické energie; je proto vhodné pro použití v přístrojích běžících na baterie. Pixely jsou složeny z molekul tekutých krystalů, které jsou uloženy mezi dvěma průhlednými elektrodami a dvěma polarizačními filtry. Bez působení elektrického proudu jsou v chaotickém stavu. Proud zapříčiní, že se molekuly srovnají s mikroskopickými drážkami na elektrodách. Drážky na elektrodách jsou vzájemně kolmé, takže molekuly se srovnají do spirálové struktury. Světlo procházející filtrem je při průchodu tekutým krystalem rotováno, což mu umožňuje projít i druhým filtrem. Polovina světla je absorbována prvním polarizačním filtrem, kromě toho je ale celá sestava průhledná. V okamžiku vpuštění elektrického proudu do elektrod jsou molekuly tekutých krystalů taženy rovnoběžně s elektrickým polem, což snižuje rotaci vstupujícího světla. Pokud nejsou tekuté krystaly vůbec stočené, procházející světlo bude polarizováno kolmě k druhému filtru, a tudíž bude úplně blokováno a pixel se bude jevit jako nerozsvícený. Pomocí ovlivnění stočení krystalů v pixelu lze kontrolovat množství procházejícího světla, a tudíž i celkovou svítivost pixelu [13].
4.4 Senzory Možnosti využití systému Lego Mindstorms NXT byly značně omezeny nebýt způsobu monitoringu okolního prostředí. Toto „sledování“ okolí je zajišťovány senzory. Senzor je zařízení, které měří určitou fyzikální veličinu a převádí ji na signál, který může být dále využit v měřicích a řídících systémech. K NXT kostce je možno připojit současně až čtyři senzory. Právě takový je počet standardních senzorů dodávaných společností Lego. Ty mohou být doplněny kompatibilním zařízením jiných výrobců, které mají vylepšené funkce standardní sady či přidávají rovnou snímání nových veličin.
14
4.4.1 Standardní senzory Senzor doteku (touch sensor) Tento senzor funguje na principu dvoustavové (booleovské) logiky. Výchozí hodnota (0) značí senzor v klidu pomocí rozpojeného elektrického obvodu. Při stlačení dojde k uzavření obvodu a tím i k detekci signálu. Využití najde například při detekci překážek (resp. nárazu do nich), při manipulaci s předměty nebo jako startér zadané akce.
obrázek 5 Senzor doteku [http://bttw.com.au/legoshop/images/9843%20NXT%20Touch %20Sensor.JPG]
Senzor zvuku (sound sensor) Zvuk je každé podélné (v pevných látkách případně také příčné) mechanické vlnění v látkovém prostředí, které je schopno vyvolat v lidském uchu sluchový vjem. Mikrofon, jak se také toto zařízení označuje, pracuje na principu přeměny mechanických kmitů akustického vlnění na elektrický signál. Intenzitu signálu může určovat jak v rozsahu, který vnímá lidské ucho, jehož jednotkou je 1 dBA (adjusted decibel), tak i rozsahu mimo toto omezení s jednotkou 1 dB (decibel). Maximální hodnotou, kterou lze tímto senzorem zachytit je 90 dB. Hladina zvuku je prezentována škálou od 0% do 100%. Oficiální popis udává, že přibližně do hodnoty 30% se jedná o zvuk běžné konverzace, zatímco od
15
této hranice do 100% jde již o hlučný hovor či velmi hlasitou hudbu. To děla ze zvukového senzoru neefektivní nástroj při detekci slabých zvuků.
obrázek 6 Senzor zvuku [http://www.rapidonline.com/netalogue/zoomed/Large/70127601.jpg]
Senzor světla (light sensor) Jeho součástmi jsou fotoelektricky citlivý prvek fototranzistor a zdroj světelného záření, který představuje LED (elektroluminiscenční) dioda . Hodnoty jsou zde interpretovány jako percentuální rozsah světlosti od 0% (tma) do 100% (velmi světlé prostředí). Hodnoty mezi těmito hranicemi vnímá robot jako odstíny šedi. S vypnutou LED diodou senzor snímá pouze intenzitu světla v jeho okolí. Při aktivitě diody je pak měřenou veličinou světlost snímané plochy. Přestože senzor není schopen přímo určit barvu povrchu, je možné ji odhadnout dle stupně šedi, do které bude signál prezentován. Při určování barvy světelným senzorem je ovšem třeba počítat s faktem, že výsledek kromě barvy plochy ovlivňuje i její materiál, vzdálenost od senzoru či vnější světelné zdroje.
16
obrázek 7 Senzor světla [http://www.rapidonline.com/netalogue/zoomed/Large/70127401.jpg]
Ultrazvukový senzor (ultrasonic sensor) Toto zařízení, označované taky jako sonar (SOund Navigation And Ranging), vychází z principu funkce radaru. Detekce objektů a jejich vzdálenost od zdroje je měřena pomocí ultrazvukového vlnění vyslaného senzorem. To se následně od objektu odrazí zpět do zdroje a vzdálenost je vypočítána z času, který uplynul za dobu vyslání a návratu signálu. V případě nezachycení zpětného vlnění je pak detekována informace o volném prostoru v dosahu senzoru. Měří vzdálenost v centimetrech a palcích. Rozsah senzoru je od 0 cm do 255 cm (cca 100 palců) s přesností na 3cm (cca 1,1 palce) [5][9][14].
17
obrázek 8 Ultrazvukový senzor [http://www.robotshop.ca/Images/big/en/legomindstorms-nxt-ultrasonic-sensor.jpg]
4.4.2 Senzory externích firem Společnost Lego se rozhodla již v počátcích vývoje Mindstorms systémů spolupracovat s externími firmami a institucemi. Tato kooperace se postupem času rozrůstala a dala vzniknout celé řadě senzorů, které byly navrženy a prodávány firmami nespadající pod společnost Lego. Nejvýznamější z nich jsou HiTechnic vyrábějící senzory podobné standardním, Vernier, jež vyvinula senzorový adaptér pro systém NXT a k němu přibližně třicet senzorů umožňující podrobnější měření fyzikálních veličin a Mindsensors.com, která kromě senzorů vyrábí i ovladače NXT systému a vlastní servomotory.
18
4.4.3 Ukázka produktů firmy HiTechnic
obrázek 9 Typický design senzoru firmy HiTechnic [6]
NXT Gyroskop Gyroskop je zařízení užívané k navigaci
a určování směru. Gyroskop je
vlastně setrvačník, těžké kolo otáčející se v ložiscích s nepatrným třením. Otáčející se setrvačník má moment hybnosti, takže jeho osa bez působení vnějších sil udržuje stále stejný směr. Osa měření je v případě tohoto analogového senzoru vedena svisle ke černému krytu (viz obrázek). Dokáže zjišťovat úhel a směr rotace v rozsahu cca 360° za sekundu. Reaguje na hodnoty odpovídající rychlosti do 300 otáček za sekundu. NXT Kompas Senzor určující polohu vzhledem k magnetickému poli Země v rozsahu 0° 359° a to s frekvencí 100 záznamů za sekundu. Může pracovat ve dvou režimech. V režimu načítání zaznamenává hodnoty magnetického pole a využívá je pro vykonávání programu, v režimu kalibrace je možná kalibrace magnetického pole rušivých zdrojů, jako jsou například motory. NXT Senzor akcelerace Měří zrychlení ve třech osách (x, y, z). Rozsah měřeného zrychlení je –2g až +2g. Pro každý směr je frekvence záznamů až 100 za sekundu. Nastavitelná je hodnota ve směru osy x.
19
NXT Senzor pro vyhledávání IR signálu a IR fotbalový míč Senzor je určen k realizaci fotbalu robotů. Používá se v kombinaci s IR fotbalovým míčem. Zorné pole senzoru je 135°. Pokud se míč nachází vpravo, bude indikována hodnota 9, v přímém směru 5 a vlevo 1. Pokud se v zorném poli nenachází, indikuje hodnotu 0. IR fotbalový míč má průměr 75 mm. Obsahuje 20 IR LED diod a o napájení se starají čtyři AAA baterie [6].
obrázek 10 IR fotbalový míč [6]
20
4.4.4 Ukázka produktů firmy Vernier NXT Senzor Adaptér Umožňuje připojení senzorů firmy Vernier, kterých je v současné době kolem třiceti druhů.
obrázek 11 NXT Senzor Adaptér [7]
Senzor pro měření vlhkosti půdy (soil moisture sensor) Zařízení pro měření podílu vody v půdě. Výsledek je uváděn v procentech. Umožňuje také monitoring stavu vlhkosti v půdě po určitou dobu.
obrázek 12 Senzor pro měření vlhkosti půdy [7]
21
Senzor pro měření teploty (Thermocouple) Tento senzor dokáže snímat teploty v rozmezí -200°C - 1400°C. Udávaná přesnost při nejvyšších výrobcem garantovaných teplotách je přibližně 15°C [7].
obrázek 13 Senzor pro měření teploty [7]
4.4.5 Ukázka produktů firmy Mindsensors.com Obrazový subsystém (Vision subsystem) Kamera zpracovává záznam obrazu v reálném čase. Použít ji lze na sledování vodící linie nebo maximálně osmi různobarevných objektů. Kromě klasického připojení přes NXT kostku lze kameru použít i v zapojení přímo přes PC USB kabelem.
22
obrázek 14 Obrazový subsystém [8]
Rozhraní pro připojení ovladače (Controller interface for NXT) S tímto zařízením a kompatibilním gamepadem 2.4GHZ RF Wireless Controller pro playstation 2 je možno přímo ovládat robota. Ovladač disponuje dvěma analogovými páčkami a šestnácti programovatelnými tlačítky.
obrázek 15 Rozhraní pro připojení ovladače a ovladač [8]
Senzor reálného času (Realtime Clock for NXT) Jedná se o hodiny připojitelné k NXT kostce. Na rozdíl od jiných NXT periferií obsahuje vlastní zdroj energie, není tedy nutné čas po každém vypnutí znovu
23
nastavovat. Životnost baterie je garantována na 10 let a zvládá udávat čas i datum do roku 2100, do něhož zvládá počítat s přestupnými roky [8].
obrázek 16 Senzor reálného času [8]
24
5. Software k programování NXT Základním softwarovým vybavením, které NXT technologie užívá je operační systém NXT kostky. Je nainstalován již během výroby do interní flash paměti, jedná se tedy o firmware. Operačním systémem se rozumí základní programové vybavení, které začíná svou činnost při startu zařízení a zůstává aktivní až do jeho vypnutí. Operační systém zajišťuje potřebné operační prostředí pro běh aplikací. Zahrnuje obsluhu hardwaru (senzorů, servomotorů, displej, atd.), řízení přístupu ke komunikačním tokům, souborový systém a další. Správa souborů operačního systému NXT dovoluje uchovat maximálně 64 souborů. Přístup k nim je prováděn přes jednoduché menu zobrazované na LCD displeji. Zdrojový kód je po zkompilování v paměti uložen ve formátu vhodném ke spuštění mikroprocesorem NXT kostky. Tento formát se nazývá bytecode. Jedná se o sérii instrukcí obsahujících popis chování programu, které jsou za pomocí interpretu v reálném čase převáděny na strojový kód. Ten představuje instrukce jako sekvenci bitů a lze ji tedy již zpracovat mikroprocesorem [1] [10].
obrázek 17 Rozvržení menu NXT kostky
25
5.1 NXT-G Jedná se o primární programovací prostředí NXT systému. Výrobcem je přímo společnost Lego ve spolupráci s tvůrcem softwaru Labview, firmou National Instruments. Právě na bázi tohoto grafického prostředí zaměřeného na měření a analýzu dat je postaven i NXT-G. Pracuje na principu umísťování a spojování ikon, které prezentují funkce robota. Při vývoji softwaru bylo dbáno na jeho intuitivnost a jednoduchost. Jeho zvládnutí tudíž není podmíněno téměř žádnými předchozími znalostmi programování. Tento nástroj je ideální při konstrukci jednoduchých programů řízení a při seznamování s systémem NXT. Značně komplikované je ovšem vytváření komplikovanějších struktur v tomto prostředí. V tomto případě je schéma značně nepřehledné. Výsledné programy zabírají také až několikanásobně větší podíl místa na disku [1].
26
obrázek 18 Ukázka prostředí NXT-G [https://www.entwickler.com/zonen/magazine/onlineartikel/pspic/picture_file/31/jentsch_l e48918ea5897d5.jpg]
5.2 LabVIEW Toolkit for Lego Mindstorms NXT 2.0 Tento
přídavek
přináší
do
grafického
prostředí
Labview
funkce
k programování a ovládání robota NXT. Pro jeho instalaci je nutno mít původní software National Instruments Labview verze 7.1 nebo vyšší. Labview (Laboratory Virtual Instrumentation Engineering Workbench) vychází z původního návrhu grafického prostředí pojmenovaného G. Poprvé bylo podobného systému použito u počítačů Apple Macintosh v roce 1986.
27
Vývojové prostředí Labview je specializováno především na: •
sběr dat a řízení přístrojů
•
automatické testování
•
průmyslová měření
•
řízení strojů
Programování v labview funguje na principu dataflow (tok dat). Vstupní data postupně procházejí přes jednotlivé uzly v blokovém diagramu, které plní zadané funkce a posílají data do dalších uzlů. Jednotlivé větve dat lze vést paralelně do více uzlů a zpracovávat zvlášť.
obrázek 19 Ukázka blokového diagramu prostředí Labview [http://www.kteam.com/images/products/labview-wiring.gif]
Po zpracování programu v blokovém diagramu lze sledovat jeho běh na čelním panelu. Ten obsahuje především výstupy měřících a analytických funkcí
28
umístěných v blokovém diagramu. Také umožňuje přidání prostředků pro řízení běhu programu v reálném čase [11].
obrázek 20 Ukázka čelního panelu prostředí Labview [http://datataker.com/products/Pics/LabVIEW_weathervi_H.jpg]
5.3 RobotC Tento jazyk pro psaní a ladění programů NXT je na bázi jazyku C. Určen je již pro pokročilejší programátory, ale lze jej využít i jako výuku syntaxe jazyka C, která zůstala zachována. Jako jediný specializovaný jazyk tohoto zaměření obsahuje komplexní debugger [5].
29
obrázek 21 Ukázka kódu v jazyce RobotC [http://www.robotc.net/content/lego_quick/media/documents/movement.pdf]
5.4 Lego Mindstorms NXT toolkit for Matlab and Simulink Podobně jako v toolkitu k jazyku Labview je toto pouze přídavek ke standardnímu prostředí jazyka Matlab umožňující ovládání NXT robota. Matlab (matrix laboratory) je programové prostředí a skriptovací programovací jazyk pro vědeckotechnické numerické výpočty, modelování, návrhy algoritmů, počítačové simulace, analýzu a prezentaci dat, měření a zpracování signálů, návrhy řídicích a komunikačních systémů. Obsahuje nástavbu Simulink, program pro simulaci a modelování dynamických systémů, který využívá algoritmy Matlabu pro numerické řešení především nelineárních diferenciálních rovnic. Odvození názvu z matrix laboratory (laboratoř s maticemi) je náznakem zaměření tohoto prostředí. Základní strukturou při práci v Matlabu jsou totiž matice. Jazyk vychází ze staršího jazyka Fortran (1957) [12].
30
obrázek 22 Ukázka prostředí Matlab [http://en.wikipedia.org/wiki/MATLAB]
31
6. Praktická část Sestavení NXT robota pro praktickou část této práce vychází z rozvržení, pro které se ujalo označení Tribot. Jak již název napovídá jedná se o robota pohybujícího se na třech kolech. Dvě přední jsou napojena na servomotory a zajišťují pohyb robota. Vzadu je podpůrné kolo bez pohonu, za kterým je připojen detektor dotyku pro případ nárazu při couvání. NXT kostka je umístěna nad servomotory a to tak, ze je dobrý přístup ke všem ovládacím prvkům a portům. Vpředu je vysunut senzor světla, snímací plochou nakloněn k zemi. To umožňuje robotu při pohybu kopírování směru vodící linie. Nad celou konstrukcí je v dostatečné výšce zabudován ultrazvukový senzor pro detekci překážek s dostatečnou volností pro rozhled do stran. Pro případ nutnosti zakomponování zvukových povelů do programu je na levé straně připojen ještě zvukový senzor. Robot je tedy osazen všemi senzory standardní sady. V případě potřeby je možno sestavu jednoduše upravit nebo doplnit o senzory některé z externích firem, které nabízejí mnohdy větší přesnost. Nyní však jsou současné komponenty dostatečnými nástroji k demonstraci možností robota řady NXT. K propojení NXT kostky k PC bude v úloze použito technologie USB. Připojení přes bezdrátovou technologii bluetooth se na první pohled jeví jako jednodušší ovšem při komunikaci často dochází k problémům. Další nevýhodou je také špatná kompatibilita mezi NXT systémem a většinou BT adaptérů.
32
obrázek 23 Konstrukce použitá pro praktickou část práce
Jako programovací prostředí poslouží dodávaný software od firmy Lego. Úloha tak otestuje možnosti standardní dodávané sady bez externích softwarových i hardwarových prostředků.
Základní požadavky na praktickou úlohu •
řízení směru a rychlosti pohybu robota
•
snímání hodnot z ultrazvukového senzoru pro zaznamenání překážek a zajištění změny směru v případě, že leží v kolizní dráze
•
při couvání detekce sepnutí dotykového senzoru pro případ kolize
•
zobrazení zaznamenaných překážek a dráhy pohybu na LCD displeji
33
6.1 Řešení zadané úlohy Úloha, která byla vybraná pro ukázku možností sady Lego Mindstorms NXT je kombinací algoritmů pro vyhledávání cesty mezi překážkami (pathfinding) a zmapování určitého prostoru (mapping). Popis úlohy Program pracuje zcela autonomně, stačí jej tedy zkompilovat do flash paměti NXT kostky a další spojení s PC není nutné. Počáteční dvouvteřinová pauza po spuštění je dostatečnou prodlevou k umístění robota do požadované výchozí pozice. Kód je pak tvořen dvěma samostatnými větvemi. První je tvořena nekonečnou smyčkou příkazů a funguje po celou dobu běhu programu. Zajišťuje detekci pozice robota a v reálném čase tuto pozici promítá na LCD displeji NXT kostky jako jednotlivé body tvořící ovšem souvislou linii. Výsledkem je tedy jednoduchá trajektorie pohybu robota zobrazená ve dvourozměrném prostoru.
obrázek 24 Část schématu zajišťující vykreslení trajektorie
Druhá větev uzavírá několik struktur do smyčky, jejíž běh je podmíněn stálou hodnotou 0 u senzoru doteku. Smyčka tedy probíhá dokud není senzor stlačen. Vnitřní část smyčky obsahuje instrukce o pohybu robota, který je podmíněn volným
prostorem
před
ultrazvukovým
senzorem.
Snímaná
hodnota
vzdálenosti překážky je nastavena na 25 cm. Vzhledem k tomu, že senzor je
34
umístěn spíše v zadní části konstrukce dává reálně program možnost detekce překážky položené necelých 20 cm před přídí robota, což je dostatečná vzdálenost pro změnu směru jízdy. Ta následuje po každé detekci překážky. Zde se také ukazuje drobná nevýhoda zvolené konstrukce robota. Spočívá v usazení ultrazvukového senzoru na úplný vrchol robota. Nelze jím tedy zaznamenat překážku umístěnou příliš nízko. Po zachycení překážky přejde program na vnořenou smyčku, která nejdříve uloží její souřadnice a poté zobrazí polohu na LCD displeji. Jednotný symbol pro překážky je kružnice o malém průměru. Jakmile je překážka zanesena do tvořené mapy přejde algoritmus k instrukci sloužící ke změně směru. Tím jsou splněny veškeré příkazy, které obsahuje smyčka kladného výsledku při snímání ultrazvukovým senzorem. Následně se běh programu vrací před testování tohoto jevu a vše probíhá znovu než dojde k přerušení.
obrázek 25 Část schématu zajišťující vykreslení polohy překážky
Konec programu je obstarán jednoduše systémem vypínače. Při spuštění programu je senzor doteku nastaven na rozpojený stav, tedy hodnotu 0. Obě větve programu pracují dokud senzor zůstává v počátečním stavu. Jednorázové sepnutí senzoru, prezentované krátkodobou změnou hodnoty senzoru z 0 na 1, tedy ukončuje aktivní chod algoritmu. Na LCD displeji však zůstane mapa detekovaných objektů a trasa pohybu robota v průběhu mapování okolí.
35
6.2 Zhodnocení úlohy Praktická část práce ukázala řešení problému, s nímž se obyčejně robotika potýká. I přes menší nedostatek návrhu konstrukce pracuje systém v duchu zadání. Senzory standardní sady se na první pohled jevily chatrně avšak fungují bez problémů a na většinu výukových aplikací jsou zcela dostačující. Kritika tedy padá především na zvolené vývojové prostředí, které přes svou intuitivnost je při komplexnějším projektu dost nepřehledné. Možnosti rozšíření této úlohy se dají hledat především v detailnějším nastavení řízení motorů nebo vykreslování zmapované oblasti do souboru v PC. Zdrojový kód úlohy je uložen na CD, které je součástí práce.
36
7. Závěr Záměrem práce bylo popsat technologii Lego Mindstorms NXT a nastínit možnosti jejího využití. Teoretická část se po krátkém pohledu do historie vývoje tohoto systému věnuje představení hardwarových a následně i softwarových prostředků souvisejících s danou tematikou. Praktická část dává příklad využití těchto prostředků pro smysluplné účely. Málokdo se asi po prvním seznámení se sadou Lego Mindstorms NXT ubrání myšlence, že se jedná pouze o nákladnou hračku pro nejnižší věkové skupiny. Bližší pohled však odhalí, že se jedná o komplexní a lehce pochopitelný prostředek pro práci v oblasti robotiky, především pro seznámení s tímto odvětvím a jeho výuku. O tomto faktu svědčí velká popularita a rozšířenost na technicky zaměřených školách. Velkou výhodou je velice slušná podpora výrobců hardwaru a softwarových vývojářů. Především nabídka různých specializovaných senzorů dává systému NXT téměř neomezené možnosti v oblasti měření, zpracování a analýzy dat. Využití prohlubuje i široká škála dostupných vývojových prostředí od dodávaného softwaru, přes toolkity do zavedených prostředí jako Labview a Matlab až po klony známých jazyků C, Java apod. Není tedy třeba se učit kompletně nové prostředí pokud má uživatel zkušenosti s některým jazykem, ze kterého specializovaný software vychází. Systém Lego Mindstorms NXT se během psaní této práce ukázal jako výborný prostředek pro výuku. Zejména práce na praktické části ukázala jeho silné, ovšem taky některé slabé stránky. Ty však nebyly natolik závažné, aby výrazněji znepříjemňovali, či dokonce znemožňovali dokončení programu.
37
8. Literatura [1]
KELLY, James Floyd. Lego Mindstorms NXT-G Programming Guide. [s.l.] : [s.n.], 2007. 196 s. ISBN 1590598717.
[2]
PERDUE, David J. The Unofficial LEGO Mindstorms NXT Inventor\'s Guide. [s.l.] : [s.n.], 2007. 296 s. ISBN 1593271549.
[3]
LEGO MINDSTORMS History [online]. 2008 [cit. 2009-05-15]. Dostupný z WWW:
.
[4]
Lego Mindstorms [online]. 2009 [cit. 2009-05-18]. Dostupný z WWW: .
[5]
Lego Mindstorms NXT [online]. 2009 [cit. 2009-05-18]. Dostupný z WWW: .
[6]
HiTechnic senzory k LEGO® MINDSTORMS® NXT [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[7]
Vernier sensors [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[8]
Sensors and Sensor Kits for MINDSTORMS NXT [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[9]
NXT Technology Owerview [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[10]
NXT Memory and File System Organization [online]. 2006 [cit. 200905-20]. Dostupný z WWW: .
38
[11]
LabVIEW [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[12]
MATLAB [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[13]
Displej z tekutých krystalů [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
[14]
Hardware Developer Kit [online]. 2009 [cit. 2009-05-20]. Dostupný z WWW: .
39