• No results found

NÁVRH MODELOVÉ APLIKACE VYUŽITÍ ROBOTA LEGO MINDSTORMS NXT V PROSTŘEDÍ LABVIEW

N/A
N/A
Protected

Academic year: 2022

Share "NÁVRH MODELOVÉ APLIKACE VYUŽITÍ ROBOTA LEGO MINDSTORMS NXT V PROSTŘEDÍ LABVIEW"

Copied!
39
0
0

Loading.... (view fulltext now)

Full text

(1)

NÁVRH MODELOVÉ APLIKACE VYUŽITÍ ROBOTA LEGO MINDSTORMS NXT

V PROSTŘEDÍ LABVIEW

Bakalářská práce

Studijní program: B2612 – Elektrotechnika a informatika Studijní obor: 1802R022 – Informatika a logistika

Autor práce: Jiří Šlechta

Vedoucí práce: doc. Ing. Milan Kolář, CSc.

Liberec 2014

(2)
(3)
(4)
(5)

Poděkování

Tímto bych chtěl poděkovat všem, kteří se na tvorbě této bakalářské práce podíleli. Zvláště pak konzultantovi Ing. Jaroslavu Vlachovi, Ph.D. a vedoucímu Doc.

Ing. Milanu Kolářovi, CSc za pomoc při řešení. Dále také firmě Preciosa a.s. za vypůjčení potřebného vybavení.

(6)

Abstrakt

Tato bakalářská práce nás má blíže seznámit s robotem MINDSTORMS NXT od firmy Lego a jeho programováním ve vývojovém prostředí LabVIEW. V rešeršní části rozebírá jak robota a jeho součástky, tak LabVIEW a možnosti programování v něm.

V praktické části se zabývá vývojem modelové aplikace pro malého robota Lego. Tato aplikace je příkladem využití PID regulátoru pro řízení vozidla Segway za pomoci světelného senzoru.

Klíčová slova: LabVIEW, Lego MINDSTORMS NXT, PID regulátor, Segway

Abstract

This bachelor thesis is supposed to learn us more about Lego MINDSTORMS NXT robot and programming it in LabVIEW development enviroment. In the theoretical part of the thesis is described robot, it’s parts and ways how to program in LabVIEW.

The practical part is focused on development of application design of use Lego robot. This application is an example of use a PID controller to control the Segway vehicle using a light sensor.

Keywords: LabVIEW, Lego MINDSTORMS NXT, PID controller, Segway

(7)

6

Obsah

1 ÚVOD ... 8

2 NATIONAL INSTRUMENTS... 9

2.1 LABVIEW ... 9

2.1.1 Historie ... 10

2.1.2 Uživatelské prostředí... 10

2.1.3 Palety Controls a Functions ... 12

2.1.4 LabVIEW pro LEGO MINDSTORMS NXT ... 14

3 LEGO ... 15

3.1 MINDSTORMSNXT ... 15

3.1.1 Základní informace ... 15

3.1.2 Součástky, senzory ... 16

4 MODELOVÁ APLIKACE V PROSTŘEDÍ LABVIEW ... 22

4.1 FUNKCE PROGRAMU ... 23

4.1.1 PID regulátor ... 23

4.2 STAVBA ROBOTA ... 24

4.3 PROGRAM ... 25

4.3.1 P složka ... 27

4.3.2 I složka ... 28

4.3.3 D složka ... 29

4.4 VÝHODY A NEVÝHODY SESTAVY A PROGRAMU ... 30

5 ZÁVĚR ... 32

POUŽITÁ LITERATURA A ZDROJE ... 33

PŘÍLOHY ... 35

PŘÍLOHA A VERZE LABVIEW SDATY VYDÁNÍ ... 35

PŘÍLOHA B BLOKOVÝ DIAGRAM PROGRAMU SEGWAY ... 37

PŘÍLOHA C FOTOGRAFIE ROBOTA ... 38

(8)

7

Seznam obrázků

Obrázek 1: Čelní panel – příklad kalkulačka ... 10

Obrázek 2: Blokový diagram programu kalkulačka ... 11

Obrázek 3: Nástrojová lišta v blokovém diagramu ... 12

Obrázek 4: Paleta Controls a Functions ... 13

Obrázek 5: Rozdíl mezi NXT Toolkit a NXT Module ... 14

Obrázek 6: Řídicí jednotka ... 16

Obrázek 7: Servomotor ... 17

Obrázek 8: Dotykový senzor ... 18

Obrázek 9: Světelný senzor ... 18

Obrázek 10: Zvukový senzor ... 19

Obrázek 11: Ultrasonický senzor ... 19

Obrázek 12: Čidlo Vernier ... 21

Obrázek 13 Originální Segway PT ... 22

Obrázek 14: Obecné schéma zpětnovazebního PID regulátoru ... 24

Obrázek 15: Sestavený robot ... 25

Obrázek 16: Front panel aplikace ... 26

Obrázek 17: Načtení hodnoty ze senzoru ... 27

Obrázek 18: Schéma SubVI proporcionální složky ... 28

Obrázek 19: Schéma SubVI integrační složky ... 28

Obrázek 20: Schéma SubVI derivační složky... 29

Obrázek 21: Rozhodování o směru pádu ... 30

(9)

8

1 Úvod

V dnešní době se bere slovo robot jako samozřejmost. Většina ví, že ho poprvé použil ve své divadelní hře R.U.R. (Rossum’s Universal Robots) Karel Čapek již v roce 1920. Málo kdo však ví, že právě toto slovo nevymyslel sám spisovatel, nýbrž jeho bratr a malíř Josef.

Od vzniku tohoto slova uplynulo již mnoho let a slovo robot nabylo zcela nových rozměrů. Roboti se používají téměř všude. Ať jde o kuchyňského robota nebo humanoida s umělou inteligencí. Jedno mají ale všichni společné. Usnadňují, ulehčují a zrychlují práci lidem.

