26.07.2013 Views

Analýza softvérového prostredia pre riadenie robotov Player-Stage ...

Analýza softvérového prostredia pre riadenie robotov Player-Stage ...

Analýza softvérového prostredia pre riadenie robotov Player-Stage ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Technická univerzita v Košiciach<br />

Fakulta elektrotechniky a informatiky<br />

<strong>Analýza</strong> <strong>softvérového</strong> <strong>prostredia</strong> <strong>pre</strong><br />

<strong>riadenie</strong> <strong>robotov</strong> <strong>Player</strong>-<strong>Stage</strong>-Gazebo<br />

2011 Erik Bodnár


Technická univerzita v Košiciach<br />

Fakulta elektrotechniky a informatiky<br />

Katedra kybernetiky a umelej inteligencie<br />

<strong>Analýza</strong> <strong>softvérového</strong> <strong>prostredia</strong> <strong>pre</strong><br />

<strong>riadenie</strong> <strong>robotov</strong> <strong>Player</strong>-<strong>Stage</strong>-Gazebo<br />

Diplomová práca<br />

Študijný program: Kybernetika a informačno-riadiace sys-<br />

témy<br />

Študijný odbor: Kybernetika<br />

Školiace pracovisko: Katedra kybernetiky a umelej inteligen-<br />

cie (KKUI)<br />

Školiteľ: Ing. Rudolf Jakša, PhD.<br />

Konzultant: Ing. Rudolf Jakša, PhD.<br />

Košice 2011 Erik Bodnár


Analytický list<br />

Autor: Erik Bodnár<br />

Názov práce: <strong>Analýza</strong> <strong>softvérového</strong> <strong>prostredia</strong> <strong>pre</strong> <strong>riadenie</strong> <strong>robotov</strong><br />

Podnázov práce:<br />

Jazyk práce: slovenský<br />

<strong>Player</strong>-<strong>Stage</strong>-Gazebo<br />

Typ práce: Diplomová práca<br />

Počet strán: 60<br />

Akademický titul: Inžinier<br />

Univerzita: Technická univerzita v Košiciach<br />

Fakulta: Fakulta elektrotechniky a informatiky (FEI)<br />

Katedra: Katedra kybernetiky a umelej inteligencie (KKUI)<br />

Študijný odbor: Kybernetika<br />

Študijný program: Kybernetika a informačno-riadiace systémy<br />

Mesto: Košice<br />

Vedúci práce: Ing. Rudolf Jakša, PhD.<br />

Konzultanti práce: Ing. Rudolf Jakša, PhD.<br />

Dátum odovzdania: 29. 04. 2011<br />

Dátum obhajoby: 27. 05. 2011<br />

Kľúčové slová: Gazebo, simulácia <strong>robotov</strong>, tvorba modelu robota<br />

Kategória konspekt: Technika, technológia, inžinierstvo<br />

Citovanie práce: Erik Bodnár: <strong>Analýza</strong> <strong>softvérového</strong> <strong>prostredia</strong> <strong>pre</strong> <strong>riadenie</strong><br />

<strong>robotov</strong> <strong>Player</strong>-<strong>Stage</strong>-Gazebo. Diplomová práca. Košice :<br />

Technická univerzita v Košiciach, Fakulta elektrotechniky<br />

a informatiky. 2011. 60 s.<br />

Názov práce v AJ: Analysis of <strong>Player</strong>-<strong>Stage</strong>-Gazebo software enviroment for ro-<br />

Podnázov práce v AJ:<br />

bots control<br />

Kľúčové slová v AJ: Gazebo, robot simulator, robot modeling


Abstrakt v SJ<br />

Cieľom tejto diplomovej práce je bližší pohľad na projekt <strong>Player</strong>-<strong>Stage</strong>-Gazebo, <strong>pre</strong>s-<br />

nejšie na prácu v 3D prostredí programu Gazebo. V úvode je krátky <strong>pre</strong>hľad nie-<br />

ktorých robotických simulátorov. Základ práce tvorí oboznámenie sa s programom<br />

Gazebo, ako <strong>pre</strong>bieha tvorba modelu v tomto programe a ako ho môžeme ovládať<br />

vlastným programom. Cieľom je aj podrobný popis inštalácie programu Gazebo. Po-<br />

sledná kapitola analyzuje možnosti tvorby modelu robota Nao v prostredí Gazebo,<br />

aké máme dostupné informácie o robote a čo by nám malo pomôcť v programe<br />

Gazebo.<br />

Abstrakt v AJ<br />

The main goal of this thesis is a closer look at <strong>Player</strong>-<strong>Stage</strong>-Gazebo project and<br />

how to work in 3D Gazebo simulator. The introduction is a brief overview of some<br />

robotics simulators. We will describe how to build your own model and how to<br />

comunicate with Gazebo and your program. In the next chapter we describe the<br />

instalation of Gazebo and what is necessary for the <strong>pre</strong>paration. Last chapter is<br />

analysis of the possible way to build a Gazebo model of Nao robot and problems<br />

that may occure.


Obr. 0 – 1


Čestné vyhlásenie<br />

Vyhlasujem, že som diplomovú prácu vypracoval(a) samostatne s použitím uvedenej<br />

odbornej literatúry.<br />

Košice 29. 04. 2011 . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

Vlastnoručný podpis


Poďakovanie<br />

Na tomto mieste by som sa rád poďakoval môjmu vedúcemu práce Ing. Rudolfovi Ja-<br />

kšovi, PhD za pomoc a usmernenie pri písaní tejto práce. Poďakovanie patrí aj mojej<br />

rodine, ktorá stála pri mne počas celého štúdia.


Obsah<br />

Úvod 1<br />

1 Formulácia úlohy 2<br />

2 Úvod do projektu The <strong>Player</strong> project 3<br />

2.1 História projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

2.2 <strong>Player</strong>, server <strong>pre</strong> komunikáciu s reálnymi robotmi . . . . . . . . . . . 4<br />

2.3 <strong>Stage</strong>, komponent <strong>pre</strong> 2D simuláciu . . . . . . . . . . . . . . . . . . . 4<br />

2.4 Gazebo, komponent <strong>pre</strong> 3D simuláciu . . . . . . . . . . . . . . . . . . 5<br />

2.5 Alternatívne projekty . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

3 Práca v simulátore Gazebo 13<br />

3.1 Gazebo modely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

3.2 Vytvorenie sveta v súbore *.world . . . . . . . . . . . . . . . . . . . . 17<br />

3.3 Vytvorenie modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

3.4 Komunikácia s modelom pomocou kontroléra . . . . . . . . . . . . . . 26<br />

3.5 Vizuálne prostredie simulátora Gazebo . . . . . . . . . . . . . . . . . 26<br />

4 Praktická časť 29<br />

4.1 Inštalácia programu Gazebo pod systémom Linux . . . . . . . . . . . 29<br />

4.1.1 Inštalácia <strong>Player</strong>a . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

4.1.2 Potrebné balíky a knižnice <strong>pre</strong> úspešnú inštaláciu Gazeba . . . 31<br />

4.1.3 Inštalácia Gazeba na Ubuntu Linux 10.04 . . . . . . . . . . . 34<br />

4.1.4 Zhrnutie inštalácie . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

4.2 Ukážka ovládania robota v prostredí Gazebo . . . . . . . . . . . . . . 35<br />

4.2.1 Spojenie sa s modelom pomocou nášho programu . . . . . . . 36<br />

4.2.2 Ovládanie modelu . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

4.3 Ukážka vytvoreného modelu v prostredí Gazebo . . . . . . . . . . . . 38<br />

4.3.1 Prvé kroky pri tvorbe modelu . . . . . . . . . . . . . . . . . . 38


FEI KKUI<br />

4.3.2 Stavba modelu . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

4.3.3 Ovládanie modelu . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

4.3.4 Komunikácia s modelom pomocou programu . . . . . . . . . . 45<br />

5 <strong>Analýza</strong> možnosti tvorby modelu robota Nao v prostredí Gazebo 47<br />

5.1 Krátka špecifikácia robota Nao . . . . . . . . . . . . . . . . . . . . . 47<br />

5.2 Pohľad na časti tela Naa . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

5.3 Možnosti tvorby modelu a komunikácie s Naom v prostredí Gazebo . 49<br />

6 Záver (zhodnotenie riešenia) 55<br />

Zoznam použitej literatúry 56<br />

Zoznam príloh 60<br />

7 Príloha B 61<br />

8 Príloha C 68<br />

9


FEI KKUI<br />

Úvod<br />

V tejto práci sa zaoberáme možnosťou simulácie robota v prostredí <strong>Player</strong>-<strong>Stage</strong>-<br />

Gazebo.<br />

Základom simulácie by nemala byť len vizuálna stránka robota, ale aj jeho fyzická<br />

podstata a tak isto aj <strong>prostredia</strong>. Simulátor by mal zvládať interakcie, ktoré <strong>pre</strong>-<br />

biehajú medzi simulovaným robotom a prostredím. Vďaka tomu, že vidíme model<br />

robota v 3D, vieme si lepšie <strong>pre</strong>dstaviť, ako bude vyzerať, ako sa bude správať.<br />

Môžeme jednoducho meniť jeho parametre, vyskúšať rozmery, ktoré budú sedieť<br />

najlepšie. Pridávať rôzne senzory v ľubovoľnom počte, <strong>pre</strong>tože nie sme limitovaný<br />

cenou senzorov.<br />

Vďaka týmto simulátorom sa dajú jednoducho realizovať naše <strong>pre</strong>dstavy vo virtu-<br />

álnom svete, bez potreby stavať fyzického robota a možnosti, že ho poškodíme. Po<br />

odskúšaní a odladení jeho častí sa by mala konštrukcia reálneho robota <strong>pre</strong>biehať<br />

jednoduchšie.<br />

Nemusí to byť také jednoduché, <strong>pre</strong>tože sa ľahko môže stať, že zabudneme na nie-<br />

ktoré veci, ktoré zbadáme až na reálnom <strong>robotov</strong>i. Simulátor simuluje to, čo mu<br />

kážeme, takže je možné, že niečo vynecháme a odzrkadlí sa to v reálnom svete.<br />

Ohľadom <strong>softvérového</strong> balíka <strong>Player</strong>-<strong>Stage</strong>-Gazebo sme sa pozreli bližšie na jeho<br />

inštaláciu a popis krokov, ktoré treba splniť. Zamerali sme sa hlavne na časť balíka<br />

Gazebo, ktorý je 3D simulátorom, popísali tvorbu modelu a základy jeho ovládania<br />

vlastným programom.<br />

Práca nadväzuje na bakalársku prácu Bodnár (2009), ktorej náplňou bolo <strong>riadenie</strong><br />

chôdze robota Aibo pomocou neurónovej siete. V bakalárskej práci sa riešilo imi-<br />

tovanie chôdze robota Aibo neurónovou sieťou a pomocou pôvodnej chôdze Aiba<br />

do<strong>pre</strong>du a otáčania sa na mieste naučiť neurónovú sieť chôdzu do oblúka.<br />

Navrhnutá neurónová sieť bola schopná sa naučiť pôvodné chôdze robota Aibo s rôz-<br />

nou <strong>pre</strong>snosťou. Chôdzu do oblúka vpravo sa sieť naučila pri určitom počte neurónov<br />

v skrytej vrstve a chôdzu do oblúka vľavo sa sieť nedokázala naučiť.<br />

1


FEI KKUI<br />

1 Formulácia úlohy<br />

Úlohy zo zadania práce<br />

1. Vypracovať <strong>pre</strong>hľad softvérových prostredí <strong>pre</strong> <strong>riadenie</strong> <strong>robotov</strong>.<br />

2. Vypracovať úvod do <strong>softvérového</strong> systému <strong>Player</strong>-<strong>Stage</strong>-Gazebo.<br />

3. Inštalovať <strong>Player</strong>-<strong>Stage</strong>-Gazebo vo vybranom prostredí a vypracovať doku-<br />

mentáciu k inštalácii.<br />

4. Pripraviť ukážky aplikácií v <strong>Player</strong>-Gazebo <strong>pre</strong> vybrané úlohy.<br />

5. Analyzovať možnosti <strong>prostredia</strong> <strong>Player</strong>-<strong>Stage</strong>-Gazebo <strong>pre</strong> robota Nao.<br />

6. Dokumentácia.<br />

Prehľad spĺnenia úloch<br />

• v 2. kapitole sa nachádza <strong>pre</strong>hľad softvérových prostredí a úvod do <strong>prostredia</strong><br />

<strong>Player</strong>-<strong>Stage</strong>-Gazebo,<br />

• inštalácia <strong>softvérového</strong> <strong>prostredia</strong> Gazebo sa nachádza v kapitole 3,<br />

• ukážky aplikácií <strong>pre</strong> Gazebo sa nachádzajú v kapitole 5,<br />

• analýza možnosti <strong>prostredia</strong> Gazebo <strong>pre</strong> robota Nao sa nachádza v 6. kapitole,<br />

• v 4. kapitole je popísané, ako sa pracuje v prostredí Gazebo.<br />

2


FEI KKUI<br />

2 Úvod do projektu The <strong>Player</strong> project<br />

The <strong>Player</strong> projekt v sebe zahŕňa skupinu programov, ktoré umožňujú prácu a vý-<br />

skum s robotmi a senzorovými systémami. Celý projekt je pod licenciou GNU Ge-<br />

neral Public License a zdrojové kódy programov sú voľne šíriteľné.<br />

Projekt v sebe zahŕňa balíky <strong>Player</strong>, <strong>Stage</strong>, Gazebo. Pomocou týchto programov<br />

môžeme komunikovať s reálnymi robotmi, <strong>pre</strong>snejšie s programom <strong>Player</strong>, vďaka<br />

tomu, že sa správa ako server. Komunikovať môžeme len s tými robotmi, ktoré sú<br />

podporované, napríklad pioneer robot.<br />

