STŘEDNÍ PRŮMYSLOVÁ ŠKOLA ELEKTROTECHNICKÁ A INFORMAČNÍCH TECHNOLOGIÍ BRNO LEGO POHYB ROBOTA LUDMILA KIKTOVÁ V4B Profilová část maturitní zkoušky MATURITNÍ PRÁCE BRNO 2014
Prohlášení Prohlašuji, že jsem maturitní pr{ci LEGO Pohyb robota vypracovala samostatně a použila jen zdroje uvedené v seznamu literatury. Prohlašuji, že: Beru na vědomí, že zpr{va o řešení maturitní pr{ce a z{kladní dokumentace k aplikaci bude uložena v elektronické podobě na intranetu Střední průmyslové školy elektrotechnické a informačních technologií Brno. Beru na vědomí, že bude m{ maturitní pr{ce včetně zdrojových kódů uložena v knihovně SPŠEIT Brno dostupn{ k prezenčnímu nahlédnutí. Škola zajistí, že nebude pro nikoho možné pořizovat kopie jakékoliv č{sti pr{ce. Beru na vědomí, že SPŠEIT Brno m{ pr{vo celou moji pr{ci použít k výukovým účelům a po mém souhlasu nevýdělečně moji pr{ci užít ke své vnitřní potřebě. Beru na vědomí, že pokud je souč{stí mojí pr{ce jakýkoliv softwarový produkt, považují se za souč{st pr{ce i zdrojové kódy, které jsou předmětem maturitní pr{ce, případně soubory, ze kterých se pr{ce skl{d{. Souč{stí pr{ce není cizí ani vlastní software, který je pouze využív{n za přesně definovaných podmínek, a není podstatou maturitní pr{ce. Ludmila Kiktov{ Preslova 52 Brno, 602 00 V Brně dne 10. 4. 2014... 1
Vedoucí pr{ce: Petr Pernes 2
Poděkování Děkuji Střední průmyslové škole elektrotechnické a informačních technologií Brno za poskytnutí vybavení k realizaci zadané pr{ve a vecoucímu pr{ce Ing. Petru Pernesovi za poskytnutou metodickou pomoc a odborné rady. 3
Shrnutí Tento dokument pojedn{v{ o zpracov{ní pr{ce robota udržujícího konstantní vzd{lenost od stěny. V první č{sti je popisov{n samotný prostředek k realizaci, a to jak po fyzické str{nce, tak po str{nce softwarové. Druh{ č{st je věnov{na samotné konstrukci robota. Je zde pops{n vývoj vhodné konstrukce s uvedeným odůvodněním změn. D{le jsou zde vyps{ny výhody některých prvků konstrukce. Tím je vysvětleno, proč byly jednotlivé prvky použity Poslední č{st je zaměřena na program pro ovl{d{ní robota. Tato č{st je rozdělena do sekvencí č{stí programu podle jejich funkce. U každé sekvence je uveden její n{zev, stručný popis její funkce a realizace, vývojový diagram a uk{zky zdrojového kódu. 4
Obsah Prohl{šení... 1 Poděkov{ní....3 Shrnutí... 4 Obsah... 5 Úvod... 6 1 Sezn{mení se stavebnicí a programovým prostředím... 7 1.1 Stavebnice... 7 1.2 vývojové prostředí... 8 2 Konstrukce... 9 2.1 Návrhy a úpravy konstrukce 3.1 start... 9 2.2 Současná konstrukce... 9 3 program... 10 3.1 start 3.2 Set distance... 10 3.2 Set distance 3.3 Calibration... 11 3.3 Calibration 3.4 Movement... 13 3.4 Movement... 14 z{věr...15 Seznam ilustrací... 16 Seznam tabulek... 17 Zdroje... 18 Přílohy... 19 5
Úvod Zad{ním této pr{ce je vytvořit s použitím stavebnice Lego Mindstorms 9797 robota, který bude udržovat konstantní vzd{lenost od stěny, kolem které jede. Plné znění zad{ní je zde: Naprogramujte robota, tak aby dodržoval nastavenou vzd{lenost od předmětu (ekvidistantu). Detail: - popište volbu konstrukce robota é programové prostředí a způsob řešení vybraných problémů problémy - popište řešené vzd{lenost, automatick{ inkrementace vzd{lenosti, projití vyhrazeného prostoru tak, aby se pokryla cel{ plocha. V n{sledujících kapitol{ch se blíže sezn{míme s postupem řešení této úlohy. 6
1 Seznámení se stavebnicí a programovým prostředím Lego Mindstorms lze rozdelit do dvou č{stí, do hardwarové (stavebnice) a softwarové (vývojový software) 1.1 Stavebnice Ke zpracov{ní úlohy byla použita stavebnice Lego Mindstorms 9797 (viz. Obr{zek 01). Níže je uveden kompletní seznam komponent obsažených ve stavebnici. 7
Stavebnice funguje na standartním principu Lego Technic s obohacením o motory, senzory a řídící jednotku. 1.2 vývojové prostředí Pro prograov{ní řídící jednotky byl použit software Lego NXT 2.0. Prostředí umožňuje programov{ní pomocí grafických bloků vyjadřujících jednotlivé akce, uspoř{daných za sebe podle pořadí jejich provedení. Uk{zka prostředí s popisky 8
2 Konstrukce 2.1 Návrhy a úpravy konstrukce Ze zad{ní vyplývalo, že robot bude muset být opatřen koly a ultrasonickým senzorem. První vererze konstrukce se pohybovala po čtyřech kolech a prov{děla sním{ní vzd{lenosti prov{děla kolmo na stěnu na levé straně. Tento způsob měření se při testech neosvědčil a byl nahrazen. Při dojezdu do rohu testovacího prostoru totiž nebyl robot schopen zaznamenat stěnu před ním snažil se pokračovat v jízdě. Další verze měla snímač umýstěný ke stěně v úhlu 45. Ani tato konstrukce se neosvědčila ze dvou důvodů: a) Vzd{lenost od stěny neodpovídala naměřené vzd{lenosti b)zaznamen{ní stěny před robotem probíhalo příliš blízko a robot neměl dost prostoru k otočení. V další verzi bylsenzor umístěn na zvl{štní motorek, který umožňuje jak kolmé měření stěny vedle robota, tak sledov{ní volného prostoru před robotem. S umístěním motorku byl problém, protože zavazel ovl{dacím tlačítkům a cel{ konstrukce byla přestavěna. Při této přestavbě došlo k větším změn{m. Asi největší z nich jbyla změna počtu kol, což výrazně ovlivnilo manévrovatelnost. Další změnou bylo umístění řídící jednotky šikmo k podkladu, což umožnilo snažší ovl{d{ní. 2.2 Současná konstrukce Fin{lní verze se pohybuje na třech kolech. Dvě hlavní jsou obsluhov{na každé jedním motorem. Díky tomu lze snadno zat{čet pomocí regulace jejich rychlostí. Třetí kolo na ot{čivé konstrukci je pouze podpůrné a zajišťuje stabilitu robota. D{le je nad koly umístěna řídící jednotka s ovl{dacími tlačítky a výstupním displejem. Na přední č{sti robota je umístěn třetí motor s ultrazvukovým snímačem vzd{lenosti od objektů. Z technických důvodů zde bohužel není uveden postup sestavení konstrukce 9
3 program 3.1 start Při spuštění nejprve proběhne startovací sekvence, při které se uživateli zobrazí na displeji vzkaz SET DISTANCE N{sledně se proměnn{ DIST nastaví na 30 střední hodnota vzd{lenosti. Poslední f{zí je ček{ní 2 sekundy aby si uživatel mohl zpr{vu pohodlně přečíst Programové řešení: Vývojový diagram 10
3.2 Set distance V této sekvenci program nejprve zjistí hodnotu proměnné DIST a vypíše ji na displej. Pokud pr{vě proběhla sekvence start, tak je proměnn{ DIST rovna třiceti. Problémem při řešení ůlohy byla absence příkazu pro vyps{ní proměnné na výstup. Proto je počet nastavitelných vzd{leností omezen na pět a hodnota pro vyps{ní je řešena sadou pěti ot{zek. D{le sekvence pokračuje ot{zkou, zda uživatel nestiskl některé z e dvou směrových tlačítek. Pokud ano, přehraje se zvuk tlačítka. D{le program vyčk{ půl sekundy aby nedošlo k vícen{sobnému sejmutí tlačítka jedním stiskem. Nakonec se přičte nebo odečte od proměnné DIST 10. V každé podmínce je vložena další podmínka zajišťující možnost nastavení vzd{lenosti pouze v omezeném rozsahu. Pokud hodnota DIST přičtením/odečtením překročila hraniční hodnotu (10, 50), pak se k proměnné DIST opět přičte/odečte 10 v opačném směru, než byla předchozí operace. Cel{ sekvence je uzavřen{ ve smyčce čekající na stisk tlačítka ENTER Programové řešení: Podmínka použit{ pro výpis proměnné Proces při stisku tlačítka a ukončení smyčky 11
vývojový diagram: 12
3.3 Calibration V této sekvenci se nastavuje motor ot{čející ultrasonickým senzorem do výchozí polohy. Při startu není nijak zajištěno, že je senzor spr{vně natočen. Při této sekvenci se snímač ot{čí 'dozadu' až narazí na tělo samotného robota. N{sledně se otočí o devades{t stupňů aby byl namířen do prostoru vlevo od robota a mohl zah{jit další sekvenci. Na zač{tku této sekvence je také umístěna kr{tk{ čekací doba aby mohl uživatel pohodlně položit robota na zem, než se spustí. Programové řešení Vývojový diagram: 13
3.4 Movement Hlavní č{st programu obsahující algorytmus pro pohyb robota. Nejprve se senzor pootočí a zjistí se, zda před robotem není stěna. Pokud je, robot uděl{ ostrou zat{čku vpravo. Pokud není, robot pokračuje d{l rovně. N{sleduje pětisekundov{ smyčka, během které je neust{le porovn{v{na naměřen{ hodnota s proměnnou nastavenou uživatelem. Pokud je proměnn{ větší jak naměřen{ hodnota, robot se při jízdě pootočí na pravou stranu (od stěny). Při opačném výsledku se pootočí naopak ke stěně. Po pěti sekund{ch se opakuje proces zjišťov{ní stěny před robotem a takto se oba postupy opakují dokud uživatel nestiskne tlačítko ENTER, kterým ukončí program. Programové řešení Zkoum{ní prostoru před robotem Smyčka s pohybem a ukončení programu 14
Vývojový diagram. 15
Závěr Robot je schopen samostatného pohybu, ale vzhledem k nepřesnosti měřícího snímače doch{zí k častým chyb{m. Z hlediska n{ročnosti byla pr{ce výzvou. Asi nejn{ročnější bylo sestrojit konstrukci, pro kterou by bylo možné použít prvotní n{pad na řešení. Hodnotím tedy jako novou zkušenost, že jsem měla možnost nejen programovat nějaké zařízení, ale také ho přímo navrhnout. 16
Seznam ilustrací Str. 7 obr{zek 1 vzhled stavebnice LEGO Mindstorms 9797 Str. 7 obr{zek 2 kompletní seznam komponent stavebnice LEGO Mindstorms 9797 Str. 8 obr{zek 1 uk{zka pracovního prostředí Mindstorms NX s popisky Str. 10 obr{zek 1 programové řešení sekvence start Str 10. obr{zek 2 vývojový diagram sekvence start Str. 11 obr{zek 1 programové zaps{ní podmínky pro výpis hodnoty Str. 11 obr{zek 2 Přepisov{ní hodnot po stisku směrového tlačítka Str. 12 obr{zek 1 vývojový diagram sekvence Set distance Str. 13 obr{zek 1 nastavov{ní motoru do výchozí polohy Str. 13 obr{zek 2 vývojový diagram sekvence Calibration Str. 14 obr{zek 1 -Poč{tek sekvence Movement monitorov{ní prostoru před robotem Str. 14 obr{zek 2 smyčka pro pohyb vedle stěny Str. 15 obr{yek 1 vývojový diagram sekvence Movement Seznam tabulek 17
Zdroje [1] Tvorba vývojových diagramů byla zajištěna pomocí https://www.lucidchart.com [2] Programovací prostředí bylo získ{no z mindstorms.lego.com/ Stažení LEGO digital designer http://ldd.lego.com/cs-cz/ [3] Získané informace o LEGO Mindstorms www.moodle.cz 18
Přílohy Příloha 01 kompletní program pro ovl{d{ní robota 19