Na rozvoj robotiky, vědy, zabývající se roboty a jejich návrhem, zareagovala i dánská firma hraček Lego, když na svůj trh uvedla již v roce 1998 první verzi programovatelné stavebnice. Společnost Lego uvedla na trh i verzi MINDSTORMS NXT, kterou se zabývá právě tato bakalářská práce.

Tato stavebnice je dodávána s vlastním grafickým programovacím prostředím zvané NXT-G. Robot však může být navržen i mnoha dalšími prostředky jako brickOS, který je založen na jazyce C, nebo leJOS, využívající jazyk Java. Jednou z možností, jak robota naprogramovat, je i využití prostředí LabVIEW, které bylo vytvořeno stejnou firmou jako NXT-G, firmou National Instruments. Právě pomocí programu LabVIEW byla navržena modelová aplikace pro tuto bakalářskou práci.

V modelové aplikaci je navržen robot, který balancuje na dvou paralelních kolečkách, podobně jako elektrický dopravní prostředek Segway. Robot udržuje svou stabilitu pomocí implementovaného PID regulátoru.

(10)

9

2 National Instruments

Společnost National Instruments (dále také jako NI) byla založena v roce 1976 Jamesem Truchardem, Billem Nowlinem a Jeffem Kodoskym (označován jako „otec“

LabVIEW) na Texaské univerzitě ve městě Austin. S počátečním kapitálem deset tisíc amerických dolarů se společnost vyšplhala až na špičku mezi firmami zabývajícími se automatizačními nástroji a softwarem a v roce 2012 měla již příjmy přes jednu miliardu dolarů [1].

Mezi nejznámější produkty NI patří grafické vývojové prostředí LabVIEW (Laboratory Virtual Instrument Engineering Workbench), které již po dobu dvaceti sedmi let vytváří revoluci ve vývoji testovacích, měřicích a řídicích aplikací. Mezi další softwarové nástroje od National Instruments patří Multisim, což je nástroj pro návrh a simulaci modelů, NI TestStand pro správu testů nebo například Vision Builder. Dále NI vyrábí také technické prostředky (hardware), kam se řadí měřicí karty pro sběr dat (DAQ), modulární přístroje, do kterých patří osciloskopy, generátory signálu atd. [2]

2.1 LabVIEW

LabVIEW je vývojové prostředí, využívající tzv. G-jazyk. Na rozdíl od jiných programovacích jazyků, jako například C#, JAVA, kde je zdrojovým kódem text, je v tomto jazyce zdrojovým kódem grafická podoba programového řešení. Jedná se tedy o grafické programování, kde se za pomoci polohovacích nástrojů počítače (např. myši) vkládají a propojují různé funkční bloky, ať už jednodušší a rychlé funkce, nebo složité podprogramy, sloužící pro matematickou analýzu a statistiku. Výhody tohoto způsobu programování spočívají v jeho přehlednosti. Nevýhodou pak může být rychlost tohoto jazyka a v rozsáhlejších programech pak může docházet k nepřehlednosti z důvodu mnoha funkcí a jejich spojení. [3]

Hlavním cílem této metody, nazývané virtuální instrumentace, je nahrazení finančně a časově náročných využití hardwaru virtuálním řešením, za pomoci softwaru.

Toto řešení umožňuje rychlý vývoj nových aplikací a provádění změn v konfiguraci, což by bylo v případě realizace technickými prostředky velice nákladné. LabVIEW je primárně zaměřeno na problémy z oblasti měření a sběru dat. [4]

(11)

10

2.1.1 Historie

Jako mnoho úspěšných firem, tak i firma National Insruments začínala svůj vývoj u jednoho ze zakladatelů. Zde to bylo u J. Trucharda, pozdějšího prezidenta NI.

V roce 1983 začíná Jeff Kodosky pracovat na LabVIEW a první verze byla vytvořena již v roce 1986, avšak pracovala pouze na počítačích od firmy Apple Macintosh. V roce 1990 byla vytvořena verze LabVIEW 2, stále však pouze pro MacOS.

Až v roce 1992 představili pracovníci NI verzi pro Windows a Sun (UNIX) a od té doby LabVIEW prošlo již mnohými změnami a nové verze vycházejí téměř každoročně. Nejaktuálnější verze tohoto softwaru je LabVIEW 2013, která byla vydána v srpnu roku 2013. [5] Tabulku všech verzí LabVIEW najdete i s daty vydání v příloze A.

2.1.2 Uživatelské prostředí

Uživatelské rozhraní LabVIEW je rozděleno na dvě základní části. Na čelní panel (angl. Front Panel) a na blokový diagram (angl. Block Diagram).

Čelní panel

Čelní panel vytváří rozhraní mezi uživatelem a aplikací. Mohou zde být umístěny ovládací prvky, grafické výstupy, kontrolky a mnoho dalších objektů, ať už ovládacího nebo informačního charakteru, které lze libovolným způsobem upravovat.

Viditelné prvky z čelního panelu lze obecně dělit do dvou skupin: vstupy a výstupy.

Obrázek 1: Čelní panel – příklad kalkulačka Na Obrázku 1 vidíme tři vstupy v podobě posuvných ovladačů a jeden výstup ve formě ručičkového zobrazovače. Tento příklad reprezentuje jednoduchou kalkulačku,

(12)

11

kde do proměnných A a B vložíme libovolné reálné číslo, z volby „funkce“ vybereme požadovanou funkci kalkulačky a na indikátoru „výsledek“ se automaticky zobrazí hodnota výsledné funkce. Dále se zde objevuje také tlačítko „STOP“, které celou aplikaci ukončí.

Dále na obrazovce čelního panelu můžeme najít také nástrojovou lištu, kde se nacházejí hlavní ovládací a indikační prvky. Více o nástrojové liště v následující kapitole (Blokový diagram).

Blokový diagram

V druhé části rozhraní LabVIEW, blokovém diagramu, uživatel definuje algoritmus programu. Programátor vkládá jednotlivé grafické objekty, které tvoří zdrojový kód aplikace a propojuje je se vstupy a výstupy, definovanými na čelním panelu.

Obrázek 2: Blokový diagram programu kalkulačka