Pomocou zvyšných dvoch programov <strong>Stage</strong> a Gazebo vieme simulovať prácu s ro-<br />

botmi, či už v 2D prostredí, to umožňuje <strong>Stage</strong>, alebo 3D prostredí Gazeba.<br />

2.1 História projektu<br />

Na univerzite v Južnej Karolíne sa pracovalo na multi-robot systémoch, kde v roku<br />

1998 prišli Brian Gerkey a Richard Vaughan. Tam napísal Richard simulátor via-<br />

cerých <strong>robotov</strong>, ktorý sa volal Arena. V laboratóriu sa používal systém Ayllu na<br />

robotoch Pioneer napísaný Barry Wergerom.<br />

Richard a Brain prišli s myšlienkou používania systému založeného na Unixe kvôli<br />

zlepšeniu práce na simulátore. V roku 1999 sa ku nim pridal Kasper Stoy a praco-<br />

vali na riadiacich programoch (controllers) <strong>pre</strong> <strong>robotov</strong>, kdež to Richard pracoval na<br />

socketovom rozhraní klient-kontrolér/server-robot. Riadiace programy boli objemné,<br />

<strong>pre</strong>to ich nechceli <strong>pre</strong>nášať na Ayllu, tak vznikol ArenaServer. Tento server bežal na<br />

robotoch a <strong>pre</strong>dstavoval rovnaké rozhranie typu socket ako Arena. Cele to fungovalo<br />

dobre, až na <strong>pre</strong>hľadnosť.<br />

Neskôr začali spoločne uvažovať o robotickom rozhraní, kde by pomocou socket ro-<br />

zhrania mohla <strong>pre</strong>biehať komunikácia bez potrebných znalostí programovania <strong>pre</strong><br />

daný hardvér, malo by to byť voľne šíriteľné, aby tam mohli ľudia vytvárať vlastné<br />

ovládače.<br />

3


FEI KKUI<br />

Brain a Kasper napísali nový server <strong>pre</strong> Pioneer roboty a nazvali ho Golem. Takto sa<br />

dostávame ku Golem/Arena rozhraniu, ktoré nahrádza ArenaServer. Toto rozhranie<br />

v sebe obsahovalo základnú funkcionalitu zo súčastného simulátora <strong>Player</strong>/<strong>Stage</strong>.<br />

Neskoršie boli inšpirovaný Shakespearovým dielom, kde javisko <strong>pre</strong>dstavuje svet a<br />

ľudia sú hercami. V roku 2002 začali Andrew Howard a Nate Koneig pracovať na<br />

projekte Gazebo.<br />

2.2 <strong>Player</strong>, server <strong>pre</strong> komunikáciu s reálnymi robotmi<br />

Tento balík umožňuje <strong>pre</strong>pojenie programov s robotickými a senzorovými hardvérmi.<br />

Správa sa ako sieťový server medzi programom a reálnym robotom. Má za úlohu<br />

<strong>pre</strong>pojiť pomocou client/server modulu program na ovládanie <strong>robotov</strong> s daným ro-<br />

botom.<br />

Využíva TCP komunikáciu a dokáže načítať údaje zo senzorov a posielať príkazy<br />

akčným členom robota. Umožňuje písanie kódu pod rôznymi programovacími ja-<br />

zykmi ako C++, TCL, Java, Python a spúšťanie na rozdielnych počítačových sys-<br />

témoch ako Windows, Linux, Solaris, *BSD.<br />

Dokáže sprostredkovať <strong>pre</strong>pojenie viacerých klientov, čím umožňuje rozdeľovať prácu<br />

medzi klientmi a následne zabezpečiť ich spoluprácu. Pôvodne bol vytvorený <strong>pre</strong> Ac-<br />

tivMedia Pioneer 2 family. V súčastnej dobe si <strong>Player</strong> rozumie aj s iným robotickým<br />

hardvérom a príslušenstvom.<br />

2.3 <strong>Stage</strong>, komponent <strong>pre</strong> 2D simuláciu<br />

<strong>Stage</strong> je simulátorom <strong>pre</strong> skupinu <strong>robotov</strong> v 2D prostredí. Je vytvorený <strong>pre</strong> výskum<br />

multi-agentových systémov. Obsahuje v sebe modely senzorov ako sonar, laser na<br />

meranie vzdialeností, senzor na počítanie urobených vzdialeností a kameru na de-<br />

tekciu <strong>pre</strong>dmetov.<br />

4


FEI KKUI<br />

Často je používaný ako modul <strong>pre</strong> <strong>Player</strong>a, kde roboty vytvorené pod <strong>Stage</strong>om sa<br />

pripájajú ako klienti ku <strong>Player</strong> serverom, ktorý sa môže tváriť, že umožňuje komu-<br />

nikáciu s reálnymi robotmi. Pritom len <strong>pre</strong>bieha simulácia, po ktorej je možná aj<br />

komunikácia s reálnymi robotmi.<br />

Obr. 2 – 1 Ukážka 2D simulácie v programe <strong>Stage</strong>. Na obrázku sa nachádza 2D mapa simulácie,<br />

ktorú je možné si jednoducho nakresliť v kresliacom programe a uložiť. <strong>Stage</strong> sa používa <strong>pre</strong>važne na<br />

simuláciu viacerých <strong>robotov</strong> a na komunikáciu medzi nimi, obrázok <strong>pre</strong>vzatý z domovskej stránky<br />

<strong>Stage</strong> (2011)<br />

2.4 Gazebo, komponent <strong>pre</strong> 3D simuláciu<br />

Gazebo je robotickým simulátorom v 3D prostredí, Koenig, N. Howard, (2004).<br />

• dokáže pracovať s jedným alebo viacerými robotmi, simuluje senzory a rôzne<br />

iné objekty,<br />

• obsahuje modely <strong>robotov</strong> ako Pioneer2DX, Pioneer2AT, SegwayRMP,<br />

• simulácia fyziky, roboti vedia manipulovať s ďalšími časťami sveta,<br />

• programy vedia samostatne pracovať s Gazebom vďaka knižnici libgazebo.<br />

AwareKitchen projekt v simulátore Gazebo<br />

Na Univerzite v Mníchove vytvorili robota schopného pracovať v kuchyni. Celý tento<br />

5


FEI KKUI<br />

Obr. 2 – 2 Ukážka 3D simulácie v programe Gazebo. Na obrázku je možné vidieť štvorkolesový<br />

model robota s laserom na streche. Vedľa je obrázok, ktorý ukazuje , čo vidí robot a tak isto čo<br />

zachytáva laser, obrázok <strong>pre</strong>vzatý z domovskej stránky Gazebo (2011). Menší obraz <strong>pre</strong>dstavuje<br />

to, čo robot vidí svojou kamerou<br />

projekt je aj odsimulovaný v simulátore Gazebo autormi Kranz, M. Rusu, R. B.<br />

Maldonado, R. A. (2006). Vďaka simulácii je možné testovať algoritmus riadenia<br />

robota bez toho, aby sa použil skutočný robot. Takto je možné sledovať správanie<br />

sa robota a <strong>pre</strong>dvídať možné komplikácie u reálneho robota. Pomocou <strong>Player</strong>a je<br />

možné zachytiť reálne údaje robota a <strong>pre</strong>viesť do simulátora.<br />

Planetary Exploration Rover<br />

V ďalšom prípade bol Gazebo použitý pri simulácii výskumného robotického vozíka<br />

<strong>pre</strong> iné planéty, konkrétne Mars. Correal R. (2008) sa zaoberal výskumom ohľadom<br />

autonómneho chovania sa vozíka. Využívalo sa pri tom 3D videnie pomocou stereo<br />

kamier, 3D mapovanie terénu, autonómna navigácia, vyhýbanie sa <strong>pre</strong>kážkam,<br />

2.5 Alternatívne projekty<br />

Zrodilo sa viacero podobných simulačných programov, ktoré je možné voľne použí-<br />

vať, alebo sú komerčné. Každý z nich dáva užívateľom rôzne možnosti, majú svoje<br />

klady a zápory. Všetky moderné simulátory sa snažia o to, aby:<br />

6


FEI KKUI<br />

Obr. 2 – 3 Na obrázku je ukážka z AwareKitchen projektu reálnej kuchyne s modrým robotom<br />

a simulácia v Gazebo programe s červeným robotom. Obrázok <strong>pre</strong>vzatý z práce Kranz, M. Rusu,<br />

R. B. Maldonado, R. A. (2006)<br />

Obr. 2 – 4 Ukážka simulácie rovera. Terén sa snaží čo najvernejšie kopírovať povrch planéty Mars.<br />

Obrázok <strong>pre</strong>vzatý z práce Planetary exploration rover (2008)<br />

• tvorba <strong>robotov</strong> v simulátore bola rýchla a čo najjednoduchšia,<br />

7


FEI KKUI<br />

• boli implementované nástroje <strong>pre</strong> modelovanie reálnej fyziky,<br />

• program umožňoval 3D renderovanie a modelovanie,<br />

• telá <strong>robotov</strong> boli dynamické.<br />

Krátka charakteristika niektorých robotických simulátorov<br />

• Blender for robotics,<br />

• breve,<br />

• lpzrobotics,<br />

• ROS (Robot operating system),<br />

• RT Middleware,<br />

• Microsoft Robotics Studio.<br />

Blender for robotics<br />

Blender for robotics (2011) <strong>pre</strong>dstavuje voľne šíriteľný nástroj pod licenciou GNU<br />

<strong>pre</strong> prácu s 3D grafikou. Umožňuje pracovať s modelmi, textúrami, simulovať vodu<br />

a hmlu, animovať, renderovať, umožňuje kompozíciu, vytvárať interaktívne 3D ap-<br />

likácie vrátanie hier, animovaných filmov a vizuálnych efektov.<br />

Pracovať dokáže v prostredí Windows, Linux, Mac OS X, FreeBSD, OpenBSD, So-<br />

laris. Pre prácu s robotmi a senzormi je Blender For Robotics.<br />

breve<br />

Je to program na 3D simuláciu multi-agentových systémov a umelého života. Použiť<br />

je možné programovací jazyk Python, alebo skriptovací jazyk steve, vďaka ktorým<br />

je možné definovať chovanie agentov v 3D svete a sledovať ich vzájomnú interakciu.<br />

Simulátor v sebe obsahuje simuláciu fyziky a detekciu kolízie, takže je možná reálna<br />

simulácia bytostí. Program beží na systémoch Windows, Linux, Mac OS.<br />

lpzrobotic<br />

8


FEI KKUI<br />

Obr. 2 – 5 Ukážka z programu Blender for robotics, obrázok <strong>pre</strong>vzatý zo stránky Blender for<br />

robotics (2011)<br />

Obr. 2 – 6 Ukážka k simulátoru breve z VisionSwarm dema, <strong>pre</strong>dstavuje skupinu agentov. Menší<br />

obrázok <strong>pre</strong>dstavuje, čo vidí vybraný agent, zdroj breve (2006)<br />

Ďalším z rodiny open-source simulátorov je simulátor lpzrobots z nemeckej univer-<br />

zity Leipzig. Tento balík v sebe obsahuje viacero podprogramov, z ktorých najdô-<br />

ležitejšími sú selforg a ode robots. Prvý spomenutý sa používa na implementáciu<br />

kontrolérov, druhý ode robots je 3D realistický robotický simulátor, pozostáva z<br />

ODE (Open Dynamics Engine) a OSG (OpenSceneGraph). Oba časti sú vyvíjané<br />

Georgom Martiusom.<br />

9


FEI KKUI<br />

Program je možné stiahnuť s rôznymi balíkmi <strong>pre</strong> Linux a Mac OS. Väčšina zdro-<br />

jového kódu je pod licenciou GPL, ale niektoré kontroléry sú chránené autorským<br />

zákonom.<br />

V balíkoch sa nachádzajú aj také frameworky, ktoré umožňujú využitie genetických<br />

algoritmov alebo genetické programovanie.<br />

Obr. 2 – 7 Na obrázku simulátora lpzrobotic je priebeh robotického wrestlingu, <strong>pre</strong>vzaté z lpzro-<br />

botics (2010)<br />

ROS (Robot operating system)<br />

ROS (2011) je framework <strong>pre</strong> tvorbu robotických aplikácií, ktorý sa chová ako opera-<br />

čný systém. Poskytuje abstrakciu hardvéru, <strong>riadenie</strong> na najnižšej úrovni, posielanie<br />

správ medzi procesmi. Používa sa <strong>pre</strong>važne na systémoch typu Unix, ale niektoré<br />

časti bežia aj na systémoch Windows. Distribuovaný je pod licenciou BSD a má<br />

voľné zdrojové kódy.<br />

Zoznam niektorých <strong>robotov</strong>, ktoré môžu byť použité s týmto balíkom:<br />

• AscTec - štvorvrtuľový lietajúci robot,<br />

• Nao - humanoidný robot,<br />

• Lego NXT - robotická stavebnica od firmy Lego,<br />

• Roomba - robotický vysávač,<br />

10


FEI KKUI<br />

• Merlin miabotPro - malý, autonómny, mobilný robot.<br />

• a ďalšie.<br />

Microsoft robotics developer studio<br />

Je to softvér na riadenia a simuláciu <strong>robotov</strong> v prostredí systému Windows či už<br />

<strong>pre</strong> nadšencov, akademickú úroveň alebo komerčný vývoj. Pomocou MRDS môžeme<br />

riadiť roboty na diaľku alebo nastaviť autonómne správanie sa robota. Vďaka 3D<br />

simulácii vidíme správanie sa robota.<br />

Microsoft RDS vie komunikovať s viacerými robotickými platformami, ako sú:<br />

• Nao,<br />

• iRobot - založenom na Roomba vysávači,<br />

• Seegway - dvojkolesové vozítko na <strong>pre</strong>pravu osoby,<br />

• Scribbler robot - malý programovateľný robot so senzormi,<br />

• a mnoho ďalších.<br />

Práca v programe umožňuje nasledujúce veci:<br />

