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

neuron.tuke.sk
from neuron.tuke.sk More from this publisher
26.07.2013 Views

Technická univerzita v Košiciach Fakulta elektrotechniky a informatiky Analýza softvérového prostredia pre riadenie robotov Player-Stage-Gazebo 2011 Erik Bodnár

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!