Na Obrázku 2 je zobrazen blokový diagram uvedeného příkladu kalkulačka.

Skládá se ze tří vstupů, case smyčky, for smyčky a výstupu. Můžeme vidět, že vstup

„funkce“ je zde napojen na rozhodovací case smyčku, což rozhoduje o tom, jaká funkce kalkulačky bude realizována při výpočtu.

(13)

12

Nástrojová lišta, nacházející se v blokovém diagramu, obsahuje o několik prvků více než lišta z čelního panelu. Jedná se o prvky krokování. Její příklad vidíme na Obrázku 3.

Obrázek 3: Nástrojová lišta v blokovém diagramu

Pro spuštění programu je třeba stisknout tlačítko Run. Pro opakovaný běh stiskneme tlačítko Run Continuously. Pro pozastavení programu stačí stisknout tlačítko Pause a po jeho opětovném stlačení se program znovu spustí.

Spustíme-li úspěšně program, zpřístupní se nám i tlačítko Abort, které program okamžitě ukončí. Avšak není doporučováno programy vypínat tímto způsobem, jelikož bychom se mohli dostat do neurčitého stavu a museli bychom v lepším případě restartovat pouze vývojové prostředí LabVIEW, v horším celý počítač.

Také se zde nacházejí tlačítka pro krokování, potřebujeme-li program ladit, a dále také tlačítka, která podle potřeby zarovnají, rozdělí nebo změní velikost jednotlivých bloků.

2.1.3 Palety Controls a Functions

V LabVIEW jsou palety grafické panely, které obsahují různé nástroje a prvky, pomocí nichž vytváříme jak uživatelské prostředí, tak i programujeme aplikace. Jsou tudíž nedílnou součástí tohoto vývojového prostředí.

Celkově se v LabVIEW vyskytují dva základní druhy palet:

 Paleta Controls

 Paleta Functions

Run Run

Continuously

Abort

Pause

„krokování“

(14)

13

Paleta Controls

Tuto paletu vyvoláme stisknutím pravého tlačítka na čelním panelu. Obsah palety se liší podle verze nainstalované knihovny.

Slouží pro vkládání řídicích prvků, grafiky a indikátorů na čelní panel a díky této paletě vytváříme uživatelské prostředí programu. Jelikož se těchto ovládacích prvků v aplikaci vyskytuje velké množství, jsou dále děleny na další subpalety.

Paleta Functions

Tato paleta slouží pro programování samotného programu a zobrazí se po kliknutí pravého tlačítka myši na blokovém diagramu. Také tato paleta se skládá z ikon, reprezentující další subpalety. Práce s touto paletou se jen velmi málo liší od práce s paletou Controls.

Obě palety můžeme vidět na Obrázku 4, kde se paleta Controls nachází vlevo.

Obrázek 4: Paleta Controls a Functions

(15)

14

2.1.4 LabVIEW pro LEGO MINDSTORMS NXT

Pomocí LabVIEW lze naprogramovat i malého robota MINDSTORMS. Do základní verze LabVIEW je pro to potřeba nainstalovat NXT Module. Další možností je instalace LabVIEW verze určené přímo pro práci s Lego MINDSTORMS. Instalací přídavného modulu přibyla do palet Functions i Controls subpaleta “NXT Robotics” pro ovládání robota MINDSTORMS. Předchůdcem NXT Module byl NXT Toolkit, který však byl určen pro starší verze LabVIEW (8.2.1 a nižší) a programování pomocí tohoto nástroje bylo obtížnější, než je tomu u novější verze. Na Obrázku 5 můžeme vidět velmi odlišné způsoby programování. Vlevo zastaralý NXT Toolkit, vpravo NXT Module.

Z Obrázku 5 je patrné, že NXT Module je mnohem jednodušší a přehlednější než starší Toolkit.

Obrázek 5: Rozdíl mezi NXT Toolkit a NXT Module [3]

(16)

15

3 Lego

LEGO Group založil v roce 1932 Ole Kirk Kristiansen. Hlavní představitel této firmy, LEGO kostka, byla ve své stávající podobě představena až v roce 1958. Název LEGO je zkratka dánských slov „leg godt“ (do češtiny lze přeložit jako „dobrou hru“).

Firma prošla za posledních 80 let výraznými změnami. Nejdříve to byla jen malá tesařská dílna, nyní je to nadnárodní podnik, mající třetí nejvyšší obrat mezi výrobci hraček. [6]

Skupina LEGO vyrobila již mnoho produktů, ať už jde například o série Technic, nebo Star Wars, tak se také zaměřila na obor elektroniky a robotiky. V roce 2006 [7] uvedla na trh sérii MINDSTORMS, ze které právě pochází také soustava MINDSTORMS NXT 1.0, kterou se zabývá tato bakalářská práce.

3.1 MINDSTORMS NXT

3.1.1 Základní informace

Verze NXT 1.0 nahradila první generaci RCX (Robotics Invention System), která byla za spolupráce MIT (Massachusetts Institute of Technology) trhu představena již v roce 1998.

Verze NXT 2.0 nahradila 1.0 v roce 2009, avšak lišila se pouze počtem dodávaných dílů a světelným senzorem, který byl nahrazen senzorem barevným, rozpoznávající šest barev (bílou, žlutou, červenou, zelenou, modrou a černou). [3]