1. <strong>pre</strong>pojenie s Visual Studio projektamy v C#, C, VB.NET,<br />

2. vizuálneho programovania - je to grafické vývojové prostredie, programuje sa<br />

pomocou spájania blokov, vstupov a výstupov. Bližšia <strong>pre</strong>dstava na obrázku<br />

2 – 8<br />

3. MRDS 3D - prostredie <strong>pre</strong> simuláciu <strong>robotov</strong> pomocou NVIDIA PhysX tech-<br />

nológie,<br />

RT Middleware<br />

RT Middleware (Robotics Technology Middleware) <strong>pre</strong>dstavuje štandardnú plat-<br />

formu <strong>pre</strong> distribuované <strong>riadenie</strong>. Táto platforma umožňuje <strong>pre</strong>pojenie <strong>robotov</strong> do<br />

sietí pomocou RT-objektov. Bližšie špecifikácie štandardov RT-objektov sú defino-<br />

vané v OMG (Object Management Group). Prevzaté zo stránok RT Middleware<br />

11


FEI KKUI<br />

Obr. 2 – 8 Ukážka <strong>pre</strong>pojenia blokov pomocou vizuálneho programovania, kde každý blok má<br />

svoj vstup a výstup. Vo vnútri bloku sa nastavujú ďalšie potrebné parametre, obrázok <strong>pre</strong>vzatý zo<br />

stránky MRDS (2006).<br />

(2011) Medzi jednotlivé RT-objekty môžeme zaradiť:<br />

• aktuátory,<br />

• servomotory,<br />

• kamery,<br />

• senzory a ďalšie.<br />

Implementácia RT Middleware:<br />

• OpenRTM-aist - RT Middleware je realizovaný na základoch CORBA plat-<br />

formy. Vďaka vlastnostiam CORBA platformy je OpenRTM-aist prístupný<br />

<strong>pre</strong> multi-platformné a multi-jazykové <strong>prostredia</strong>,<br />

• penRTM.NET - je implementáciu RT Middlewaru na základoch .NET frame-<br />

worku.<br />

12


FEI KKUI<br />

Tabuľka 3 – 1 Súbory <strong>pre</strong> prácu s Gazebom<br />

súbor typu xml popis súboru<br />

*.world obsahuje informácie o svete, v ktorom <strong>pre</strong>bieha simulácia,<br />

obsahuje nastavenia fyziky, okna aplikácie,<br />

informácie o použitom modely, kde je uložený<br />

*.model obsahuje informácie o modely,<br />

rozmery, stavba modelu a jeho časti a<br />

umiestnenie vo svete<br />

3 Práca v simulátore Gazebo<br />

Pre spustenie simulácie si musíme vytvoriť súbor typu xml s koncovkou *.world a<br />

*.model. Tieto súbory slúžia na definovanie sveta, v ktorom <strong>pre</strong>bieha simulácia a<br />

na modelovanie tela robota alebo rôznych iných <strong>pre</strong>dmetov, vychádzam <strong>pre</strong>važne zo<br />

zdrojov Gazebo svn (2010). Zhrnuté v tabuľke 5 – 1.<br />

Jazyk XML Dokument typu XML sa skladá z kombinácie značiek a znakov. Značky<br />

<strong>pre</strong>dstavujú štruktúru XML formátu a znaky jeho obsah. Pri vytváraní XML súboru<br />

sa musia dodržiavať nasledujúce pravidlá, <strong>pre</strong>vzaté zo zdroja XML (1998):<br />

• každý element XML musí mať začiatočnú aj koncovú značku,<br />

• dokument XML musí obsahovať jediný pár značiek (skladajúci sa zo začiato-<br />

čnej a koncovej značky), tzv. koreňový element dokumentu, v ktorom sú všetky<br />

ostatné elementy vložené. Na koreni nemôže byť viac elementov.<br />

• počiatočné a koncové značky každého elementu musia byť riadne vnorené,<br />

vnorený element musí byť celý obsiahnutý vo svojom nadradenom elemente.<br />

Inými slovami, počiatočné a koncové značky vložených elementov sa nesmú<br />

<strong>pre</strong>krývať, ako to bolo povolené v HTML. To zaisťuje hierarchickú štruktúru<br />

dokumentu XML.<br />

Ak dokument XML spĺňa tieto pravidlá, potom je správne štruktúrovaný.<br />

13


FEI KKUI<br />

Začiatok súboru *.world je tvorený hlavičkou, ktorej tvar je 5 – 2, kde na mieste ***<br />

môžu byť použité rôzne kľúčové slová, podľa toho, ktoré časti sa použijú vo svete,<br />

sú to:<br />

model, senzor, body, joints, geoms, interfaces, rendering, renderable, controler, phy-<br />

sics, param, ui, windows.<br />

Krátka charakteristika týchto slov:<br />

• model - <strong>pre</strong>dstavuje použitie konkrétneho modelu v našej simulácii a zahrňuje<br />

potrebné informácie <strong>pre</strong> model. Je možné použiť už existujúce modely naprí-<br />

klad ako Pioneer 2, wizbot, epuck, bandit, alebo vlastný vytvorený model, kde<br />

celý model je definovaný v tagu 〈model〉.<br />

• senzor - určuje použitie senzora, ktorý môže byť napríklad základný kamerový<br />

senzor, SickLMS200 laser senzor, alebo vlastný vytvorený senzor,<br />

• body - definuje v sebe potrebné časti <strong>pre</strong> stavbu tela robota,<br />

• joints - obsahuje definície <strong>pre</strong> tvorbu kĺbov: Ball Joint, Hinge Joint, Hinge 2<br />

Joint, Universal Joint, Slider Joint ,<br />

• geoms - <strong>pre</strong>dstavuje definície <strong>pre</strong> stavbu tela Box Geom, Cylinder geom, Height<br />

map geom, Plane Geom, Ray geom, Sphere geom, Triangle Mesh geom,<br />

• interface - rozhrania v simulátore, cez ktoré komunikujeme s robotom, naprí-<br />

klad: simulation, camera, position, graphics3d, laser, fiducial, factory, gripper,<br />

actarray,<br />

• controler - slúži na komunikáciu s robotom v simulátore pomocou knižnice<br />

libgazebo. Každý model má svoj kontrolér a je možné použiť už existujúce,<br />

ale potom robot musí byť prispôsobený danému kontroléru. Zoznam kontrolé-<br />

rov: bandit actarray generic camera, controller stub, factory, pioneer2 gripper,<br />

sicklms200, pioneer2dx position2d,<br />

• physics - údaje o chovaní sa fyziky v simulátore, pod to všetko spadajú geoms,<br />

14


FEI KKUI<br />

joints, ODE.<br />

3.1 Gazebo modely<br />

Základné modely, ktoré sú obsiahnuté v balíku sa po inštalácii nachádzajú v adresári<br />

/ usr / l o c a l / share / gazebo / worlds<br />

a sú to:<br />

• bandit.world - robot s trupom a rukami, spojený s pioneer2dx modelom, vďaka<br />

ktorému sa môže pohybovať po svete,<br />

• bsp.world - chyba pri načítaní,<br />

• bumper.world - pioneer2dx robot a laser,<br />

• epuck single.world - chyba pri načítaní,<br />

• epuck.world - chyba pri načítaní,<br />

• federation.world - mapa so stenami,<br />

• laser.world - chyba pri načítaní,<br />

• lights.world - ukážka osvetlenia,<br />

• map.world - podobné ako federation.world, ale väčšia mapa s miestnosťami<br />

oddelenými stenami a chodbami,<br />

• openal.world - ukážka so zvukom,<br />

• pioneer2at.world - štvorkolesové robotické auto,<br />

• pioneer2dx camera.world - robot pioneer2dx s namontovanou kamerou,<br />

• pioneer2dx gripper.world - robotické chápadlo, držiak,<br />

• pioneer2dx.world - vozík pioneer2dx,<br />

15


FEI KKUI<br />

• simplecar.world - štvorkolesové auto,<br />

• simpleshapes.world - model kocky s povrchom,<br />

• stereocamera.world - chyba pri načítaní,<br />

• terrain.world - simulácia terénu,<br />

• trimesh.world - padajúce palety,<br />

• wizbot.world - vozítko vizbot.<br />

Nachádza sa tam jeden priečinok models, v ktorom sa nachádzajú modely, ktoré sú<br />

volané zo súborov *.world:<br />

• athene.model - problém s meshom,<br />

• bandit.model,<br />

• epuck new.model- problém sa resRange,<br />

• generalshop.model - problém s meshom„<br />

• hokuyo-urg-o4l.model - problém s resRange,<br />

• imu.model - mala zelena kocka,<br />

• pioneer2at.model,<br />

• pioneer2dx.model,<br />

• pioneer2gripper.model,<br />

• RZR-022.model - problém s meshom,<br />

• sicklms200.model - laser,<br />

• simplecar.model - auto,<br />

• sonyvid30.model - kamera,<br />

• wizbot.model - robot s dvoma kolesami.<br />

16


FEI KKUI<br />

Tieto súbory svetov a modelov sa môžu v niektorých verziách líšiť. Môže pribudnúť<br />

nový model, starý sa odstráni a podobne.<br />

Programy, ktoré slúžia na komunikáciu a <strong>riadenie</strong> modelu sa nachádzajú v priečinku:<br />

˜/Dokumenty/ svngazebo / gazebo / examples / l i b g a z e b o /<br />

Nachádzajú sa tu ukážky programov <strong>pre</strong><br />

bandit bumper camera epuck f a c t o r y graphics3d l a s e r openal p o s i t i o n<br />

s i m i f a c e s t e r e o<br />

Kompilácia programu v danom priečinku <strong>pre</strong>bieha pomocou cmake takto:<br />

cmake .<br />

Po úspešnej kompilácii napíšeme príkaz<br />

make<br />

a program by mal byť <strong>pre</strong>ložený.<br />

Ak spustíme Gazebo nasledujúcim príkazom:<br />

gazebo ∗ . world<br />

mali by sme byť schopný vidieť zobrazený model, ktorý sa len otvorí v simulácii ale<br />

nijako inak sa ne<strong>pre</strong>javuje. Až keď spustíme program na jeho ovládanie, tak sme<br />

schopný vidieť nejaký ten pohyb v simulácii.<br />

3.2 Vytvorenie sveta v súbore *.world<br />

Po hlavičke nasleduje ďalšia časť kódu 3 – 3. Toto slovo znamená mnohotvarosť. Blok<br />

textu physics:ode obsahuje nastavenia fyziky nášho simulovaného sveta. Hodnota erp<br />

(Joint error and the error reduction parameter) <strong>pre</strong>dstavuje parameter chyby pri<br />

spájaní kĺbov a ich otáčaní. Druhou hodnotou je cfm (Soft constraint and constraint<br />

force mixing), ktorá keď je rovná 0, spájanie kĺbov alebo trenie medzi nimi bude<br />

tvrdé.<br />

17


FEI KKUI<br />

<br />

<br />

Tabuľka 3 – 3 Nastavenia parametra verbosity a parametrov <strong>pre</strong> ODE.<br />

5<br />

<br />

0.001<br />

0 0 −9.8<br />

10e−5<br />

0.3<br />

<br />

Nastavovaním týchto konštánt sa dá dosiahnuť rôznych efektov, ako pórovitý povrch<br />

kĺbov alebo pružnú väzbu bez oscilácií. Podrobnejší a <strong>pre</strong>snejší opis týchto dvoch<br />

hodnôt je možné nájsť na stránkach programu ODE (2007).<br />

Nasledujúca tabuľka 3 – 4 <strong>pre</strong>dstavuje časť kódu <strong>pre</strong> návrh užívateľského okna GUI.<br />

Návrh <strong>pre</strong> sledovanie simulácie je nasledovný, nastavia sa rozmery okna a ostáva už<br />

len určenie polohy kamery vo svete.<br />

Používa sa skôr spomínaný program <strong>pre</strong> tvorbu užívateľských grafických okien,<br />

FLTK.<br />

Gazebo používa OGRE rendering engine, ktorého definícia začína tagom ,<br />

viď 3 – 5. Hodnotou ambient sa nastavuje okolné svetlo, množstvo okolitého svetla.<br />

Hodnota sky <strong>pre</strong>dstavuje materiál, ktorý bude použitý na simuláciu oblohy.<br />

18<br />

. . .


FEI KKUI<br />

Tabuľka 3 – 4 Nastavenie vykreslenia okna <strong>pre</strong> Fltk.<br />

<br />

f l t k <br />

800 600<br />

<br />

<br />

<br />

0.005 0 . 0 0.3 <br />

<br />

<br />

<br />

<br />

Tabuľka 3 – 5 Údaje potrebné <strong>pre</strong> OGRE.<br />

<br />

0.1 0 . 1 0 . 1 1.0 <br />

<br />

Gazebo/CloudySky<br />

<br />

f a l s e <br />

<br />

Ďalšou hodnotou by mohla byť hmla (fog).<br />

V tabuľke 3 – 6 sa nachádza nastavenie povrchu simulácie. Súradnice xyz a uhol<br />

sklonu rpy sú nastavené na nulu. Hodnotou static sa nastaví, či je model statický,<br />

bez pohybu alebo je mu umožnený pohyb, možnosť <strong>pre</strong>sunu. V časti body:plane<br />

name=”plane1 body” sa definuje meno.<br />

Koeficient trenia je možné nastaviť pomocou mu1 a mu2. Mu1 <strong>pre</strong>dstavuje smer 1<br />

a mu2 smer 2.<br />

Aby bolo možné vidieť, čo sa počas simulácie deje, je potrebné v simulátore nastaviť<br />

svetlo 3 – 7.<br />

19


FEI KKUI<br />

Tabuľka 3 – 6 Definícia modelu povrchu simulácie.<br />

<br />

<br />

0 0 0<br />

0 0 0<br />

true <br />

<br />

<br />

0 0 1<br />

100000.0<br />

