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 ...
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
- Page 2 and 3: Technická univerzita v Košiciach
- Page 4 and 5: Abstrakt v SJ Cieľom tejto diplomo
- Page 6 and 7: Čestné vyhlásenie Vyhlasujem, ž
- Page 8 and 9: Obsah Úvod 1 1 Formulácia úlohy
- Page 10 and 11: FEI KKUI Úvod V tejto práci sa za
- Page 12 and 13: FEI KKUI 2 Úvod do projektu The Pl
- Page 14 and 15: FEI KKUI Často je používaný ako
- Page 16 and 17: FEI KKUI Obr. 2 - 3 Na obrázku je
- Page 18 and 19: FEI KKUI Obr. 2 - 5 Ukážka z prog
- Page 20 and 21: FEI KKUI • Merlin miabotPro - mal
- Page 22 and 23: FEI KKUI Tabuľka 3 - 1 Súbory pre
- Page 24 and 25: FEI KKUI joints, ODE. 3.1 Gazebo mo
- Page 26 and 27: FEI KKUI Tieto súbory svetov a mod
- Page 28 and 29: FEI KKUI Tabuľka 3 - 4 Nastavenie
- Page 30 and 31: FEI KKUI Tabuľka 3 - 7 Nastavenie
- Page 32 and 33: FEI KKUI Tabuľka 3 - 8 Vkladanie
- Page 34 and 35: FEI KKUI Tabuľka 3 - 10 Príklad d
- Page 36 and 37: FEI KKUI Obr. 3 - 2 Okno simulátor
- Page 38 and 39: FEI KKUI 4 Praktická časť V tejt
- Page 40 and 41: FEI KKUI Tabuľka 4 - 1 Inštaláci
- Page 42 and 43: FEI KKUI Tabuľka 4 - 4 Tiež sa po
- Page 44 and 45: FEI KKUI 4.1.4 Zhrnutie inštaláci
- Page 46 and 47: FEI KKUI Tabuľka 4 - 7 Definicia k
- Page 48 and 49: FEI KKUI Obr. 4 - 2 Zjednodušený
- Page 50 and 51: FEI KKUI Obr. 4 - 5 Prvé kroky pri
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