Bakalářská práce se zabývá verzí Education Base Set (#9797), ve které je obsaženo:

 1x řídící jednotka

 3x servomotor

 1x světelný senzor

 1x ultrasonický senzor

 1x zvukový senzor

 2x dotykový senzor

(17)

16

Nejnovějším produktem ze série MINDSTORMS je EV3, ve kterém součástky dostávají nový design. Obsahuje mimo velkých motorů i motor střední a navíc také infračervený senzor a vzdálený infračervený maják. Ani řídicí jednotka se nevyhnula změnám a je nyní mnohem výkonnější.

3.1.2 Součástky, senzory

Řídicí jednotka

Řídicí jednotka tvoří jádro celé soustavy. Díky ní můžeme ovládat servomotory a dostávat impulsy od jednotlivých senzorů, které lze dále vyhodnocovat. Na první pohled můžeme na kostce vidět tři výstupní porty pro servomotory, označeny písmeny A, B a C, displej, čtyři ovládací tlačítka, čtyři vstupní porty a jeden komunikační USB konektor, pomocí kterého lze s jednotkou komunikovat. Komunikovat lze také pomocí Bluetooth v2.0.

Tlačítka ve tvaru šipek slouží pro navigaci v menu, oranžové tlačítko pro zapnutí a potvrzení volby a obdélníkové slouží pro návrat zpět, popřípadě vypnutí kostky.

Obrázek 6: Řídicí jednotka [18]

(18)

17 Technické specifikace jednotky [18]:

• 32bitový ARM7 mikroprocesor s 256 kB flash pamětí, 64 kB RAM

• 8bitový mikroprocesor s 4 kB flash pamětí, 512 B RAM

• Bluetooth třídy II V2.0

• USB 2.0 port

• Čtyři vstupní a tři výstupní porty

• Displej s rozlišením 60 x 100 pixelů

• 8 kHz reproduktor

• Zdroj el. energie: nabíjecí lithiová baterie nebo šest baterií typu AA

Servomotor

Tři servomotory poskytují robotovi funkci se pohybovat. Všechny servomotory mají vestavěné rotační senzory, které měří s přesností na ± jeden stupeň, avšak tato přesnost někdy nemusí stačit. Rychlost se nastavuje v rozsahu 0-100 relativních jednotek. Dále motor obsahuje tachometr pro vestavěný rotační senzor, jádro motoru, ozubená kola, díky nimž lze převést pohyb z jádra na výstup, a výstupní náboj, ke kterému lze díky otvorům připevnit kolo nebo jiné součástky.

Obrázek 7: Servomotor [18]

Dotykový senzor

Dotykový senzor je víceméně tlačítko, které může být buď ve stavu stlačeno, uvolněno anebo stisknuto, přičemž dojde ke stlačení a následnému uvolnění. Senzor dává na výstup hodnoty 0 a 1. Nula signalizuje, že tlačítko nebylo stlačeno, zatímco jednička je zaznamenána, je-li senzor stlačen. Dotyková plocha senzoru je poměrně

(19)

18

malá, avšak lze ji díky křížovému otvoru navýšit za pomoci dalších součástek stavebnice.

Obrázek 8: Dotykový senzor [18]

Světelný senzor

Světelný senzor umožňuje robotovi rozlišovat mezi světlem a tmou, zaznamenávat světelnou intenzitu v prostoru, ve kterém se nachází, a také měřit světelnou intenzitu na barevných podkladech.

Senzor se dá používat dvěma způsoby. První způsob je rozlišování barev za pomoci odrazu infračerveného světla, zabudovaného na senzoru. Odrazivost se zaznamenává v rozsahu 0 až 100 procent. Druhý způsob je při vypnutém infračerveném světle, kdy senzor zaznamenává pouze světlo z prostoru, také v rozmezí 0-100 procent.

Obrázek 9: Světelný senzor [18]

Zvukový senzor

Zvukový senzor detekuje úroveň hlasitosti. Zaznamená dB (veškerý zvuk, včetně zvuků příliš vysokých nebo příliš nízkých pro lidské ucho) i dBA (zvuky slyšitelné člověkem).

Senzor umí měřit akustický tlak až do úrovně 90 dB. Údaje, které se zobrazují na displeji kostky, jsou v procentech ze zvuku, který je senzor schopen zaznamenat.

(20)

19

Například hodnoty od 10 do 30 procent odpovídají hlasitosti normální konverzace, nebo hrající hudby.

Obrázek 10: Zvukový senzor [18]

Ultrasonický senzor

Ultrasonický senzor umožňuje robotovi „vidět“ a rozpoznávat objekty, vyhýbat se překážkám, měřit vzdálenosti a detekovat pohyb. Senzor používá stejného vědeckého principu jako netopýři. Měří vzdálenost tím, že počítá čas, za který se vydaná zvuková vlna vrátí zpět k senzoru. Vzdálenosti udává buď v centimetrech, nebo v palcích a je schopen měřit od 0 do 2,5 m s přesností ± 3 cm.

Nejlépe rozpoznává velké objekty s tvrdým povrchem. Tenké nebo malé věci nebo objekty vyrobené z měkké látky již není schopen detekovat tak zdařile. Má problémy také s kulatými předměty. Umístíme-li dva ultrasonické senzory do jedné místnosti, mohou se jejich měření navzájem ovlivňovat.

Obrázek 11: Ultrasonický senzor [18]

Další komponenty

Mimo zmíněné součástky existuje i mnoho dalších doplňků, které lze ke stavebnici dokoupit. Na výrobu kompatibilních součástek s robotem NXT MINDSTORMS se na trhu vyskytuje mnoho firem.

(21)

20

Na území České a Slovenské republiky zastupuje firmu LEGO společnost EDUXE, na jejíchž stránkách lze zakoupit základní sestavy a řadu kompaktních disků, obsahující programovací software nebo náměty činností pro robota MINDSTORMS.

Firma EDUXE je také dodavatelem součástek od dalších předních výrobců zabývajících se výrobou senzorů a komponent pro robota MINDSTORMS.

Jedním z těchto výrobců je americká firma HiTechnic, která vyrábí velké množství senzorů (např. kompas, úhlový senzor, barometrický senzor, gyroskopický senzor, atd.), ale také doplňků jako ovladače, úložné boxy nebo kabely. Ceny senzorů se pohybují od 1100 do 1500 Kč za kus. [8]

Další společností, zabývající se převážně výrobou optických senzorů, je firma Mindsensors. Společnost nabízí sofistikovanější komponenty, jako je například kamerový systém. Kvalita se však odráží na ceně a za jednu součástku lze zaplatit i pět tisíc korun. [9]

Další z řady firem je britská společnost DCP Microdevelopments, nabízející produkty LogIt. Tyto senzory se specializují na měření velké škály fyzikálních veličin od radiace přes elektrický proud po teplotu. Lze s nimi měřit i obsah oxidu uhličitého ve vzduchu nebo srdeční rytmus. Výrobky LogIt patří spolu s výrobky společnosti Vernier k nejdražším, které lze na webu společnosti EDUXE pořídit. Ceny šplhají k devíti tisícům korun za kus. [10]

Americká společnost Vernier poskytuje vybavení pro výuku přírodovědných předmětů a prostřednictvím adaptéru senzorů jich umožňuje používat až třicet.

V nabídce firmy se nachází například kalorimetr, elektroda pro měření vodivosti nebo čidlo, umožňující měřit koncentraci kyslíku rozpuštěného ve vodě a vodných roztocích.

Toto čidlo je zobrazeno na Obrázku č. 12. [11]

(22)

21

Obrázek 12: Čidlo Vernier [11]

(23)

22

4 Modelová aplikace v prostředí LabVIEW

Nedílnou součástí této bakalářské práce je také její praktická část. V tomto směru se budeme zabývat modelovou aplikací robota LEGO MINDSTORMS NXT navrženou pomocí vývojového prostředí LabVIEW.

Prvním úkolem bylo vybrat vhodnou funkci robota, dále pak robota podle požadavků a možností sestrojit za pomoci plastových součástek a senzorů, které tato sada obsahovala. Posledním úkolem bylo vytvořit program v LabVIEW.

Jako ukázkový příklad jsem si vybral zjednodušenou realizaci malé dvoukolky Segway, elektrického dopravního prostředku, využívající dynamické stabilizace.

Původní Segway pro stabilizaci využívá soustavu gyroskopů, zatímco v mém případě je použit pouze světelný senzor. Náhled původní dvoukolky Segway je znázorněn na Obrázku 13.

Obrázek 13 Originální Segway PT [12]

(24)

23

4.1 Funkce programu

Základní funkcí programu je udržet robota stojícího na dvou kolech ve vzpřímené poloze. Toho je docíleno implementací jednoduchého PID regulátoru, který reguluje sílu vkládanou do obou motorů. Světelný senzor je umístěn v dolní části sestavy, aby mohl poskytovat co nejpřesnější údaje. Senzor je nastaven na snímání množství odraženého světla od povrchu, na kterém zrovna stojí. Pokud se robot začne naklánět dozadu, program se snaží kompenzovat náklon tím, že nastaví sílu motoru tak, aby byl znovu ve vzpřímené poloze, tudíž nastaví zpětný chod o síle poskytnuté z PID regulátoru. Při náklonu vpřed platí stejný princip.

4.1.1 PID regulátor

PID v technice znamená proporcionální, integrační a derivační složku chování regulátoru. Obecně lze říci, že se regulátory konstruují proto, aby řízení nevyžadovalo soustavnou pozornost člověka nebo aby se soustava chovala podle přání operátora.

Regulátory tedy můžeme najít například na topení, kde na něm nastavujeme námi zadanou teplotu. Regulátor automaticky nastavuje výstupní akční veličinu u(t) tak, aby regulovaná veličina y(t) měla požadovanou hodnotu e(t), kde t značí čas. Právě složky P, I a D ovlivňují výslednou hodnotu akčního zásahu a ovlivňují tak průběh regulované soustavy.

V praxi platí, že proporcionální zesílení označované Kp zvyšujeme až do chvíle, kdy se projevují výrazné kmity, které se pak ztlumí díky derivační složce. Zvyšujeme-li derivační zesílení Kd, regulační pochod se zklidňuje, avšak zůstává trvalá regulační odchylka. Zvyšováním integračního zesílení Ki odstraníme i tuto odchylku.[13]

Hodnoty PID regulátoru pro Lego Segway byly nastavovány manuálně a intuitivně, jelikož není k dispozici přenosová funkce soustavy, kterou bychom získali její identifikací.

V praxi však existují jistá pravidla pro seřizování regulátorů a jedním z nich je například nejstarší postup Zieglera a Nicholse, který byl definován již v roce 1942. Více o této metodě si můžete přečíst například na stránkách časopisu Automa, časopisu pro automatizační techniku [14]. Na Obrázku 14 je znázorněno základní schéma zpětnovazebního PID regulátoru.

(25)

24

Obrázek 14: Obecné schéma zpětnovazebního PID regulátoru [15]

Obecný vzorec PID regulátoru pak je uveden v Rovnici 1.

Rovnice 1 [15]

4.2 Stavba robota

Sestava robota byla inspirována již připraveným návodem na stránkách NXTprograms.com [16], avšak bylo nutné pozměnit několik spojů, jelikož byl tento návod vytvořen pro sestavu 8527 nebo 9797 + 9695/9648. K dispozici byla pouze samotná sestava 9797, ve které několik součástek použitých v návodu chybí, a tak musely být nahrazeny nebo se muselo přijít na jiné řešení zachycení a spojů.

Základem robota jsou dvě paralelní kola, připevněná z boku k řídicí jednotce.

Kvůli přesnosti jsou motory spojeny pevnou osou, mohlo by totiž docházet k jevu, kdy by se kola neotáčela o stejný úhel a robot by následkem toho mohl nekontrolovatelně zatáčet. Na spodní části kostky je zavěšen světelný senzor, který snímá vzdálenost od povrchu.

Z důvodu stability a schopnosti Segway lépe vyvažovat byla na řídicí jednotku ještě přidána vysoká struktura znázorňující jezdce na tomto vozidle. Jeho tělo tvoří třetí motor, který však nemá podstatný význam a není připojen k NXT kostce. Hlavu

(26)

25

vystihuje ultrasonický senzor, avšak i ten má pouze funkci vzhledu. Sestaveného robota lze vidět na Obrázku 15. Pro další pohledy viz Přílohu C.

Obrázek 15: Sestavený robot

4.3 Program

Program byl vytvářen ve verzi LabVIEW určené přímo pro Lego MINDSTORMS NXT, konkrétně LabVIEW for LEGO MINDSTORMS 2010, obsahující NXT Module. V paletách Controls i Functions se tudíž vyskytují jen prvky, které lze pro programování robota využít a neobjevuje se zde velké množství nepoužitelných ikon, jako je tomu v původním LabVIEW.

Jak již bylo zmíněno výše, LabVIEW se skládá ze dvou částí. Z čelního panelu a blokového diagramu. Na Front panelu modelové aplikace se nachází tři vstupy v podobě posuvných ovladačů, které zastupují konstanty, vstupující do algoritmu PID regulátoru.

Defaultně jsou nastaveny na hodnoty 30, 25, 5 (Kp, Ki, Kd). Tyto hodnoty se při testování ukázaly za vhodné. Nejsou však pevně zadané, a tak je uživatel může dále měnit podle svých potřeb.

(27)

26

Dále zde můžeme vidět dva indikátory, zobrazující sílu vkládanou do obou motorů. První indikátor ukazuje nezměněnou hodnotu, která pochází z PID regulátoru.

Druhý zobrazuje sílu, která projde úpravou v bloku „In Range and Coerce”, což je vysvětleno dále.

Nakonec zde vystupuje také tlačítko Stop, pro nouzové ukončení programu.

Ukázku čelního panelu lze spatřit na Obrázku 16.

Obrázek 16: Front panel aplikace

Struktura programu v blokovém diagramu je rozdělena na dva celky. První část má za úkol dát obsluze čas na postavení robota a vyhledání rovnovážné polohy, kterou se robot bude snažit udržovat. Celý proces je doprovázen přerušovaným zvukovým signálem, který obsluhu upozorňuje na probíhající proces. S posledním odezněním zvuku robot ze světelného senzoru načte hodnotu odraženého světla a tato hodnota je v programu následně uchována jako výchozí pozice. Tento první blok lze vidět na Obrázku 17.

(28)

27

Obrázek 17: Načtení hodnoty ze senzoru V blokovém diagramu lze spatřit blok pro vydávání zvuku (Tone). Hodnoty frekvence a trvání zvuku jsou 440 Hz a 500 ms. Proběhla-li while smyčka již potřetí, následuje její ukončení a poté se načte hodnota ze světelného senzoru, který je připojen k NXT kostce přes port číslo tři.

Ve druhém segmentu programu je samotná realizace PID regulátoru a rozhodovací struktury pro určení směru chodu motorů. Jednotlivé složky regulátoru jsou tvořeny pomocnými podprogramy, tzv. SubVI, které mají za úkol zpřehlednit celou aplikaci.

4.3.1 P složka

Nejdříve se zaměřme na jednotlivé složky PID regulátoru. První složka je takzvaná proporcionální, nebo někdy uváděná jako „P” složka. Tato složka je ve formě prostého zesilovače. Schéma SubVI P složky je znázorněno na Obrázku 18.

(29)

28

Obrázek 18: Schéma SubVI proporcionální složky Lze zde spatřit, že hodnota P je vyjádřena jako součin konstanty Kp a rozdílu původní načtené hodnoty („Puvodni hodnota“) a nově načtené hodnoty ze senzoru, při naklonění robota („Nova hodnota“). Tento rozdíl nám udává chybu, která určuje hodnotu náklonu robota, v Rovnici 1 vedenou jako e(t).

4.3.2 I složka

Další složkou regulátoru, vytvořenou pomocí SubVI je složka I. Celé schéma SubVI integrační složky je uvedeno na Obrázku 19.

Obrázek 19: Schéma SubVI integrační složky Jako v ostatních složkách regulátoru, tak i zde vystupuje výpočet chyby (původní - nová hodnota). Navíc se zde objevuje také součet s minulou chybou (I minule) načtenou z posuvného registru, do nějž vstupuje hodnota „I reg”. Tento

(30)

29

součet je následně vynásoben součinem hodnot Ki a dt, což již udává hodnotu I složky regulátoru.

4.3.3 D složka

Poslední složkou regulátoru je derivační (D) složka. Její realizace v LabVIEW je znázorněna na Obrázku 20.

Obrázek 20: Schéma SubVI derivační složky Do tohoto SubVI vstupují následující hodnoty: původní načtená hodnota („Puvodni hodnota”), nová hodnota ze senzoru („Nova hodnota”), chyba předešlá („Minula chyba”) a konstanty Kd, což je hodnota derivačního zesílení a dt, znázorňující změnu v čase. Výpočet rozdílu hodnot ze senzoru se uchovává do následujícího průběhu

„while” smyčky, kde se objevuje jako „Minula chyba”. Toho je v LabVIEW docíleno užitím posuvného registru. Dále výstup „Chyba” ovlivňuje následující rozhodovací strukturu, viz Obrázek. 20. Podle Rovnice 1 je hodnota Kd dělena dt, kde dt značí dobu mezi minulým čtením ze senzoru a posledním čtením, a tento podíl je následně násoben rozdílem chyb. Výstup těchto operací je označen „D”.

Jednotlivé výstupy P, I a D jsou následně sečteny a zobrazeny na Front panelu jako „Síla motoru z PID”. Tato hodnota je dále upravena funkcí „In Range and Coerce”, s hodnotami ±1000. Tato funkce zaručuje to, že se program vypne, překročí-li hodnota

(31)

30

vycházející z PID regulátoru ±1000 jednotek. Dosáhne-li totiž PID regulátor hodnot, přesahující tuto mez, značí to již nekontrolovatelný pád robota. Bylo by nežádoucí a zároveň i nepohodlné, musel-li by se robot vypínat manuálně buď tlačítkem STOP na Front panelu, nebo přímo na řídicí jednotce NXT.

Důležitou funkcí programu je rozlišovat, na jakou stranu robot právě přepadává.

Toto je docíleno použitím „case” struktur, napojených na chybu vystupující z derivační složky a na výstup z PID regulátoru. První rozhodovací struktura je napojena na chybu z D složky. Je-li tato chyba nulová, znamená to, že se robot nachází ve vyvážené pozici, a motory napojené na porty B a C se zastaví. Nabývá-li však chyba hodnot různých od nuly, je zapotřebí, aby robot rozpoznal směr pádu. Toho je docíleno implementací další rozhodovací struktury, o jejímž plnění rozhoduje hodnota z PID. Je-li tato hodnota kladná, nastaví se struktura do pozice „True” a pošle tuto hodnotu rovnou do motoru.

Je-li hodnota záporná, struktura přejde do stavu „False” a její absolutní hodnota se také nastaví jako síla motoru, avšak s opačným směrem. Příklad je uveden na Obrázku 21.

Zde je znázorněn stav, je-li chyba nenulová a hodnota z PID regulátoru kladná.

Obrázek 21: Rozhodování o směru pádu Kompletní kód programu je pro úplnost uveden v příloze B.

4.4 Výhody a nevýhody sestavy a programu

Během výstavby a programování robota bylo zjištěno několik výhod i nevýhod celé soustavy. Mezi podstatné výhody například patří to, že nebylo nutné dokupovat

(32)

31

další součástky v podobě např. gyroskopického senzoru, který na stránkách společnosti EDUXE stojí přes půl druhého tisíce korun.

Podstatně více je pak nevýhod. Jedna z nich je například to, že robot, respektive světelný senzor, je velmi náchylný na podklad, na kterém stojí, a na míře světla v místnosti. Je-li podklad matný, měkký nebo vícebarevný a světlo v místnosti velmi jasné, může následkem toho robot fungovat nesprávně. Senzor není schopen číst správně údaje o odrazu světla, a tudíž ani nereaguje na náklon konstrukce. Ideální podmínky pro robota jsou tedy lesklý povrch a šero, kde by nic nedělalo stín.

Dalším omezením robota je také rychlost procesoru v řídicí jednotce, respektive zpracování programu z LabVIEW. Stáhneme-li program z LabVIEW do kostky a pokoušíme se robota zapnout, nefunguje zdaleka tak, jako když je připojený přes USB kabel přímo k počítači a komunikuje s ním za chodu. Z toho plyne omezení, které je dáno délkou propojovacího vodiče. Robot tudíž nemůže komunikovat na delší vzdálenost než je délka 1,8 m, délka kabelu. Implementací bezdrátové komunikace, jako je například wi-fi nebo bluetooth, by se vzdálenost, na kterou by robot komunikoval, podstatně prodloužila.

Výraznou nevýhodou robota je také jeho nevyváženost. Robot má tendenci naklánět se výrazně častěji dozadu, nežli dopředu. Dozadu také padá mnohem rychleji, než je tomu u druhého směru.

Posledním handicapem robota je také tendence vyvažovat robota do původní pozice. Je-li totiž robot v původním postavení v náklonu na jednu ze stran, kompenzuje vychýlení, a tudíž se i pohybuje ve směru původního nahnutí. Po krátkém čase by tak mohl robot ujet i několik metrů, což by bylo nežádoucí, kdyby stál například na vysokém podkladu, třeba na stole.

(33)

32

5 Závěr

V této bakalářské práci bylo ukázáno, jak lze naprogramovat PID regulátor ve vývojovém prostředí LabVIEW k ovládání malého robota Lego MINDSTORMS NXT.

K realizaci byl použit světelný senzor, což přináší jisté výhody, avšak řadu handicapů, zmíněných již v kapitole 4.4.

Dále jsem se potýkal s problémy, které byly způsobeny již stářím sestavy.

Jedním z nich byla například nekompatibilita NXT Module se šedesáti čtyř bitovou verzí LabVIEW 2011, a právě z tohoto důvodu bylo použito LabVIEW pro LEGO MINDSTORMS 2010.

Pro budoucí řešení bych doporučoval novější verzi sestavy MINDSTORMS EV3, obsahující výkonnější řídicí jednotku s rychlejším procesorem a větší operační pamětí. Dále by bylo řízení jistě přesnější využitím gyroskopického senzoru, namísto světelného.

Dále by bylo velmi ulehčující, kdyby se v LabVIEW objevila i v nějaké formě funkce PID regulátoru, například jako v programu Simulink firmy MathWorks.

To, že primárním programovacím prostředím pro Lego MINDTSORMS NXT je NXT-G a ne LabVIEW, se také podepsalo na rychlosti zpracovávání zdrojového kódu v řídicí jednotce NXT a nastalo zde omezení dané délkou propojovacího kabelu.

Konstanty používané v PID regulátoru (Kp, Ki a Kd) jistě nejsou nejideálnějšími a nejpřesnějšími. Pro náš případ však stačí. Pro preciznější hodnoty by byla potřeba podrobnější identifikace systému.

Fakt, že robot Lego MINDSTORMS NXT je pouze výukový robot, ho omezuje v používání v reálném provozu. Je to však skvělý nástroj pro výuku robotiky a programování, navíc s velkou dávkou zábavy. Proto lze reálné procesy na robotovi pouze demonstrovat.

(34)

33

Použitá literatura a zdroje

[1] National Instruments [online] [cit. 20. 3. 2014].

Dostupné z: http://en.wikipedia.org/wiki/National_Instruments [2] Stránky společnosti National Instruments [online] [cit. 23. 3. 2014]

Dostupné z : http://czech.ni.com/

[3] ŠKODA, Petr; Aplikování vývojového prostředí LabVIEW při návrhu řízení malého robota LEGO MINDSTORMS NXT, Liberec, 16. 5. 2011, 41 stran;

Bakalářská práce.

[4] HAVLÍČEK, Josef; VLACH, Jaroslav; VLACH, Martin; VLACHOVÁ, Viktorie. Začínáme s LabVIEW. 1. vyd., BEN-Technická literatura, 2008.

ISBN 978-80-7300-2.

[5] LabVIEW 2013 SP-1 Release Details [online] [cit. 25. 3. 2014]

Dostupné z : http://www.ni.com/labview/release-details/

[6] Historie LEGO [online] [cit 15. 3. 2014]

Dostupné z: http://aboutus.lego.com/cs-cz/lego-group/the_lego_history [7] Lego Mindstorms NXT [online] [cit. 17. 3. 2014]

Dostupné z: http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT [8] EDUXE – O společnosti HiTEchnic [online] [cit. 2. 4. 2014]

Dostupné z: http://www.eduxe.cz/les/mindstorms/hitechnic/

[9] EDUXE – O Společnosti Mindsensors [online] [cit. 2. 4. 2014]

Dostupné z: http://www.eduxe.cz/les/mindstorms/mindsensors/

[10] EDUXE – Podpora LogIt [onilne] [cit. 2. 4. 2014]

Dostupné z: http://www.eduxe.cz/les/mindstorms/logit/

[11] EDUXE – Podpora Vernier [online] [cit. 2. 4. 2014]

Dostupné z: http://www.eduxe.cz/les/mindstorms/vernier/

[12] Segway of West Texas [online] [cit. 5. 4. 2014]

Dostupné z: http://www.segwaytexaswest.com/i2%20Models.htm

(35)

34

[13] KUPKA, Libor. Seřizování PID regulátorů. [online] [cit 28. 3. 2014].

Dostupné z: http://www.fm.tul.cz/~libor.kupka/09_-_Nastavovani_PID.pdf [14] Ziegler-Nicholsovo nastavení PID regulátoru [online] [cit. 7. 4. 2014]

Dostupné z: http://www.odbornecasopisy.cz/index.php?id_document=27697 [15] PID controller [online] [cit. 8. 4. 2014]

Dostupné z: http://en.wikipedia.org/wiki/PID_controller [16] NXT Programs – Segway [online] [cit. 10. 4. 2014]

Dostupné z: http://www.nxtprograms.com/segway/index.html [17] LabVIEW [online] [cit 3. 4. 2014]

Dostupné z: http://en.wikipedia.org/wiki/LabVIEW

[18] LEGO. MINDSTORMS EDUCATION. NXT User Guide – Technology [CD]

The LEGO Group 2006

(36)

35

Přílohy

Příloha A – verze LabVIEW s daty vydání

Jméno/Verze Číslo buildu Datum

LabVIEW 1.0 (MacOS) ?? Říjen 1986

LabVIEW 2.0 ?? Leden 1990

LabVIEW 2.5 (Sun &

Windows) ?? Srpen 1992

LabVIEW 3.0

(Multiplatformové) ?? Červenec 1993

LabVIEW 3.0.1 ( Windows

NT) ?? 1994

LabVIEW 3.1 ?? 1994

LabVIEW 3.1.1 ?? 1995

LabVIEW 4.0 ?? Duben 1996

LabVIEW 4.1 ?? 1997

LabVIEW 5.0 ?? Únor 1998

LabVIEW RT (Real Time) ?? Květen 1999

LabVIEW 6.0 (6i) 6.0.0.4005 26 Červenec 2000

LabVIEW 6.1 6.1.0.4004 12 Duben 2001

LabVIEW 7.0 (Express) 7.0.0.4000 Duben 2003

LabVIEW PDA module ?? Květen 2003

LabVIEW FPGA module ?? Červen 2003

LabVIEW 7.1 7.1.0.4000 2004

LabVIEW Embedded

module ?? Květen 2005

LabVIEW 8.0 8.0.0.4005 Září 2005

LabVIEW 8.20 (nativní objektově orientované programování)

?? Srpen 2006

LabVIEW 8.2.1 8.2.1.4002 21 Únor 2007

LabVIEW 8.5 8.5.0.4002 2007

LabVIEW 8.6 8.6.0.4001 24 Červenec 2008

LabVIEW 8.6.1 8.6.0.4001 10 Prosinec 2008

LabVIEW 2009 (32 a 64-bit) 9.0.0.4022 4 Srpen 2009

LabVIEW 2009 SP2 9.0.1.4011 8 Leden 2010

LabVIEW 2010 10.0.0.4032 4 Srpen 2010

(37)

36

LabVIEW 2010 f2 10.0.0.4033 16 Září 2010

LabVIEW 2010 SP1 10.0.1.4004 17 Květen 2011 LabVIEW for LEGO

MINDSTORMS (2010 SP1 s několika moduly)

Srpen 2011

LabVIEW 2011 11.0.0.4029 22 Červen 2011

LabVIEW 2011 SP1 11.0.1.4015 1 Březen 2012

LabVIEW 2012 12.0.0.4029 Srpen 2012

LabVIEW 2012 SP1 12.0.1.4013 Prosinec 2012

LabVIEW 2013 13.0.0.4047 Srpen 2013

(38)

37

Příloha B – blokový diagram programu Segway

(39)

38

Příloha C – fotografie robota

Pohled zboku Pohled zepředu

References

Related documents

Hodnocená bakalářská práce Se zabývá možnostmi využití grafického vývojového prostředí LabVlEW pro programování robota LEGo MlNDsToRMS NXT.. Práce je

V práci byla vyzkoušena možnost programování robota NXT ve vývojovém prostředí LabVIEW pomocí volně stažitelného rozšíření LabVIEW Toolkit for LEGO

Chmelař (2015, s. Rozlišuje mezi sebou dálnice, komunikace I., II. “ Ve městech rozlišuje hlavní tahy, významné ulice, soukromé cesty, nezpevněné cesty a ostatní

» Measurement  I/O  »  NI  ELVISmx  »  Os- cilloscope. Po vložení se spustí konfigurač-

Programovací jazyk NXT-G je výsledkem práce firem LEGO a National Instruments a je základním programovacím nástrojem pro LEGO MINDSOTRMS NXT. Vyvinul se z

Webová aplikace, testování , testovací prost edí, automatické testy, Use Case, Test

Důležitou součástí, by také měla být zpětná vazba od zaměstnance a na toto se jeví jako nejlepší metoda hodnotícího pohovoru, kde může pracovník volně vyjád it své

Zaměřit se nejen na účetní vykazování nehmotných aktiv podniku, tak aby účetní realita zachycovala věrněji skutečnost, ale i zjišťování jejich tržní