100000.0<br />

2000 2000<br />

10 10<br />

2000 2000<br />

Gazebo/GrayGrid<br />

<br />

<br />

<br />

20


FEI KKUI<br />

Tabuľka 3 – 7 Nastavenie modelu svetla.<br />

<br />

<br />

0 0 10<br />

true <br />

<br />

f a l s e <br />

point <br />

0.5 0.48 0.5 <br />

.1 . 1 .1<br />

50<br />

<br />

0.1 0.01 0.00 <br />

<br />

<br />

<br />

. . .<br />

<br />

<br />

21


FEI KKUI<br />

Poslednou úlohou je nastavenie modelu, o ktorom budem písať v ďalšej časti. Model<br />

môžeme vytvoriť v našom súbore *.world, časť 1 v tabuľke 3 – 8, alebo ho načítať<br />

zo súboru *.model, časť 2 a 3 v tabuľke. V 2 časti sa len načíta súbor obsahujúci<br />

model a v 3 časti sa <strong>pre</strong>dtým ako sa načíta model zo súboru, môžu nastaviť nové<br />

parametre modelu, ktoré <strong>pre</strong>píšu tie pôvodné. Vďaka súboru *.model môžu byť<br />

modely <strong>pre</strong>hľadnejšie uložené.<br />

Posledný riadok v tabuľke <strong>pre</strong>dstavuje ukončenie súboru *.world.<br />

3.3 Vytvorenie modelu<br />

Všetky fyzikálne vlastnosti modelu sa nastavujú v tomto súbore, či už ide o pozíciu<br />

vo svete alebo jeho veľkosť a počet jeho častí.<br />

Ako ukážku použijem jednoduchý model kvádra, ktorý je možné vložiť do sveta opí-<br />

saného v <strong>pre</strong>dchádzajúcej kapitole spôsobom 1 v tabuľke 3 – 8.<br />

Model začína tagom , v ktorom sa následne vytvárajú jeho ďalšie časti<br />

pomocou tagu a , viď tabuľku 3 – 9. Každá časť modelu má svoje<br />

meno, tak isto ako samotný model. Náš model sa bude nachádzať vo svete na súrad-<br />

niciach x=-16, y=0 a vo výške z=0 a model nemá žiaden sklon. Parameter statiky<br />

je nastavený na true, to znamená že je to statický model.<br />

Po týchto častiach nasleduje definícia tela. Telo nie je posunuté vzhľadom na mo-<br />

del, <strong>pre</strong>to sú súradnice x=0, y=0, z=0. Hodnota size <strong>pre</strong>dstavuje aký veľký má byť<br />

model.<br />

Hore uvedená ukážka je len základom tvorby modelov. Modely <strong>robotov</strong> sa v skuto-<br />

čnosti skladajú z viacerých častí (body), ktoré sú medzi sebou pospájané a tvoria<br />

celé telo robota. Niektoré časti sú pohyblivé a ich vzájomné <strong>pre</strong>pojenie je pomocou<br />

kĺbov.<br />

Hodnotou mass bol nahradený starší parameter density, ktorou sa počítala hmot-<br />

nosť modelu. Parameter mass je pri niektorých modeloch nastavený na nulu. Ak<br />

22


FEI KKUI<br />

<br />

Tabuľka 3 – 8 Vkladanie modelu do súboru *.world<br />

<br />

. . .<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

1 0 0.25 <br />

0.0 0 . 0 0.0 <br />

<br />

l e f t w h e e l h i n g e <br />

r i g h t w h e e l h i n g e <br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

23


FEI KKUI<br />

Tabuľka 3 – 9 Príklad definície samotného modelu<br />

<br />

−16 0 0<br />

0.0 0 . 0 0.0 <br />

true <br />

<br />

0 0 0<br />

0.0 0 . 0 0.0 <br />

<br />

unit box <br />

.2 . 2 .6<br />

0.5<br />

0.8<br />

<br />

.2 . 2 .6<br />

0 0 0<br />

unit box <br />

Gazebo/ b o x c r e a t e b l u e <br />

0.8 0 . 8 0.8 <br />

<br />

<br />

<br />

<br />

24


FEI KKUI<br />

Tabuľka 3 – 10 Príklad definície kĺbu typu Hinge, ktorý spája dve časti (body) modelu. Anchor<br />

<strong>pre</strong>dstavuje, ktorá časť je hlavná, axis <strong>pre</strong>dstavuje v ktorom smere sa bude kĺb otáčať, lowStop a<br />

highStop sú kladné a záporné možné hodnoty pootočenia kĺbu, erp koeficien trenia.<br />


FEI KKUI<br />

3.4 Komunikácia s modelom pomocou kontroléra<br />

Základom <strong>pre</strong> komunikáciu s modelom je kontrolér. Kontrolér <strong>pre</strong>dstavuje program,<br />

ktorý zabezpečuje <strong>pre</strong>nos údajov medzi simuláciou a našim programom, viď 3 – 1.<br />

Obr. 3 – 1 Komunikácia s Gazebom <strong>pre</strong>bieha pomocou knižnice libgazebo, vďaka ktorej nepotre-<br />

bujeme program <strong>Player</strong>. Pod libgazebom sa nachádza kontróler <strong>pre</strong> konkrétny typ modelu, až tak<br />

sa <strong>pre</strong>pojenie komunikácie dostáva k nášmu programu.<br />

Kontroléry sa nachádzajú v priečinku<br />

˜/Dokumenty/ svngazebo / gazebo / s e r v e r / c o n t r o l l e r s /<br />

Každý z týchto kontrolérov slúži na ovládanie určitého druhu modelu, robota. Tak<br />

napríklad position kontrolér zabezpečuje pohyb robota pioneer2dx. Je ho možné<br />

použiť na modely s dvoma kolesami. Kontrolér bandit actarray zabezpečuje komu-<br />

nikáciu so zadaným počtom kĺbov.<br />

Model môže mať definovaných viacero kontrolérov, ako napríklad model bandit,<br />

ktorý <strong>pre</strong>dstavuje model trupu s hlavou a rukami a je spojený s modelom pioneer2dx,<br />

vďaka ktorému má možnosť sa pohybovať vo svete.<br />

Problémy nastávajú, ak žiaden zo zadaných kontrolérov nespĺňa naše požiadavky.<br />

Vtedy treba napísať vlastný, alebo upraviť jeden z existujúcich. Bližšie o kontrolé-<br />

roch sa nachádza na stránke Gazebo svn (2010).<br />

3.5 Vizuálne prostredie simulátora Gazebo<br />

Po dokončení návrhu sveta a modela môžeme spustiť simuláciu. Stačí zadať príkaz<br />

gazebo n a s s v e t . world<br />

a otvorí sa okno programu Gazebo a spustí sa priebeh simulácie, viď obrázok 3 – 2.<br />

Jednotlivé očíslované časti okna <strong>pre</strong>dstavujú:<br />

26


FEI KKUI<br />

Obr. 3 – 2 Okno simulátora Gazebo s <strong>pre</strong>biehajúcou simuláciou. Zatiaľ len ukážka základného<br />

modelu, kvádra. Ak model nie je statický, tak sa pri pozastavení simulácie je možné ho <strong>pre</strong>miestniť,<br />

poprípade otočiť rôznymi smermi.<br />

1. tlačidla <strong>pre</strong> spustenie a zastavenie simulácie, kurzor <strong>pre</strong> pohyb vo svete a<br />

pomocou ruky je možné <strong>pre</strong>miestňovať model,<br />

2. <strong>pre</strong>dstavuje geometrické tvary, kváder, guľu a valec, ktoré je možné vložiť<br />

priamo do simulácie,<br />

3. týmito tlačítkami je možné vložiť ďalšie zdroje svetla,<br />

4. na tomto mieste si vieme nastaviť uhol pohľadu kamery, alebo sledovanie po-<br />

hybujúceho modelu,<br />

5. zoznam modelov vo svete,<br />

27


FEI KKUI<br />

6. parametre modelu načítané spolu s modelom, ktoré je možné počas simulácie<br />

meniť,<br />

7. poloha kamery v simulátore,<br />

8. ukazovatele priebehu času simulácie,<br />

9. náš model vo svete.<br />

V obrázku je model označený. Označiť model je možné podržaním klávesy ctrl a<br />

stlačením kurzora na vybraný model. Po označení je možné meniť súradnice modelu<br />

a ľubovoľne ho <strong>pre</strong>miestňovať vo svete.<br />

28


FEI KKUI<br />

4 Praktická časť<br />

V tejto časti práce je popis skúsenosti s inštaláciou Gazeba, tvorbou modelov a ich<br />

ovládaním. Taktiež popis postupu pri programovaní, ako sa pripojiť na náš vytvo-<br />

rený model, ako sním komunikovať a ovládať ho.<br />

Po úspešnej inštalácii máme prístup k ukážkovým modelom a programom, ktoré<br />

slúžia na komunikáciu a ovládanie modelov. Po prvej úspešnej inštalácii Gazeba sa<br />

nepodarilo spustiť všetky modely. Niektoré sa zobrazili, iné sa nezobrazili správne<br />

a pri ďalších nastali chybové hlásenia od programu Gazebo, po ktorých program<br />

spadol. Nie všetky modely majú <strong>pre</strong>písané <strong>pre</strong> novšie časti Gazeba, <strong>pre</strong>tože v sta-<br />

rších verziách sa niektoré časti modelov ináč definovali, alebo mohol byť problém na<br />

strane Gazeba alebo jeho pomocných balíkov.<br />

Po vyskúšaní SVN verzie sa podarilo spustiť väčšinu modelov, ale aj to záležalo od<br />

verzie SVN. Horšie je to so zdrojovými súbormi programov, ktoré by mali komuni-<br />

kovať s modelom, tam sa podarilo <strong>pre</strong>ložiť len program openal.<br />

Na týchto skutočnostiach sme sa pokúsili postaviť model, ktorý by bol podobný<br />

modelu bandit a bolo by ho možné ovládať jeho kontrolérom, <strong>pre</strong>tože model bandit<br />

sa nepodarilo pomocou jeho programu ovládať. Niekedy sa stalo, že sa model bandit<br />

začal nevysvetliteľne hýbať, pravdepodobne sú tam kolízie súradníc, inokedy Gazebo<br />

hlásilo chybu.<br />

4.1 Inštalácia programu Gazebo pod systémom Linux<br />

Inštalácia programu Gazebo je zložitá. Potrebujeme stiahnuť zdrojové súbory prog-<br />

ramu, následne úspešne kompilovať a tak inštalovať.<br />

Zložitosť inštalácie závisí <strong>pre</strong>važne od toho, že je potrebné stiahnuť ďalšie programy<br />

a knižnice <strong>pre</strong> úspešný beh Gazeba. Niektoré z týchto programov je tiež potrebné<br />

najprv zkompilovať, až tak inštalovať. Môže sa stať, že sa v novších verziách niektoré<br />

časti programov zmenia a spolupráca s Gazebom môže vyvolať rôzne chyby. Vtedy<br />

29


FEI KKUI<br />

treba skúsiť nainštalovať staršie verzie, s ktorými môže byť zabezpečená lepšia kom-<br />

patibilita.<br />

Gazebo je možné nainštalovať bez programu <strong>Player</strong>, <strong>pre</strong>tože knižnicou libgazebo sme<br />

schopný komunikovať s robotom počas simulácie. Ak by sme mali aj hardvérovú časť<br />

robota, tak pomocou <strong>Player</strong>a by sme mali byť schopný komunikovať s robotom. Sa-<br />

mozrejme potrebujeme drivery, ktoré ak nie sú dostupné <strong>pre</strong> náš robot, tak si ich<br />

musíme sami napísať <strong>pre</strong> <strong>Player</strong>a.<br />

Program Cmake<br />

Cmake (Cross-platform make)je viacplatformový program na tvorbu Makefile sú-<br />

borov, pomocou ktorých sa <strong>pre</strong>kladá náš program. Sú to súbory, ktoré obsahujú<br />

pravidlá <strong>pre</strong> kompiláciu programu, ktorý sa môže skladať z množstva zdrojových<br />

súborov. Tým pádom, že je multiplatformový, vie generovať makefile súbory pod<br />

Linuxom, <strong>pre</strong> kompiláciu pomocou make, alebo <strong>pre</strong> <strong>pre</strong> Windows MSVC projekty,<br />

Borland makefile projekty. Pomocou tohoto programu budeme zostavovať Gazebo<br />

zdrojové súbory a následne kompilovať príkazom make.<br />

Cmake je možné nainštalovať nasledujúcim spôsobom:<br />

sudo apt-get install cmake<br />

Balík <strong>pre</strong> <strong>pre</strong>klad programov<br />

Aby sme mohli <strong>pre</strong>kladať zdrojové súbory napísané v jazyku c alebo c++, potrebu-<br />

jeme stiahnuť balíček build-essential nasledovným spôsobom:<br />

sudo apt-get install build-essential<br />

Teraz už môžeme kompilovať zdrojové súbory s príponou c a cc.<br />

4.1.1 Inštalácia <strong>Player</strong>a<br />

Zdrojové súbory programu <strong>Player</strong> sa nachádzajú na stránke projektu The <strong>Player</strong><br />

project (2011). Samotná inštálácia <strong>pre</strong>bieha nasledovne 4 – 1.<br />

30


FEI KKUI<br />

Tabuľka 4 – 1 Inštalácia programu <strong>Player</strong> verzie 3.0.2, zo zdrojových súborov.<br />

. / c o n f i g u r e<br />

make<br />

sudo make i n s t a l l<br />

4.1.2 Potrebné balíky a knižnice <strong>pre</strong> úspešnú inštaláciu Gazeba<br />

Gazebo 0.10.0 svn verzie sa podarilo nainštalovať pomocou nasledujúcich programov:<br />

• knižnica Ode 0.11.1, <strong>pre</strong> simuláciu fyziky modelov,<br />

• balík Ogre 1.7.1, balík <strong>pre</strong> 3D vykresľovanie,<br />

• Fltk 1.1, slúži na vytvorenie grafického okna simulácie,<br />

• Bullet 2.77, knižnica na detekciu kolízie,<br />

• Yaml 0.1.3, jazyk <strong>pre</strong> serializáciu dát,<br />

• Libxml2, xml syntaktický analyzátor.<br />

Niektoré z týchto balíkov potrebujú niekoľko ďalších knižníc alebo balíkov.<br />

Ode<br />

(Open dynamic engine) <strong>pre</strong>dstavuje balík nástrojov, ktorý simuluje fyziku modelov.<br />

Môžu to byť rôzne autá, objekty, postavy vo virtuálnej realite.<br />

Inštalácia, viď 4 – 2. je možná zo zdrojových súborov nachádzajúcich sa na stránke<br />

projektu, alebo z repozitáru Ubuntu, kde sú už pripravené binárne súbory na stia-<br />

hnutie a inštalácia vyzerá nasledovne:<br />

sudo apt-get install libode1 libode-dev<br />

Ogre<br />

(Object-Oriented Graphics Rendering Engine) je 3D engine vytvorený v jazyku<br />

C++, orientovaný na kreslenie scenérií. Účelom vytvorenia bola snaha zjednodu-<br />

31


FEI KKUI<br />

Tabuľka 4 – 2 Inštalácia balíka Ode, verzia 0.11.1, stránka projektu ODE (2007)<br />

. / c o n f i g u r e<br />

make<br />

sudo make i n s t a l l<br />

Tabuľka 4 – 3 Inštalácia balíka zo stránok projektu OGRE (2000), verzia 1.7.1. Na inštaláciu sa<br />

používa program cmake, v hlavnom adresári je potrebné <strong>pre</strong>d inštaláciou vytvoriť priečinok build,<br />

v ktorom sa vykonáva kompilácia a inštalácia.<br />

mkdir b u i l<br />

cd b u i l d<br />

cmake . .<br />

make<br />

sudo make i n s t a l l<br />

šiť a spraviť viac intuitívnym prácu vývojárov tvoriacich hardvérovo akcelerovanú<br />

3D grafiku.<br />

Inštalácia 4 – 3 <strong>pre</strong>bieha zo stiahnutých zdrojových súborov. Je dobré sledovať výstup<br />

príkazu cmake .. , <strong>pre</strong>tože nám dáva vedieť, aké balíky sú už na systéme nainštalo-<br />

vané a ktoré chýbajú. Toto všetko sa môže v každej novej verzii meniť a záleží to aj<br />

od stavu operačného systému.<br />

Balíky ktoré potreboval program Ogre:<br />

sudo apt-get install libcppunit-dev libfreetype6-dev libois-dev libois-1.2.0 libqt4-opengl libfreeimage-<br />

dev libfreeimage3 libboost1.40-dev libboost-signals1.40-dev libboost-thread1.40-dev libtbb-dev libtbb2<br />

libpoco-dev<br />

FLTK<br />

FLTK (1998) (Fast Light Toolkit) je C++ balíček na tvorbu GUI <strong>pre</strong> rôzne systémy,<br />

ako Linux, Windows, MacOS. Podporuje 3D grafiku a OpenGL. Je vytvorený ako<br />

malý a modulárny balík, ktorý môže byť staticky pripojený, ale môže pracovať aj<br />

ako knižnica. Obsahuje UI builder FLUID, vďaka ktorému je tvorba aplikácii jed-<br />

32


FEI KKUI<br />

Tabuľka 4 – 4 Tiež sa používa cmake pri kompilácii. Inštalácia <strong>pre</strong>biehala zo zdrojových súborov<br />

zo stránky Bullet (2011), verzia 2.77. Pred kompiláciou treba opraviť hodnotu double <strong>pre</strong>cision<br />

OFF na ON v súbore CMakeLists.txt, <strong>pre</strong>tože Gazebo bude hlásiť chybu.<br />

noduchá.<br />

cmake .<br />

make<br />

sudo make i n s t a l l<br />

Tabuľka 4 – 5 Stránka projektu YAML (2001), verzia 0.1.2.<br />

. / c o n f i g u r e<br />

make<br />

Fltk sa dá nainštalovať týmto spôsobom:<br />

sudo apt-get install libfltk1.1-dev<br />

Bullet<br />

sudo make i n s t a l l<br />

(Bullet Collision Detection & Physics) je knižnicou <strong>pre</strong> detekciu kolízie a dynamiky<br />

tuhého telesa. Knižnica je Open source s možnosťou použitia <strong>pre</strong> komerčné účely.<br />

Prevzaté zo stránok Bullet (2011).<br />

Inštalácia <strong>pre</strong>bieha nasledovne 4 – 4.<br />

Yaml<br />

Podľa autorov KiKiho, Evansa a Neta môžeme YAML charakterizovať ako jazyk<br />

<strong>pre</strong> serializáciu dát. Tento jazyk má za cieľ <strong>pre</strong>viesť údaje do čo najlepšej čitateľnej<br />

podoby <strong>pre</strong> človeka a aby bola zabezpečená spolupráca s modernými programovacími<br />

jazykmi. Základom je jednoduché zobrazovanie dát a manipulácia s nimi. Priebeh<br />

inštalácie 4 – 5.<br />

Libxml2<br />

Je to syntaktický analyzátor jazyka XML napísaný v jazyku C, vďaka čomu má<br />

väčšiu <strong>pre</strong>nositeľnosť na iné systémy. XML je rozšírený značkovací jazyk, určený<br />

33


FEI KKUI<br />

Tabuľka 4 – 6 Verzia 0.10.0 je poslednou oficiálnou verziou, novšie sú zatiaľ len svn verzie.<br />

Kompilujeme a inštalujeme pomocou cmake .., treba sledovať výstup, <strong>pre</strong>tože hlási, ktoré balíky<br />

alebo knižnice nemáme na systéme nainštalované.<br />

mkdir b u i l<br />

cd b u i l d<br />

cmake . .<br />

make<br />

sudo make i n s t a l l<br />

<strong>pre</strong>dovšetkým na výmenu údajov medzi aplikáciami. Jazykom XML sa dá opísať št-<br />

ruktúru dokumentu z hľadiska vecného obsahu a nezaoberá sa vzhľadom dokumentu<br />

a jeho častí. Stačí stiahnuť knižnicu pomocou apt-get install.<br />

sudo apt-get install libxml2-dev<br />

4.1.3 Inštalácia Gazeba na Ubuntu Linux 10.04<br />

Zdrojové súbory programu Gazebo je možné stiahnuť zo stránky Gazebo (2010).<br />

Ak ide o verziu svn, čo znamená práve vyvíjaná verzia, je dobré ju stiahnuť do vo-<br />

<strong>pre</strong>d pripraveného priečinku nasledovne:<br />

svn co https://playerstage.svn.sourceforge.net/svnroot/playerstage/code/gazebo/<br />

Táto verzia ešte nie je finálna, postupne sa v nej opravujú chyby z poslednej oficiál-<br />

nej verzie a pridávajú nové veci. Nemusí byť všetko dobre odladené a <strong>pre</strong>to nemusí<br />

správne fungovať. Stalo sa, že pri kompilácii hlásilo problémy vo vlastných zdrojo-<br />

vých súboroch, ktoré sa nepodarilo nájsť na internete, ale ak sa vyznáme v c++,<br />

sme schopný niektoré veci vyriešiť priamo v zdrojových súboroch.<br />

Počas kompilácie sme mali aj takú skúsenosť, kde nám Gazebo nechcel detekovať<br />

správnu verziu potrebného programu. Problém sa nachádzal v súboroch potrebných<br />

<strong>pre</strong> kompiláciu.<br />

Takže samotná inštalácia by mala <strong>pre</strong>biehať nasledovne 4 – 6.<br />

34


FEI KKUI<br />

4.1.4 Zhrnutie inštalácie<br />

V tejto kapitole bola snaha o čo najpodrobnejšie vysvetlenie priebehu inštalácie,<br />

popísanie programov, ktoré bolo potrebné stiahnúť a ich spôsob inštalácie. Poskytnúť<br />

postrehy a návrhy, ktoré by mohli dopomôcť k úspešnému spusteniu Gazeba.<br />

Je treba dávať pozor ešte na jednú vec, a to na odinštalovanie či už Gazeba alebo<br />

jedného z balíkov ktoré potrebuje. Pred novou inštaláciou je potrebné odstrániť celý<br />

pôvodný program, ktorý sa nahrádza, aby nedošlo ku konfliktom pri volaní programu<br />

a nevolali sa staré časti programu.<br />

Na stránkach programu Gazeba sa nachádza gazebo mailing list, v ktorom sú riešené<br />

dotazy užívateľov Gazeba. Sú tam riešené aj problémy ohľadom inštalácie. Takže aj<br />

na týchto stránkach je možné nájsť postrehy, ktoré môžu pomôcť pri inštalovaní<br />

Gazeba.<br />

4.2 Ukážka ovládania robota v prostredí Gazebo<br />

Ukážka riadenia bude <strong>pre</strong>biehať na modely pioneer2dx, ktorý sa nachádza medzi mo-<br />

delmi Gazeba. Ako už bolo spomenuté v kapitole o modeloch na strane 15, zdrojové<br />

kódy na ovládanie modelov sa nachádzajú v priečinku:<br />

˜/Dokumenty/ svngazebo / gazebo / examples / l i b g a z e b o /<br />

<strong>pre</strong>snejšie <strong>pre</strong> model pioneer2dx v zložke<br />

˜/Dokumenty/ svngazebo / gazebo / examples / l i b g a z e b o / p o s i t i o n<br />

Program <strong>pre</strong> komunikáciu s pioneer2dx modelom sa nepodarilo úspešne zkompilovať.<br />

Obsahoval chyby, ktoré sa podarili odstrániť vďaka programu openal, ktorý sa ako<br />

jediný <strong>pre</strong>ložil správne.<br />

Chyby boli hlásené ohľadom zápisu:<br />

l i b g a z e b o : : C l i e n t ∗ c l i e n t = new gazebo : : C l i e n t ( ) ;<br />

l i b g a z e b o : : S i m u l a t i o n I f a c e ∗ s i m I f a c e = new gazebo : : S i m u l a t i o n I f a c e ( ) ;<br />

l i b g a z e b o : : P o s i t i o n I f a c e ∗ p o s I f a c e = new gazebo : : P o s i t i o n I f a c e ( ) ;<br />

35


FEI KKUI<br />

ktorý trebalo <strong>pre</strong>písať nasledovne:<br />

l i b g a z e b o : : C l i e n t ∗ c l i e n t = NULL;<br />

l i b g a z e b o : : S i m u l a t i o n I f a c e ∗ s i m I f a c e = NULL;<br />

l i b g a z e b o : : P o s i t i o n I f a c e ∗ p o s I f a c e = NULL;<br />

c l i e n t = new l i b g a z e b o : : C l i e n t ( ) ;<br />

s i m I f a c e = new l i b g a z e b o : : S i m u l a t i o n I f a c e ( ) ;<br />

p o s I f a c e = new l i b g a z e b o : : P o s i t i o n I f a c e ( ) ;<br />

Obr. 4 – 1 Ukážka modelu robota pioneer2dx v prostredí Gazebo.<br />

4.2.1 Spojenie sa s modelom pomocou nášho programu<br />

Pre komunikáciu potrebujeme definovať kontrolér. Definícia kontroléru je v tabuľke<br />

4 – 7. Po spustení modelu príkazom<br />

gazebo pioneer2dx . world<br />

sa spustí simulácia a v adresári<br />

\tmp\ gazebo ∗<br />

36


FEI KKUI<br />

Tabuľka 4 – 7 Definicia kontroléra vrámci modelu pioneer2dx. Názov je controller1. Predposledný<br />

riadok interface obsahuje názov rozhrania, na ktoré sa budeme pripájať, volá sa position iface 0.<br />

<br />

l e f t w h e e l h i n g e <br />

r i g h t w h e e l h i n g e <br />

0.39<br />

0.15<br />

5<br />

<br />

<br />

sa vytvoria dočasné súbory <strong>pre</strong> komunikáciu. Z týchto súborov potrebujeme<br />

• position.pioneer::position iface 0, <strong>pre</strong> pripojenie sa na position rozhranie,<br />

• simulation.default, <strong>pre</strong> rozhranie simulácie.<br />

Potom nám to už len stačí zapísať v programe nasledovne:<br />

simIface −>Open( c l i e n t , ” d e f a u l t ” ) ;<br />

. . .<br />

p o s I f a c e −>Open( c l i e n t , ” p i o n e e r : : p o s i t i o n i f a c e 0 ” ) ;<br />

Týmto spôsobom sme sa pripojili na práve simulovaný model.<br />

4.2.2 Ovládanie modelu<br />

Po pripojení by sme chceli vidieť, čo môžeme s modelom robiť. Pozreli sme sa bližšie<br />

na to, ako model pioneer2dx ovládať. Pomocou rozhrania position môžeme komuni-<br />

kovať s modelom,<br />

načítať údaje o modely. Pred odoslaním príkazu treba nastaviť ‘uzamknutie‘ a po<br />

príkaze ‘odomknutie‘ rozhrania:<br />

p o s I f a c e −>Lock ( 1 ) ;<br />

//sem píšeme príkaz , ktorý má robot vykonať<br />

p o s I f a c e −>Unlock ( ) ;<br />

37


FEI KKUI<br />

Pri ovládaní modelu sa použili nasledujúce príkazy:<br />

• posIface- > data- > cmdVelocity.pos.x = hodnota, príkaz udávajúci, ako rýchlo<br />

sa má model pohybovať a dáva model do pohybu. Ak sa hodnota = 0, model<br />

stojí, ak hodnota je záporná, tak robot cúva. Ak by sme chceli zistiť rýchlosť<br />

pohybu robota, je ju možné zistiť pomocou spomenutého príkazu.<br />

• posIface- > data- > cmdVelocity.yaw = otočenie, príkaz udávajúci, ako rýchlo<br />

sa má model otočiť okolo svojej osi. Ak je hodnota otočenie kladná, otáča sa<br />

smerom doľava, ak je hodnota nulová, neotáča sa.<br />

Bol navrhnutý jednoduchý program, ktorý čaká na príkaz od užívateľa a následne<br />

pošle požiadavku modelu a ten vykoná akciu. Na obrázku 4 – 2 je vývojový diagram<br />

programu, slúžiaceho na riadenia modelu pioneer2dx. V Linuxe bolo potrebné použiť<br />

funkciu na <strong>pre</strong>stavenie odchytávania kláves, aby nebolo potrebné stláčať enter a<br />

program bežal neustále popri kontrole stlačenia klávesy.<br />

4.3 Ukážka vytvoreného modelu v prostredí Gazebo<br />

Po oboznámení sa s Gazebom a <strong>pre</strong>študovaní návodov na ich stránkach a modeloch<br />

sa podarilo spraviť jednoduchý model pomenovaný trup. Tento model sa skladá z<br />

piatich častí a troch kĺbov typu Hinge. Je to zjednodušený model trupu, s dvoma<br />

rukami a podstavcom, na ktorom je postavený. Na ďalšom obrázku 4 – 4 je ukážka<br />

pohybu rukou.<br />

4.3.1 Prvé kroky pri tvorbe modelu<br />

Pri tvorbe modelu v Gazebo sme vychádzali zo základov. Najprv bola vyskúšaná<br />

jednoduchú krabicu, podľa návodu Gazebo svn (2010) <strong>pre</strong> svn verzie. Problém na-<br />

stal pri spustení. V simulátore sa nič neobjavilo. Bolo potrebné doplniť model o časť<br />

. Teraz už všetko fungovalo.<br />

38


FEI KKUI<br />

Obr. 4 – 2 Zjednodušený vývojový diagram programu ovládajúceho robota pioneer2dx v prostredí<br />

Gazebo.<br />

Pri tvorbe vlastného modelu sme sa inšpirovali modelom bandit a pokúsili sa postaviť<br />

podobný model, ktorého ruky by bolo možné ovládať pomocou bandit kontroléra.<br />

Ak tvoríme model, môže byť nápomocný tag , ktorý keď sa nastaví na<br />

true, tak sa vo svete daný model nepohne. Vtedy lepšie vidíme, ako sa nám podarilo<br />

jednotlivé časti pospájať, alebo môžeme meniť súradnice častí modelu, pokiaľ nám<br />

nevyhovujú. O zmene parametrov je písané v kapitole na strane 26, <strong>pre</strong>snejšie 6.<br />

časť okna simulácie.<br />

Prvá vec bola spraviť podstavec a telo (trup). Všetko toto vrámci jedného tagu<br />

, pričom časti trup a podstavec by boli v tagu . Výsledok mal byť<br />

ako na obrázku 4 – 5 Ale model sa správal neadekvátne tomuto scenáru. Namiesto<br />

toho nevysvetliteľne poletoval v simulácii, ukázané na obrázku 4 – 6. Pomocou tagu<br />

39


FEI KKUI<br />

Obr. 4 – 3 Prvý úspešný model, ktorého ramená sa ovládajú pomocou kontroléra určeného <strong>pre</strong><br />

bandit.model. V tomto modely ide o jednoduché ovládanie oboch ramenných kĺbov.<br />

Obr. 4 – 4 Sled obrázkov ukazujúcich pohyb ruky.<br />

sa podarilo nájsť chybu, kvôli ktorej dochádzalo ku kolízii. Hrúbka pod-<br />

stavca modelu je z=0.1. V simulácii však bola len z=0.05, polovička podstavca sa<br />

nachádzala v kladnej časti osi z, druhá polovica v zápornej. Preto bolo potrebné<br />

nastaviť parameter modelu z na hodnotu z=0.05. Potom už nedochádzalo ku kolízii.<br />

40


FEI KKUI<br />

Obr. 4 – 5 Prvé kroky pri tvorbe modelu. Model má nastavený parameter static na true, vďaka<br />

čomu stojí a nedochádza ku kolízii.<br />

Obr. 4 – 6 Pri parametry static nastaveného na false sa model správa nevysvetliteľne. Neobjaví<br />

sa na našich zvolených súradniciach, ale po objavení nastáva kolízia súradníc. Snímky sú spravené<br />

pomocou Gazeba, kde v záložke FILE je možnosť zaškrtnúť políčko SAVE FRAMES, vďaka čomu<br />

bude zachytávať sled obrázkov zo simulácie. Nachádza sa chyba pri snímkovaní, <strong>pre</strong>tože obraz je<br />

zakryvený.<br />

4.3.2 Stavba modelu<br />

Ako už bolo spomenuté, výsledný model sa skladá z dvoch rúk, ramena, trupu a<br />

podstavca, bližšie je to znázornené na obrázku 4 – 7. Tag sa skladá zo<br />

41


FEI KKUI<br />

štyroch častí typu body, a to:<br />

• dolnacast body,<br />

• ramena body,<br />

• ruka body,<br />

• ruka2 body.<br />

Obr. 4 – 7 Celý obrázok <strong>pre</strong>dstavuje súbor sveta *.world, v ktorom sú definované jeho časti. V<br />

obrázku sú znázorniť jednotlivé časti celého sveta a modelu, ako sú usporiadané v súbore a ktorá<br />

časť obsahuje ďalšiu časť.<br />

Každá časť body má ďalšiu časť geom, spolu je ich 5:<br />

42


FEI KKUI<br />

• podstavec geom,<br />

• dolnacast geom,<br />

• ramena geom,<br />

• ruka goem,<br />

• ruka2 geom.<br />

Časť dolnacast body sa skladá z dvoch geom. Zvyšok sveta je rovnaký ako bol opi-<br />

sovaný v kapitole o vytvorení súboru world na strane 17.<br />

Na spájanie jednotlivých častí tela sa použili kĺby.<br />

• kĺb1, spojenie ramena s rukou,<br />

• kĺb2, spojenie druhej ruky s ramenom,<br />

• drz1, <strong>pre</strong>pojenie ramien a dolnej časti,<br />

Rozsah voľnosti kĺbov je od -90 do 90 stupňov. Kĺb drz1 je nastavený ako nepo-<br />

hyblivý, základom je aby spojil ramena s telom. Týmto spôsobom sa podarilo spojiť<br />

časti typu . Ak by ramena boli súčasťou ako , nedalo by sa<br />

spojiť ruky s ramenami pomocou kĺbu, <strong>pre</strong>tože kĺb spája časti typu body. Definície<br />

jednotlivý kĺbov sú v tabuľke 4 – 8<br />

4.3.3 Ovládanie modelu<br />

Základom ovládania je kontrolér. Pre tento model bolo možné použiť už existujúci<br />

kontrolér bandit actarray, ktorý je určený na <strong>riadenie</strong> kĺbov, ale trebalo pozmeniť<br />

hodnotu počtu kĺbov v súbore Bandit Actarray.hh, <strong>pre</strong>snejšie hodnotu jointcnt na<br />

2, <strong>pre</strong>tože boli hlásené chyby ohľadom modelu a kontroléra.<br />

#d e f i n e JOINTCNT 2<br />

V modely si definujeme kontrolér podľa 4 – 9.<br />

43


FEI KKUI<br />

Tabuľka 4 – 8 Definícia kĺbov klb1 a klb2. Je vidieť ktoré časti typu body sa spájajú, a ktorá je<br />

použitá ako kotva. V axis sa v ktorom smere sa bude kĺb otáčať a lowstop spolu s hightstop určujú<br />

rozsah stupňov otáčania.<br />

<br />

ramena body <br />

ruka body <br />

ramena body <br />

0 0 0<br />

0 1 0<br />

−90<br />

90<br />

0<br />

<br />

<br />

ramena body <br />

ruka2 body <br />

ramena body <br />

0 0 0<br />

0 1 0<br />

−90<br />

90<br />

0<br />

<br />

44


FEI KKUI<br />

Tabuľka 4 – 9 Definícia kontroléra vrámci modelu. Názov je bandit controller, a nasledujú jed-<br />

notlivé kĺby. Tieto hodnoty budú <strong>pre</strong>dané kontroléru bandit controller, aby vedel ktoré časti sa<br />

riadia. Na <strong>pre</strong>dposlednom riadku je názov rozhrania, na ktoré sa pripájame naším programom.<br />

Kontroléru sa <strong>pre</strong>dávajú len dve pohyblivé kĺby, klb1 a klb2.<br />

<br />

<br />

1<br />

1<br />

<br />

<br />

1<br />

1<br />

<br />

<br />

<br />

4.3.4 Komunikácia s modelom pomocou programu<br />

Program na <strong>riadenie</strong> modelu komunikuje s kontrolérom pomocou rozhrania. V našom<br />

prípade rozhrania bandit actarray iface. Ďalej je potrebné pripojenie aj na ďalšie ro-<br />

zhrania a to simulation interface. Posledná vec, ktorú treba zabezpečiť je spojenie<br />

s libgazebo serverom. Tento server nám zabezpečuje komunikáciu s Gazebo simulá-<br />

torom, bližšie popísané na strane 26.<br />

Ukážka pripojenia sa na model pomocou nášho programu je na obrázku 4 – 10. Pri<br />

komunikácii s Gazebom si libgazebo server vytvorí dočasné súbory v adresári<br />

/tmp/gazebo*, pomocou ktorých sa komunikuje so serverom.<br />

Pre nami použitý kontrolér to bude súbor moj actarray iface. Posielanie príkazu na<br />

natočenie kĺbu vyzerá nasledovne:<br />

a c t a r r a y I f a c e −>data−>cmd pos [ 0 ] = DTOR( 1 0 ) ; ,<br />

kde cmd pos je pole kĺbov robota, v našom prípade cmd pos[0] <strong>pre</strong>dstavuje kĺb1.<br />

DTOR je funkcia, ktorou sa <strong>pre</strong>počítavajú stupne na radiány, ktoré sú <strong>pre</strong>dávané<br />

kontroléru.<br />

45


FEI KKUI<br />

Tabuľka 4 – 10 Ukážka zo zdrojového súboru. Vytvoríme nový objekt client, simIface a actar-<br />

rayIface. Pomocou objektu client sa pripájame na libgazebo server, pomocou zvyšných dvoch na<br />

rozhrania simulation a actarray interaface. Pri pripájaní na actarray rozhranie treba použiť meno<br />

z definície kontroléra v našom modely 4 – 9, ktorý sa volá moj actarray iface.<br />

c l i e n t = new l i b g a z e b o : : C l i e n t ( ) ;<br />

s i m I f a c e = new l i b g a z e b o : : S i m u l a t i o n I f a c e ( ) ;<br />

a c t a r r a y I f a c e = new l i b g a z e b o : : A c t a r r a y I f a c e ( ) ;<br />

. . .<br />

c l i e n t −>ConnectWait ( s e r v e r I d , GZ CLIENT ID USER FIRST ) ;<br />

. . .<br />

simIface −>Open( c l i e n t , ” d e f a u l t ” ) ;<br />

. . .<br />

a c t a r r a y I f a c e −>Open( c l i e n t , ” t e l o : : m o j a c t a r r a y i f a c e ” ) ;<br />

. . .<br />

46


FEI KKUI<br />

5 <strong>Analýza</strong> možnosti tvorby modelu robota Nao v<br />

prostredí Gazebo<br />

V tejto kapitole sa pokúsime pozrieť na možnosti spolupráce Gazeba a robota Nao,<br />

ako by mohla <strong>pre</strong>biehať tvorba modelu, z čoho vychádzať a akým spôsobom by<br />

mohla byť zabezpečená komunikácia.<br />

5.1 Krátka špecifikácia robota Nao<br />

Robot Nao je humanoidným autonómnym robotom firmy Aldebaran robotics (2011).<br />

Používa sa vo výskume a aj ako náhrada za robotického psa Aibo v robotickom<br />

futbale Robocup.<br />

Prvá verzia sa objavila roku 2005. Až roku 2008 sa objavila akademická verzia <strong>pre</strong><br />

univerzity. Verzia <strong>pre</strong> domáce prostredie by mala byť uvoľnená v roku 2012.<br />

Nao <strong>pre</strong> Robocup má 21 stupňov, akademická verzia až 26. Nao obsahuje:<br />

• 4x sonar,<br />

• 2x kamera,<br />

• 2x reproduktor,<br />

• 4x mikrofón,<br />

• infračervený vysielač a prijímač.<br />

Programovať je možné v rôznych jazykoch ako:<br />

• c,<br />

• c++,<br />

• Python,<br />

• Urbi,<br />

47


FEI KKUI<br />

• .net.<br />

Obr. 5 – 1 Humanoidný robot Nao. Obrázok <strong>pre</strong>vzatý zo stránky upload.wikipedia.org (2011)<br />

Pri programovaní sa používa softvér spoločnosti Aldebaran Robotics, ktorý sa volá<br />

Choreographe. V tomto programe <strong>pre</strong>bieha ovládanie Naa spájaním blokov. Každý<br />

blok tvorí úsek kódu, ktorý sa vykonáva. Z týchto blokov je možné volať vlastné<br />

moduly, ktoré si môžeme naprogramovať. S robotom Nao je možné komunikovať<br />

prostredníctvom bezdrôtového <strong>pre</strong>pojenia Wifi.<br />

5.2 Pohľad na časti tela Naa<br />

Pri tvorbe modelu môžeme vychádzať z Nao SDK balíka. Nachádzajú sa tam pod-<br />

robne popísané a rozobrané jednotlivé časti tela ako napríklad, aké uhly môžu jed-<br />

notlivé kĺby opisovať, aká je hmotnosť jednotlivých častí.<br />

V sekciách<br />

• HARDWARE - popísaná hmotnosť tela, rúk a nôh, uhly otáčania kĺbov a<br />

hmotnosti častí tiel,<br />

• MOTION - popis pohybu Naa a jednotlivých jeho častí.<br />

Vďaka týmto dostupným údajom by malo byť možné zostrojiť model Naa. Jediná<br />

vec čo nám chýba sú rozmery jednotlivých častí tela, o ktorých bude písané neskôr.<br />

48


FEI KKUI<br />

Tak napríklad na obrázku 5 – 2 je vidieť, ako pracujú kĺby na ľavej nohe, že nohy<br />

robota majú päť stupňov voľnosti. Popis kĺbov a rozsah stupňov je v tabuľke 5 – 1 .<br />

Obr. 5 – 2 Ľavá noha robota Nao, obrázok ukazuje počet kĺbov a hodnoty uhlov, ktoré vedia<br />

dané kĺby opísať. Obrázok pochádza z SDK <strong>pre</strong> robota Nao verzie 3.3, zdroj Aldebaran robotics<br />

(2011). V SDK sa nachádzajú nákresy aj <strong>pre</strong> ostatné časti tela Naa.<br />

V sekcii HARDWARE sa nachádza časť masses, kde sú hodnoty hmotností jednot-<br />

livých častí robota Nao, kĺbov, častí rúk aj nôh udávané v gramoch, zoznam je v<br />

tabuľke 5 – 2 .<br />

Na stránkach projektu Simspark (2011) v sekcii modely sa nachádzajú rozmery ro-<br />

bota Nao, viď obrázok 5 – 3, ktoré sú použité simulátor Simspark.<br />

5.3 Možnosti tvorby modelu a komunikácie s Naom v pro-<br />

stredí Gazebo<br />

Pri modelovaní Naa v Gazebo simulátore očakávame, aby bol schopný chôdze. Z<br />

tejto podmienky by mali základ modelu tvoriť nohy. Trup by mohol <strong>pre</strong>dstavovať<br />

kváder adekvátnej veľkosti a hmotnosti hornej časti Naa. Poslednou časťou by ostala<br />

horná časť s rukami, ktoré by už potom nemal byť problém dorobiť.<br />

49


FEI KKUI<br />

Tabuľka 5 – 1 V tabuľke sú pomenované jednotlivé kĺby a ich rozsah v stupňoch. Pri panve<br />

LHipYawPitch a RHipYawPitch sú ovládané jedným motorom, takže ich nie je možné ovládať<br />

nezávisle. Údaje pochádzajú z Nao SDK.<br />

Časť tela názov pohyb v osi rozsah stupňov<br />

Hlava HeadYaw Z od -119.5 do 119.5<br />

HeadPitch Y od -38.5 do 29.5<br />

Pravá ruka RShoulderPitch Y od -119.5 do 119.5<br />

RShoulderRoll Z od -76 do 18<br />

RElbowYaw X od -119.5 do 119.5<br />

RElbowRoll Z od 2 do 88.5<br />

RWristYaw X od -104.5 do 104.5<br />

Ľavá ruka LShoulderPitch Y od -119.5 do 119.5<br />

LShoulderRoll Z od -18 do 76<br />

LElbowYaw X od -119.5 do 119.5<br />

LElbowRoll Z od -88.5 do -2<br />

LWristYaw X od -104.5 do 104.5<br />

Panva* LHipYawPitch Y-Z 45 od -65.62 do 42.44<br />

RHipYawPitch Y-Z 45 od -65.62 do 42.44<br />

Ľavá noha LHipRoll X od -21.74 do 45.29<br />

LHipPitch Y od -101.63 do 27.73<br />

LKneePitch Y od -5.29 do 121.04<br />

LAnklePitch Y od -68.15 do 52.86<br />

LAnkleRoll X od -44.06 to 22.79<br />

Pravá noha RHipRoll X od -42.30 do 23.76<br />

RHipPitch Y od -101.54 do 27.82<br />

RKneePitch Y od -5.29 do 121.47<br />

RAnklePitch Y od -67.97 do 53.40<br />

RAnkleRoll X od -22.27 to 45.03<br />

50


FEI KKUI<br />

Tabuľka 5 – 2 V tejto tabuľke sa nachádzajú údaje hmotnosti jednotlivých častí robota v gramoch.<br />

Údaje pochádzajú z Nao SDK.<br />

Časť tela váha v gramoch<br />

NAO 4996<br />

Trup 1039.48<br />

Krk 59.30<br />

Hlava 520.65<br />

Pravé rameno 69.96<br />

Pravý biceps 123.09<br />

Pravý lakeť 59.71<br />

Pravé motorizované <strong>pre</strong>dlaktie 77.24<br />

Pravá motorizovaná ruka 166.53<br />

Pravá nemotorizovaná ruka 185.00<br />

Pravá panva 71.17<br />

Pravý bok 135.30<br />

Pravé stehno 394.21<br />

Pravá holenná kosť 291.59<br />

Pravý členok 138.92<br />

Pravá noha 161.75<br />

51


FEI KKUI<br />

Obr. 5 – 3 Obrázok ukazuje rozmery jednotlivých častí tela robota Nao. Tento model je použitý<br />

v simulátore Simspark, zdroj Simspark (2011). Simspark je multi-agentový simulátor <strong>pre</strong> simuláciu<br />

v 3D prostredí. Používa sa ako oficiálny 3D server <strong>pre</strong> Robocup.<br />

Stavba tela<br />

Pri vychádzaní z nákresov Naa z obrázka 5 – 3, môžeme pri tvorbe použiť základ<br />

modelu typu box.<br />

<br />

. . .<br />

<br />

. . .<br />

<br />

. . .<br />

<br />

52


FEI KKUI<br />

<br />

<br />

Horeuvedená schéma môže byť použitá pri tvorbe všetkých častí tela Naa.<br />

Pri spájaní častí tela môžu byť použité kĺby typu:<br />

• Hinge - kĺb s jedným stupňom voľnosti,<br />

• Hinge2 - kĺb s dvoma stupňami voľnosti,<br />

• Ball - guľový kĺb, naskytá sa možnosť použitia aj tohoto kĺbu, ale to by bolo<br />

dobré porovnať vrámci modelu, či je lepší tento typ kĺbu ako Hinge2.<br />

Ak vychádzame z nákresov 5 – 2 môže byť použitie kĺbov nasledovné:<br />

• bedro má dva stupne voľnosti - možnosť použitia kĺbu typu Hinge2 alebo Ball,<br />

• kolenný kĺb s jedným stupňom voľnosti - použitie kĺbu typu Hinge,<br />

• členkový kĺb s dvoma stupňami voľnosti - použitie kĺbu typu Hinge2 alebo<br />

Ball.<br />

Riadenie modelu<br />

Každý model má svoj kontrolér, ktorým je riadený. Gazebo obsahuje niekoľko kon-<br />

trolérov, ale neobsahuje kontrolér <strong>pre</strong> chôdzu.<br />

V rámci simulácie treba zabezpečiť:<br />

• <strong>riadenie</strong> kĺbov modelu,<br />

• <strong>riadenie</strong> pohybu modelu.<br />

Pri riadení kĺbov modelu sa naskytá možnosť použitia kontroléra <strong>pre</strong> model bandit<br />

menom actarray, ktorý bol aj odskúšaný pri modely trup. Tento kontrolér spolupra-<br />

cuje s kĺbmi typu Hinge. Pre prípad Hinge2 alebo Ball bude pravdepodobne treba<br />

zásah do kontroléra actarray.<br />

Pre <strong>riadenie</strong> pohybu modelu v simulácii by bolo potrebné naprogramovať vlastný<br />

kontrolér, ktorý by mohol vychádzať z kontroléra position <strong>pre</strong> model pioneer2dx.<br />

53


FEI KKUI<br />

Z čisto teoretického hľadiska by aj model mohol kráčať bez tohoto kontroléra, ak by<br />

sa pohybom kĺbov a vplyvom fyziky podarilo zabezpečiť pohyb.<br />

Prepojenie simulácie s reálnym Naom<br />

Načrtajú sa dve možnosti <strong>pre</strong>pojenia modelu Nao s reálnym robotom:<br />

• bez programu <strong>Player</strong>, kedže Gazebo simulátor má vlastnú knižnicu libgazebo<br />

<strong>pre</strong> interakciu s modelom. Náš program môže pomocou kontroléra komuniko-<br />

vať s Gazebom cez libgazebo knižnicu, kde vrámci tohoto programu by bola<br />

zahrnutá aj komunikácia s reálnym Nao robotom,<br />

• s programom <strong>Player</strong>, ktorý sa správa ako server. Nao by komunikoval s <strong>Player</strong><br />

serverom pomocou TCP protokolu a <strong>pre</strong>dával mu aktuálne informácie o po-<br />

hybe robota, následne <strong>Player</strong> by ich <strong>pre</strong>dával ďalej programu Gazebo, kde by<br />

<strong>pre</strong>biehala simulácia.<br />

Tvorba modelu robota Nao v prostredí Gazebo nemusí byť jednoduchá. Je potrebné<br />

sa dobre oboznámiť s Gazebom a ako tento simulátor funguje. Tvorba a spájanie<br />

jednotlivých častí modelu by mala byť tá jednoduchšia časť. Zložitejšou časťou je<br />

vytvorenie vlastného kontroléra <strong>pre</strong> robota, ktorý bude komunikovať s modelom.<br />

54


FEI KKUI<br />

6 Záver (zhodnotenie riešenia)<br />

Táto práca sa zaoberá softvérovým prostredím <strong>Player</strong>-<strong>Stage</strong>-Gazebo, konkrétne 3D<br />

simulátorom Gazebo. Ako <strong>pre</strong>bieha inštalácia a práca v programe, ako sa tvoria<br />

modely <strong>robotov</strong> a možnosti ich riadenia a komunikácie.<br />

V časti inštalácie je čo najpodrobnejší návod, ako úspešne nainštalovať tento prog-<br />

ram. Nachádzajú sa tam popísané problémy, s ktorými sme sa stretli a postrehy pri<br />

inštalácii. Inštalácia programu Gazebo nie je triviálna. Je potrebné stiahnuť ďalšie<br />

balíky programov a knižníc, ktoré Gazebo na svoj beh využíva. Vyskytujú sa rôzne<br />

scenáre, pri ktorých niektoré komponenty sa inštalujú ľahšie, iné potrebujú zásah<br />

napríklad v súboroch <strong>pre</strong> kompiláciu programu. Rady a postrehy pri inštalácii je<br />

možné nájsť aj na internete, <strong>pre</strong>snejšie na stránkach programu, kde sa nachádza aj<br />

emailová komunikácia medzi tvorcami softvéru a jeho užívateľmi. Riešia sa tam aj<br />

problémy ohľadom behu samotnej simulácie a práce v nej.<br />

Inštaláciu lepšie zvláda užívateľ pracujúci v systéme Linux, ktorý už má pravdepo-<br />

dobne nadobudnuté väčšie skúsenosti. Výhoda softvéru <strong>Player</strong>-<strong>Stage</strong>-Gazebo je tom,<br />

že je to open-source projekt, máme prístup k zdrojovým súborom programu a máme<br />

možnosť meniť časti programu podľa našich <strong>pre</strong>dstáv, to znamená, že si môžeme<br />

simulátor prispôsobiť našim požiadavkám.<br />

Následne sme sa zaoberali tvorbou modelu a komunikácie s modelom v simulácii.<br />

Rozobrali sme základ tvorby modelu a chyby, ktoré môžu nastať, ako postupovať<br />

pri tvorbe vlastného modelu. Je priblížená komunikácia s modelom, ako <strong>pre</strong>bieha<br />

pripojenie na model a vytvorili jednoduché ukážky riadenia modelu.<br />

V poslednej kapitole je analýza možnosti tvorby modelu robota Nao v prostredí<br />

Gazebo, čo by nám mohlo pomôcť pri tvorbe, ktoré časti modelov z Gazeba vieme<br />

využiť a ktoré by bolo treba vytvoriť.<br />

55


FEI KKUI<br />

Literatúra<br />

The <strong>Player</strong> project. 2011,<br />

http://playerstage.sourceforge.net/index.php?src=index<br />

http://sourceforge.net/projects/playerstage/files/<br />

<strong>Stage</strong>. 2011,<br />

http://playerstage.sourceforge.net/index.php?src=stage<br />

Gazebo. 2011,<br />

http://playerstage.sourceforge.net/index.php?src=gazebo<br />

Gazebo svn verzia. 2010,<br />

http://playerstage.sourceforge.net/doc/Gazebo-manual-svn-<br />

html/tutorial model.html<br />

Gazebo zdrojové súbory. 2010,<br />

http://sourceforge.net/projects/playerstage/files/<br />

Koenig, N. Howard, A. 2004,<br />

Design and Use Paradigms for Gazebo, An Open-Source Multi-Robot Simulator<br />

Kranz, M. Rusu, R. B. Maldonado, R. A. 2006, A <strong>Player</strong>/<strong>Stage</strong> System for Context-<br />

Aware Intelligent Environments<br />

Blender for robotics. 2011,<br />

http://wiki.blender.org/index.php/Robotics:Contents<br />

http://people.mech.kuleuven.be/ bruyninc/blender/roadmap.html<br />

Skupina agentov. 2006,<br />

http://www.spiderland.org/node/14, http://www.spiderland.org/<br />

lpzrobotics. 2010,<br />

http://robot.informatik.uni-leipzig.de/software/<br />

http://www.informatik.uni-leipzig.de/ifi/fileadmin/Bilder/RoboticsGroup/wrestling.jpg<br />

56


FEI KKUI<br />

Rototics operating system (ROS). 2011,<br />

http://www.ros.org/wiki/Robots<br />

http://en.wikipedia.org/wiki/ROS (Robot Operating System)<br />

http://www.willowgarage.com/pages/software/ros-platform<br />

Open dynamics engine (ODE). 2007,<br />

http://www.ode.org/<br />

http://opende.sourceforge.net/wiki/index.php/Manual (Concepts)#<br />

Soft constraint and constraint force mixing .28CFM.29<br />

Rover. http://playerstage.sourceforge.net/wiki/GazeboUsers.<br />

Correal, R. 2008,<br />

Experiences in Producing a Preliminary Navigation OBSW Prototype for the Exo-<br />

mars Rover Based on EDRES<br />

Microsoft robotics developer studio. 2006,<br />

http://i.msdn.microsoft.com/Bb483094.CompletedAction(en-us,MSDN.10).png<br />

http://en.wikipedia.org/wiki/Microsoft Robotics Developer Studio<br />

RT Middleware. 2011,<br />

http://en.wikipedia.org/wiki/RT middleware<br />

Object-Oriented Graphics Rendering Engine (ODE). 2000,<br />

http://www.ogre3d.org.<br />

Fals Light Toolkit. 1998,<br />

http://www.fltk.org/<br />

Bullet. 2011,<br />

http://bulletphysics.org/word<strong>pre</strong>ss/<br />

YAML. 2001,<br />

www.yaml.org<br />

57


FEI KKUI<br />

Libxml2. 2001,<br />

http://xmlsoft.org/<br />

XML. 1998,<br />

http://sk.wikipedia.org/wiki/XML<br />

http://www.totalxml.net/history-xml.php<br />

Cmake. 1999,<br />

http://www.cmake.org/<br />

Aldebaran robotics. 2011,<br />

http://www.aldebaran-robotics.com/<br />

Gerkey, B. Vaughan, T. R. Howard, A. 2003,<br />

”The <strong>Player</strong>/<strong>Stage</strong> Project: Tools for Multi-Robot and Distributed Sensor Sys-<br />

tems”. In Proceedings of the 11th International Conference on Advanced Robotics<br />

(ICAR 2003), pages 317-323, Coimbra, Portugal, June 2003.<br />

Gergey, B. Stoy, K. Vaughan, T. R. 2011,<br />

”<strong>Player</strong> Robot Server”. Technical Report IRIS-00-392, Institute for Robotics and<br />

Intelligent Systems, School of Engineering, University of Southern California, No-<br />

vember 2000.<br />

Program Choregraphe. 2011,<br />

http://dkor.files.word<strong>pre</strong>ss.com/2012/04/web aldebaran<br />

choregraphe firstprogram.png?w=600&h=416<br />

Nao robot. 2011,<br />

http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Nao humanoid<br />

robot.jpg/800pxNao humanoid robot.jpg<br />

Simspark. 2011,<br />

http://simspark.sourceforge.net/wiki/index.php/Models<br />

Bodnár, E. 2009,<br />

58


FEI KKUI<br />

Riadenie chôdze robota Aibo s využitím neurónových sietí. Bakalárska práca. Ko-<br />

šice : Technická univerzita v Košiciach, Fakulta elektrotechniky a informatiky<br />

59


Zoznam príloh<br />

Príloha A CD médium - diplomová práca v elektronickej podobe , prílohy v elek-<br />

tronickej podobe, zdrojové súbory a súbory modelov.<br />

Príloha B Systémová príručka<br />

Príloha C Používateľská príručka


FEI KKUI<br />

7 Príloha B<br />

Funkcia programov<br />

Prvý program pioneer.cc slúži na <strong>riadenie</strong> modelu pioneer2dx, ktorý je súčasťou<br />

softvéru Gazebo. Druhý program trup.cc slúži na <strong>riadenie</strong> robota s trupom.<br />

Program pioneer.cc sa pokúsi nadviazať spojenie s programom Gazebo. Po úspe-<br />

šnom pripojení máme možnosť ovládania modelu pioneer2dx.<br />

Program trup.cc sa pripája na druhý model s trupom, taktiež nám umožňuje ovlá-<br />

danie modelu, <strong>pre</strong>snejšie jeho rúk.<br />

Požiadavky na technické prostredie<br />

Programy bežia pod systémom Linux, <strong>pre</strong>snejšie boli testované na systéme Ubuntu<br />

10.04. Na <strong>pre</strong>klad programu potrebujeme <strong>pre</strong>kladač Cmake.<br />

Program pioneer Program sa skladá z jedného súboru pioneer.cc. Tento súbor má<br />

na starosti pripojenie sa na model a komunikáciu s modelom.<br />

Preklad programu<br />

Program pioneer sa nachádza v adresári pioneer spolu so súbormi <strong>pre</strong> kompiláciu.<br />

Kompilácia programu <strong>pre</strong>bieha príkazmi nasledovne:<br />

cmake .<br />

a následne<br />

make<br />

Týmto spôsobom dostávame spustiteľný súbor pioneer. Pri kompilácii sa používajú<br />

make súbory Gazeba.<br />

Popis častí programu<br />

inštancie:<br />

• client,<br />

• simIface,<br />

61


FEI KKUI<br />

• posIface.<br />

rozhrania:<br />

• SimulationIface - rozhranie simulácie,<br />

• P ositionIface - rozhranie <strong>pre</strong> zmenu pozície.<br />

funkcie:<br />

• changemode - zmena módu konzoly,<br />

• kbhit - zistenie stlačenia klávesy.<br />

Pripojenie na simuláciu<br />

Táto časť programu ukazuje spôsob nadviazania komunikácie s Gazebom.<br />

l i b g a z e b o : : C l i e n t ∗ c l i e n t = NULL;<br />

l i b g a z e b o : : S i m u l a t i o n I f a c e ∗ s i m I f a c e = NULL;<br />

l i b g a z e b o : : P o s i t i o n I f a c e ∗ p o s I f a c e = NULL;<br />

c l i e n t = new l i b g a z e b o : : C l i e n t ( ) ;<br />

s i m I f a c e = new l i b g a z e b o : : S i m u l a t i o n I f a c e ( ) ;<br />

p o s I f a c e = new l i b g a z e b o : : P o s i t i o n I f a c e ( ) ;<br />

i n t s e r v e r I d = 0 ;<br />

std : : cout


FEI KKUI<br />

}<br />

simIface −>Open( c l i e n t , ” d e f a u l t ” ) ;<br />

catch ( std : : s t r i n g e )<br />

{<br />

}<br />

std : : cout


FEI KKUI<br />

• posIface->data->cmdVelocity.pos.x = hodnota; - udáva robota do pohybu<br />

rýchlosťou hodnoty hodnota, ak je záporná, robot cúva,<br />

• posIface->data->cmdVelocity.yaw = otocenie; - rýchlosť otáčania robota udá-<br />

vaná hodnotou otocenie, ak je záporná, otáča sa doprava.<br />

Algoritmus riadenia<br />

V tejto časti programu <strong>pre</strong>bieha samotné <strong>riadenie</strong>. Je riešené tak, že program čaká<br />

na stlačenú klávesu a vyhodnocuje ju. Kvôli tejto časti sú použité funkcie kbhit a<br />

changemode, ktoré majú na starosti <strong>pre</strong>pínanie módu konzoly, aby bolo možné hneď<br />

reagovať na stlačenú klávesu, bez nutnosti stlačenia ENTER.<br />

Riadenie:<br />

changemode ( 1 ) ; / / zmena modu k o n z o l i kvoly odchytavaniu k l a v i e s<br />

while ( znak != ’q ’ ) / / p o k i a l sa n e s t l a c i q <strong>pre</strong> ukoncenie programu<br />

{<br />

}<br />

while ( ! kbhit ( ) )// p o k i a l n i e j e s t l a c e n a k l a v e s a<br />

{<br />

changemode ( 0 ) ; / / n a s t a v e n i e zmeny modu k l a v e s na povodny<br />

kvoly n a c i t a n i u hodnot<br />

switch ( znak )// vyhodnotenie k l a v e s n i c e a <strong>pre</strong>danie prikazu<br />

{ . . . }<br />

r i a d e n i a modelu<br />

changemode ( 1 ) ; / / zmena modu k o n z o l i kvoly odchytavaniu k l a v i e s<br />

znak = getchar ( ) ; / / z i s t i s t l a c e n u klavesu<br />

switch ( znak )// vyhodnotenie klavesy a n a s t a v e n i e <strong>pre</strong> cast , p o k i a l n i e j e<br />

{ . . . } s t l a c e n a k l a v e s n i c a<br />

changemode ( 0 ) ; / / n a s t a v e n i e modu k l a v e s na povodny<br />

Program trup<br />

Taktiež sa skladá z jedného súboru trup.cc, ktorý má na starosti pripojenie a komu-<br />

nikáciu s modelom.<br />

Preklad programu<br />

Program trup sa nachádza v adresári trup spolu so súbormi <strong>pre</strong> kompiláciu. Kom-<br />

64


FEI KKUI<br />

pilácia programu <strong>pre</strong>bieha príkazmi nasledovne:<br />

cmake.<br />

a následne<br />

make<br />

Týmto spôsobom dostávame spustiteľný súbor trup. Pri kompilácii sa používajú<br />

make súbory Gazeba.<br />

Popis častí programu<br />

inštancie:<br />

• client,<br />

• simIface,<br />

• actarrayIface.<br />

rozhrania:<br />

• SimulationIface - rozhranie simulácie,<br />

• ActarrayIface - rozhranie <strong>pre</strong> zmenu hodnôt kĺbov.<br />

funkcie:<br />

• DTOR - <strong>pre</strong>vod stupňov na radiány,<br />

• RTOD - <strong>pre</strong>vod radiánov na stupne.<br />

Pripojenie na simuláciu<br />

Pripojenie je rovnaké ako pri programe pioneer, pridáva sa nová časť <strong>pre</strong> pripojenie<br />

na ActarrayIface a odpadá časť <strong>pre</strong> PositionIface.<br />

try<br />

{<br />

}<br />

a c t a r r a y I f a c e −>Open( c l i e n t , ” t e l o : : m o j a c t a r r a y i f a c e ” ) ;<br />

catch ( std : : s t r i n g e )<br />

{<br />

std : : cout


FEI KKUI<br />

}<br />

Unlock ( ) ; / / po p r i k a z e<br />

Príkazy riadenia:<br />

• actarrayIface->data->cmd pos[i] = DTOR(klb); - kde hodnota i <strong>pre</strong>dstavuje<br />

poradové číslo kĺbu robota.<br />

Algoritmus riadenia<br />

Po pripojení sa na náš model, program čaká na pokyn. Ak sa zadá klávesa q, ukončí<br />

sa program, ak klávesa 1 alebo 2, nastáva <strong>riadenie</strong> kĺbov.<br />

while ( znak != ’q ’ ) / / ak s t l a c e n e q , ukoncit program<br />

{<br />

}<br />

i n t i , klb ;<br />

std : : cout znak ;<br />

i f ( znak != ’q ’ )<br />

{<br />

}<br />

i f ( znak == ’1 ’) i =1;<br />

e l s e i =2;<br />

std : : coutklb ; / / n a c i t a n i e hodnoty klbu<br />

a c t a r r a y I f a c e −>Lock ( 1 ) ;<br />

a c t a r r a y I f a c e −>data−>cmd pos [ i −1] = DTOR( klb ) ; / / p r i k a z <strong>pre</strong> n a t o c e n i e klbu<br />

a c t a r r a y I f a c e −>Unlock ( ) ;<br />

66


FEI KKUI<br />

Záver<br />

Programy trup a pioneer je možné nájsť v prílohe na CD v priečinku s rovnakým<br />

názvom. Na CD prílohe sa nachádza aj balíček zdrojových kódov programu Gazebo<br />

a vytvorený model trup.<br />

67


FEI KKUI<br />

8 Príloha C<br />

Funkcia programov<br />

Program trup riadi model trupu s rukami, program pioneer slúži na <strong>riadenie</strong> mo-<br />

delu pioneer. Oba programy bežia pod systémom Linux. Program <strong>pre</strong> <strong>riadenie</strong><br />

modelu trup<br />

Pred spustením samotného programu treba otvoriť simuláciu modelu trup, ktorý sa<br />

nachádza v tom istom priečinku ako náš program a volá sa trup.model.<br />

Model spustíme nasledovným spôsobom:<br />

gazebo trup . model<br />

Po tomto príkaze sa nám spustí okno simulácie zobrazené na obrázku 8 – 1 .<br />

V priečinku trup sa nachádza program trup, ktorý spustíme po otvorení simulácie,<br />

aby sa vedel pripojiť na simuláciu týmto spôsobom:<br />

. / trup<br />

Po úspešnom prihlásení vyzerá program ako na obrázku 8 – 2 .<br />

Program <strong>pre</strong> <strong>riadenie</strong> modelu pioneer2dx<br />

Pred spustením simulácie modelu pioneer2dx sa musíme dostať do priečinku, kde sa<br />

model nachádza, a to je:<br />

/ usr / l o c a l / share / gazebo / worlds<br />

Teraz môžeme spustiť simuláciu:<br />

gazebo pioneer2dx . world<br />

Simulácia robota pioneer2dx na obrázku 8 – 3 .<br />

Program pioneer sa nachádza v priečinku pioneer a spustíme ho:<br />

. / p i o n e e r<br />

68


FEI KKUI<br />

otvorí sa okno simulácie 8 – 4 .<br />

Záver<br />

Programy trup a pioneer je možné nájsť v prílohe na CD v priečinku s rovnakým<br />

názvom. Na CD prílohe sa nachádza aj balíček zdrojových kódov programu Gazebo<br />

a vytvorený model trup.<br />

Obr. 8 – 1 Model trup počas simulácie v programe Gazebo.<br />

69


FEI KKUI<br />

Obr. 8 – 2 Okno programu <strong>pre</strong> <strong>riadenie</strong> modelu trup.<br />

Obr. 8 – 3 Model pioneer2dx počas simulácie v programe Gazebo.<br />

70


FEI KKUI<br />

Obr. 8 – 4 Okno programu <strong>pre</strong> <strong>riadenie</strong> modelu pioneer2dx.<br />

71

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!