ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
´ RSK ˇ ´ PRACE ´ BAKALA A Porovn´ av´ an´ı prostˇ red´ı pro ˇ r´ızen´ı mobiln´ıch robot˚ u
Praha, 2009
Ladislav Kopeck´ y
Podˇ ekov´ an´ı Dˇekuji vˇsem, kteˇr´ı se pod´ıleli na vzniku t´eto bakal´aˇrsk´e pr´ace. Pˇredevˇs´ım vedouc´ımu pr´ace RNDr. Miroslavu Kulichovi, Ph.D. za odbornou pomoc pˇri psan´ı pr´ace. D´ale rodiˇc˚ um a pˇr´atel˚ um za podporu.
I
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady (literaturu, projekty, SW atd.) uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu § 60 Z´akona ˇc.121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´akon).
V Praze dne 20.6.2009 podpis
II
Abstrakt Pr´ace srovn´av´a vlastnosti dvou prostˇred´ı pro ˇr´ızen´ı mobiln´ıch robot˚ u. Je to v´ yvojov´e prostˇred´ı Player/Stage, pro platformu Linux a v´ yvojov´e prostˇred´ı Microsoft Robotics Developer Studio pro platformu Windows. Pr´ace pˇredevˇs´ım porovn´av´a obˇe prostˇred´ı po str´ance architektury, nebo zp˚ usobu implementace nov´ ych projekt˚ u. Porovn´an´ı prob´ıh´a i v rovinˇe vlastnosti prostˇred´ı jako pr˚ ubˇeh instalace prostˇred´ı a aktualizac´ı, poˇrizovac´ı cena, podpora pro uˇzivatele, srozumitelnost dokumentace, pˇrenositelnost vytvoˇren´ ych aplikac´ı, nebo aplikace pro jejichˇz v´ yvoj se prostˇred´ı pouˇz´ıvala.
Abstract The aim of the thesis is to compare characteristics of two environments for mobile robots control. The first development environment is Player for Linux platform, while the second one is Microsoft Robotics Developer Studio for Windows platform. The thesis compares the environments with respect to used architecture as well as new project implementation. Installation, updating of the software, prize, user support, documentation intelligibility as well as portability of created applications are also studied.
Kapitola 1 ´ Uvod Mobiln´ı robotika je velmi dynamicky se rozv´ıjej´ıc´ı odvˇetv´ı. Roboty se dost´avaj´ı do vˇsech sf´er lidsk´eho ˇzivota. Pomoc´ı robot˚ u se operuj´ı citliv´e ˇc´asti tˇela, kter´ ymi jsou oˇci nebo mozek. Roboty jsou odoln´e a proto se pouˇz´ıvaj´ı pro podmoˇrsk´ y v´ yzkum nebo z´achrann´e pr´ace v zamoˇren´ ych prostorech. Robotick´e aplikace pom´ahaj´ı kosmonaut˚ um pˇri prac´ıch v otevˇren´em vesm´ıru, voj´ak˚ um pˇri odstraˇ nov´an´ı v´ ybuˇsnin. V posledn´ı dobˇe se roboty dost´avaj´ı i do dom´acnost´ı v podobˇe automatick´ ych vysavaˇc˚ u nebo dˇetsk´ ych hraˇcek. Vˇetˇsina samostatn´ ych akc´ı robota je jednoduch´a, otoˇcen´ı motoru o urˇcit´ yu ´hel, pˇreˇcten´ı dat z ˇcidla, nebo zobrazen´ı zpr´avy na display. Pokud je robot sloˇzitˇejˇs´ı a je urˇcen pro n´aroˇcnˇejˇs´ı u ´lohy, jako je tˇreba ch˚ uze humanoida, mus´ı se zkoordinovat nˇekolik akc´ı souˇcasnˇe. Pro ˇr´ızen´ı takov´ ych sloˇzit´ ych akc´ı je potˇreba pouˇz´ıt n´aroˇcnˇejˇs´ıch programovac´ıch technik, kter´ ymi jsou napˇr´ıklad vl´akna nebo semafory. Prostˇred´ı Player/Stage a MRDS pˇrin´aˇsej´ı syst´em programov´an´ı, kde se o soubˇeh vl´aken postar´a v´ yvojov´e prostˇred´ı. Prostˇred´ı obsahuj´ı knihovny pro komunikaci s robotick´ ym hardwarem, implementuj´ı algoritmy pro v´ ypoˇcty a rozpozn´av´an´ı prostˇred´ı, obsahuj´ı simulaˇcn´ı prostˇred´ı a dalˇs´ı n´astroje pro zjednoduˇsen´ı v´ yvoje robotick´e aplikace.
1.1
Simulaˇ cn´ı prostˇ red´ı
Pˇri vytv´aˇren´ı robotick´ ych aplikac´ı program´ator nar´aˇz´ı na probl´em testov´an´ı napsan´eho k´odu. Pokud je k´od psan´ y pro re´aln´ y hardware, je testov´an´ı na tomto hardwaru nebezpeˇcn´e, protoˇze pˇri skryt´e chybˇe m˚ uˇze nastat stav, kdy se robot m˚ uˇze poˇskodit. V tomto pˇr´ıpadˇe je vhodn´e pouˇz´ıt pro testov´an´ı napsan´eho k´odu simulaˇcn´ı prostˇred´ı, ve kter´em se 1
´ KAPITOLA 1. UVOD
simuluje robot a jeho chov´an´ı v prostˇred´ı. Dalˇs´ı v´ yhodou pouˇzit´ı simulaˇcn´ıho prostˇred´ı je, ˇze se program´ator nemus´ı zab´ yvat spr´avnou funkc´ı robota, zda m´a nabit´e baterie, nebo zda spr´avnˇe pracuje datov´e spojen´ı mezi robotem a v´ ypoˇcetn´ım strojem. Nev´ yhodou simulace robotick´e aplikace je, ˇze se nikdy nedaj´ı pˇresnˇe simulovat re´aln´e podm´ınky prostˇred´ı a re´aln´e chov´an´ı hardware. Vˇzdy se mohou v re´aln´em prostˇred´ı vyskytnout nepˇredpokl´adan´e stavy v okol´ı robota, jako je vlhkost, magnetick´a pole, nebo praˇsn´e prostˇred´ı, na kter´e je tˇreba pˇri programov´an´ı myslet.
1.2
Obsah pr´ ace
Tato pr´ace se vˇenuje srovn´an´ı dvou prostˇred´ı pro v´ yvoj robotick´ ych aplikac´ı. Prvn´ı je Microsoft Robotics Developer Studio, kter´e vyv´ıj´ı firma Microsoft a je urˇceno pro platformu Windows. Druh´ ym prostˇred´ım je v´ yvojov´e prostˇred´ı Player/Stage s GNU licenc´ı, kter´e vyv´ıj´ı komunita The Player Project a je urˇceno pro platformy Linux, Solaris, Mac OS X, BSD a dalˇs´ı POSIXov´e platformy. Porovn´an´ı vlastnost´ı prostˇred´ı je na konci kaˇzd´e kapitoly. Porovn´an´ı prob´ıh´a v rovinˇe architektury prostˇred´ı, vlastnost´ı, podpory uˇzivatel˚ u, kvality dokumentace a projektech, kter´e se v prostˇred´ıch vyv´ıjej´ı. V kapitole 2, Hardware a software, je pops´an seznam pouˇz´ıvan´ ych program˚ u pro Windows a Linux, kter´e byli pˇri porovn´av´an´ı v´ yvojov´ ych prostˇred´ı pouˇz´ıv´any. D´ale je tu pops´ana z´akladn´ı konfigurace pouˇz´ıvan´eho v´ yvojov´eho poˇc´ıtaˇce. Kapitola 3, Architektura, je zamˇeˇrena na popis v´ yvojov´eho prostˇred´ı MRDS a Player/Stage, jejich architekturu, pouˇzit´e syst´emy komunikace robota a ˇr´ıd´ıc´ı ˇc´asti, struktury vytv´aˇren´ ych program˚ u a dalˇs´ıch jejich vlastnost´ı. Ve 4. kapitole Instalace v´yvojov´eho prostˇred´ı jsou pˇribl´ıˇzeny vlastnosti, pr˚ ubˇeh instalace a potˇrebn´e souˇc´asti operaˇcn´ıho syst´emu, kter´e mus´ı v syst´emu b´ yt, aby se v´ yvojov´e prostˇred´ı nainstalovalo spr´avnˇe. Jsou zde pops´any moˇznosti instalace, ˇc´asti instalaˇcn´ıho bal´ıku a jejich popis. V dalˇs´ı ˇc´asti kapitoly je seznam knihoven, kter´e jsou dostupn´e po nainstalov´an´ı v´ yvojov´ ych prostˇred´ı a vlastnosti tˇechto knihoven. Kapitola 5, Instalace aktualizac´ı, pˇrin´aˇs´ı pˇrehled vydan´ ych verz´ı, datum vyd´an´ı a z´asadn´ı zmˇeny, kter´e probˇehly pˇri vyd´an´ı nov´e verze. Je zde popis toho, v jak´ ych form´atech aktualizace vych´az´ı, jak´e jsou v´ yhody a nev´ yhody tohoto form´atu a jak ˇcasto vych´azej´ı nov´e aktualizace. V kapitole 6, Podpora pro uˇzivatele, jsou seps´any vˇsechny moˇzn´e zdroje informac´ı, ze 2
´ KAPITOLA 1. UVOD
kter´ ych mohou uˇzivatel´e ˇcerpat, pokud se dostanou k probl´emu kter´ y nemohou vyˇreˇsit. Jsou zde uvedeny blogy v´ yvoj´aˇr˚ u na kter´ ych informuj´ı o novink´ach, kter´e vyvinuli, nebo kter´e se pˇripravuj´ı pro v´ yvoj. Kapitola 7, Srozumitelnost dokumentace, navazuje na kapitolu 6 a popisuje, kter´e dokumentace jsou vydan´e a jak´e maj´ı form´aty. D´ale se popisuje jak jsou tyto dokumentace zpracovan´e a na jak´e ˇc´asti jsou rozdˇelen´e. Dalˇs´ı je kapitola 8, Podporovan´e robotick´e platformy, kde je seznam podporovan´eho robotick´eho hardware. Jsou zde uvedeny fotografie tohoto hardware a popis komunikace s hardwarem, kterou podporuj´ı v´ yvojov´a prostˇred´ı. Kapitola 9, Pˇrenositelnost vytvoˇren´e aplikace, pˇrin´aˇs´ı pˇrehled syst´em˚ u na, kter´ ych je moˇzn´e spustit vytvoˇren´e aplikace. Porovn´an´ı v´ yhod a nev´ yhod aplikac´ı vytvoˇren´ ych v prostˇred´ı Player/Stage a prostˇred´ı MRDS. Je zde pops´ana vlastnost obou prostˇred´ı, ˇze server a klient mohou b´ yt um´ıstˇeni na odliˇsn´ ych operaˇcn´ıch syst´emech. Kapitola 10, Praktick´e vyuˇzit´ı v´yvojov´ych prostˇred´ı, pˇredstavuje nˇekolik projekt˚ u, kter´e byli vyv´ıjeny v prostˇred´ıch MRDS nebo Player/Stage. V kapitole 11, Cena prostˇred´ı, je pops´ano, jak moc finanˇcnˇe n´aroˇcn´e je poˇr´ıdit si v´ yvojov´e prostˇred´ı a zda je v´ yhodn´e tuto cenu za v´ yvojov´e prostˇred´ı investovat. Kapitola 12, Implementace aplikace, je vlastnˇe n´avod na to jak v obou prostˇred´ıch implementovat aplikaci na ˇr´ızen´ı robot˚ u. Tato aplikace ˇreˇs´ı problematiku toho, aby se robot vyh´ ybal pˇrek´aˇzk´am (obstacle aviod).
3
Kapitola 2 Hardware a software 2.1
Pouˇ zit´ y robot
Pouˇzil se re´aln´ y robot Lego NXT Mindstorms. Prostˇred´ı MRDS m´a pro NXT zpracovan´e nejrozs´ahlejˇs´ı n´avody a pˇr´ıklady zdrojov´ ych k´od˚ u ze vˇsech podporovan´ ych robot˚ u. NXT je vlastnˇe stavebnice Lego, do kter´e se daj´ı zabudovat robotick´e souˇc´asti. Pˇrednˇe to jsou senzory zvuku, svˇetla a barev, ultrazvukov´ y senzor a dotykov´ y senzor. Pohybov´e ˇc´asti jsou 3 motory s rozliˇsen´ım pohybu na 1 stupeˇ n. Vˇsechny v´ ypoˇcty prov´ad´ı kostka“ ve kter´e je 32-bitov´ y mikroprocesor Atmel AT91SAM7S256, kter´ y pracuje na ” frekvenci 48MHz a obsahuje 256KB FLASH a 64KB RAM pamˇeti. Souˇca´st´ı je i koprocesor 8MHz, 4KB FLASH a 512Byte RAM. Jako komunikaˇcn´ı rozhran´ı je dostupn´e USB konektor a Bluetooth rozhran´ı. Lego NXT m´a vlastn´ı firmware, kter´ y poskytuje sluˇzby softwarov´eho API. Toto API je moˇzn´e modifikovat pro r˚ uzn´e programovac´ı jazyky. Na internetu lze nal´ezt API pro Visual Basic, platformu .NET, Java nebo Perl.
Obr´azek 2.1: Robot NXT v konfiguraci nazvan´e Tribot
4
KAPITOLA 2. HARDWARE A SOFTWARE
2.2
Software pro Windows
Pro testov´an´ı prostˇred´ı Microsoft Robotics Developer Studio byl pouˇzit Windows Vista Bussines SP1. Pˇri testov´an´ı vlastnost´ı a chov´an´ı prostˇred´ı bylo pouˇzito nˇekolik program˚ u. V tabulce 2.1 je uveden n´azev programu, verze a popis programu. N´ azev
Verze
Popis
Windows Vista Bussines SP1
Longhorn
Operaˇcn´ı syst´em Windows
Robotics Studio Academic Edition 2008
Programov´an´ı robotick´ ych aplikac´ı
Visual Studio Professional 2008
9.0.21022.8
Prostˇred´ı pro v´ yvoj aplikac´ı
.NET Framework
3.5 SP1
Podpora pˇr´ıstupu k j´adru Windows
Firefox
3.0.10
Internetov´ y prohl´ıˇzeˇc
Tabulka 2.1: Programy pouˇz´ıvan´e pro testov´an´ı MRDS
2.3
Software pro Linux Ubuntu
Pˇri testov´an´ı prostˇred´ı Player/Stage byl zvolen operaˇcn´ı syst´em Linux Ubuntu 8.10, protoˇze Ubuntu m´a velmi rozs´ahlou komunitu uˇzivatel˚ u. Z toho vypl´ yv´a snadn´ y pˇr´ıstup k informac´ım o nastaven´ı syst´emu. Dalˇs´ı velk´a v´ yhoda Ubuntu je snadn´a instalace. Pˇri psan´ı pr´ace byla vyd´ana nov´a verze Ubuntu 9.01 s nˇekolika zmˇenami. Mohl jsem tedy vyzkouˇset, zda se zmˇen´ı chov´an´ı prostˇred´ı Player/Stage. Zmˇeny Ubuntu 9.01 se nedotkly fungov´an´ı prostˇred´ı Player/Stage, nav´ıc nov´a verze pˇrinesla odstranˇen´ı jedn´e chyby pˇri instalaci. Odpadla potˇreba do syst´emu kop´ırovat soubor s definic´ı barev viz. kapitola 4.2.4.
2.4
Pouˇ zit´ y v´ yvojov´ y poˇ c´ıtaˇ c
Pro porovn´av´an´ı vlastnost´ı a chov´an´ı obou prostˇred´ı pro ˇr´ızen´ı mobiln´ıch robot˚ u byl pouˇzit notebook Fujitsu Siemens Esprimo V5545 (d´ale jen FSE). Notebook m´a konfiguraci: Intel Core2Duo CPU 2GHz, 2GB RAM, 160GB harddisk. 5
KAPITOLA 2. HARDWARE A SOFTWARE
N´ azev
Verze
Popis
Ubuntu Intrepid Ibex 8.10
Operaˇcn´ı syst´em Linux
Player
2.1.2
Programov´an´ı robotick´ ych aplikac´ı
Stage
2.1.1
Plugin simulaˇcn´ı 2D prostˇred´ı pro Player
Gazebo
0.8-pre3 Plugin simulaˇcn´ı 3D prostˇred´ı pro Player
Firefox
3.0.10
Internetov´ y prohl´ıˇzeˇc
Tabulka 2.2: Programy pouˇz´ıvan´e pro Ubuntu
6
Kapitola 3 Architektura 3.1 3.1.1
Architektura MRDS Microsoft Robotics Developer Studio (MRDS)
Microsoft Robotics Developer Studio (MRDS) [1] je platforma vyvinut´a spoleˇcnost´ı Microsoft pro tvorbu algoritm˚ u nebo program˚ u pro ˇr´ızen´ı robotick´ ych aplikac´ı a jejich realtimovou simulaci v trojrozmˇern´em simulaˇcn´ım prostˇred´ı. V´ yvoj algoritm˚ u je moˇzn´ y pro ˇsirokou ˇsk´alu r˚ uzn´ ych platforem a hardware. D˚ uleˇzit´a vlastnost je, ˇze se daj´ı pˇrid´avat vlastn´ı ˇc´asti rozhran´ı pro v´ yvoj, ˇr´ızen´ı a simulaci specifick´eho hardware. Prostˇred´ı MRDS je distribuov´ano ve tˇrech verz´ıch. Academic verze pro akademick´e pouˇzit´ı ˇs´ıˇren´a pˇres MSDNAA a DreamSpark. Placen´a verze Standart pro komerˇcn´ı pouˇzit´ı v cenˇe 10 000 Kˇc. Verze Express je dostupn´a ke staˇzen´ı z webu MRDS pro pouˇzit´ı zdarma, neobsahuje vˇsak vˇsechny n´astroje jako verze Academic/Standart. Pro snadn´e programov´an´ı a velkou variabilitu v´ yvoje v prostˇred´ı MRDS je moˇzn´e vyv´ıjet robotick´e algoritmy v nˇekolika programovac´ıch jazyc´ıch. Stˇeˇzejn´ım programovac´ım jazykem je C# (Csharp) nebo Visual Basic.Net (VB.NET), podpora je ale i pro dalˇs´ı jazyky, jako je JScript, Microsoft IronPython a C++. Prostˇred´ı MRDS poskytuje i moˇznost implementovat rozˇsiˇruj´ıc´ı rozhran´ı pro dalˇs´ı jazyky. Microsoft ˇz´adn´e dalˇs´ı rozhran´ı nenab´ız´ı a proto by si uˇzivatel musel rozhran´ı s´am naprogramovat. Pro v´ yvoj´aˇre, kteˇr´ı neovl´adaj´ı ˇz´adn´ y programovac´ı jazyk, je v prostˇred´ı MRDS implementov´ana podpora Microsoft Visual Programming Language (VPL). Je to vizu´aln´ı programovac´ı jazyk, ve kter´em se programuje pomoc´ı syst´emu chyt’ a t´ahni (drag and drop). Pro program´atory, kteˇr´ı programuj´ı v pokroˇcil´em programovac´ım jazyce, je v prostˇred´ı MRDS podpora pro programov´an´ı v Microsoft Visual Studiu (MVS), nebo v jin´em pro7
KAPITOLA 3. ARCHITEKTURA
gramovac´ım prostˇred´ı, kter´e podporuje jazyky MRDS. Napˇr´ıklad to m˚ uˇze b´ yt NetBeans nebo Eclipse. V´ yhoda pouˇz´ıv´an´ı MVS je v tom, ˇze jsou pro MVS pˇripraveny ˇsablony pro nov´e projekty a n´avody jak programovat. MRDS nab´ız´ı integrovan´e prostˇred´ı zaloˇzen´e na platformˇe .Net (dotNet). Prostˇred´ı MRDS obsahuje mnoˇzstv´ı knihoven, kter´e obstar´avaj´ı funkce pro robotick´e aplikace.
3.1.2
Concurrency and Coordination Runtime (CCR)
Hlavn´ı knihovna je Concurrency and Coordination Runtime (CCR), kter´a obstar´av´a koordinaci mezi ˇcinnostmi robot˚ u, jako jsou napˇr´ıklad pohyb, informace ze sn´ımaˇc˚ u, reakce na informace a dalˇs´ı ˇcinnosti podle vlastnost´ı robota. Je to vlastnˇe multi-taskingov´ y (v´ıce u ´lohov´ y) spr´avce zodpovˇedn´ y za koordinaci v´ıce-´ ulohov´ ych aplikac´ı pro MRDS. Zjednoduˇsenˇe ˇreˇceno, spravuje vl´akna a zajiˇst’uje jejich spr´avn´e sladˇen´ı a souˇcinnost. Architektura CCR je uvedena na obr´azku 3.1, kter´ y je pˇrevzat z webov´e str´anky [2].
Obr´azek 3.1: Architektura CCR
Kdyˇz pˇrijde pˇr´ıkaz (zpr´ava) od ˇr´ıd´ıc´ı aplikace pˇres nastaven´ y port aktivuje se pˇrij´ımaˇc a arbitr. Pˇrij´ımaˇc pˇrijme zpr´avu, zjist´ı jej´ı druh a poˇsle zpr´avu arbitrovi, kter´ y ji rozˇrad´ı 8
KAPITOLA 3. ARCHITEKTURA
do fronty zpr´av podle druhu a priority zpr´avy. Zpr´avy spust´ı u ´lohu ve vytvoˇren´em vl´aknˇe, kter´e je ˇr´ızeno a spravov´ano v z´asobn´ıku vl´aken. Sluˇzby jsou obsaˇzen´e v knihovn´ach a poskytuj´ı pˇr´ıstup k naprogramovan´ ym funkc´ım. Tyto funkce se pouˇz´ıvaj´ı pro komunikaci s hardwarem, prov´ad´ı v´ ypoˇcty pokroˇcil´ ych algoritm˚ u, vytv´aˇren´ı simulaˇcn´ıho prostˇred´ı, ˇr´ızen´ı motor˚ u, ˇcten´ı dat ze senzor˚ u a dalˇs´ı robotick´e funkce.
3.1.3
Decentralized Software Services (DSS)
Dalˇs´ı d˚ uleˇzitou knihovnou je Decentralized Software Services (DSS), kter´a je grafickou nadstavbou pro CCR. Vytv´aˇr´ı grafick´e prostˇred´ı pomoc´ı Web Forms (webov´ ych formul´aˇr˚ u), nebo Windows Forms (formul´aˇre pro Windows). Pˇres tyto formul´aˇre se pˇristupuje k syst´emov´ ym ud´alostem a sluˇzb´am knihovny CCR. DSS pˇredstavuje bˇehov´e prostˇred´ı, kter´e dovoluje sluˇzb´am vymˇen ˇovat si zpr´avy bez ohledu na to, kde v s´ıti se nal´ezaj´ı. Je to tedy prostˇred´ı pro komunikaci mezi sluˇzbami. Na jedn´e stranˇe jsou sluˇzby, kter´e zpracov´avaj´ı data a prov´ad´ı v´ ypoˇcty. Na druh´e stranˇe jsou sluˇzby, kter´e sb´ıraj´ı data ze senzor˚ u a vykon´avaj´ı pˇr´ıkazy pro ovl´adan´ı robotick´ ych aplikac´ı. Sluˇzby jsou funkce, kter´e jsou poskytovan´e jednotliv´ ymi knihovnami. Zjednoduˇsen´a architektura sluˇzeb je uvedena na obr´azku 3.2, kter´ y je pˇrevzat z webov´e str´anky [2].
Obr´azek 3.2: Architektura sluˇzeb
Kaˇzd´a vytvoˇren´a sluˇzba m´a unik´atn´ı identifik´ ator URI, kter´ y reprezentuje sluˇzbu 9
KAPITOLA 3. ARCHITEKTURA
v cel´em prostˇred´ı MRDS. Sloˇzitˇejˇs´ı sluˇzby maj´ı v hlaviˇcce reference na dalˇs´ı sluˇzby, kter´e jsou ve sluˇzbˇe pouˇz´ıvan´e. Kdyˇz vytv´aˇr´ıme novou sluˇzbu n´astrojem pro MRDS jsou v hlaviˇcce importovan´e sluˇzby pro ˇcten´ı manifest˚ u a pro pr´aci s protokolem DSSP. Na hlavn´ım portu se pˇripojuje aplikace a z´ısk´av´a funkce od sluˇzeb. Data jsou prokl´ad´ ana aby se mohla z´ısk´avat z v´ıce sluˇzeb z´aroveˇ n. Na porty pro poˇzadavky, pˇrich´azej´ı poˇzadavky na funkce sluˇzeb. V manipul´ atoru poˇzadavk˚ u se poˇzadavky tˇr´ıd´ı a ˇz´adaj´ı partnersk´e sluˇzby o potˇrebn´e funkce. Koordinace mezi poˇzadavky na sluˇzby a daty odch´azej´ıc´ıch od sluˇzeb prob´ıh´a ve stavech sluˇzeb. Sch´ema komunikace CCR, DSS, sluˇzeb a klientsk´e aplikace je na obr´azku. Sluˇzby ˇctou data ze senzor˚ u a pˇred´avaj´ı je pˇres CCR a DSS do logick´eho ˇr´ızen´ı. V logick´em ˇr´ızen´ı se data zpracov´avaj´ı a po zpracov´an´ı dat se pos´ılaj´ı ˇr´ıd´ıc´ı pˇr´ıkazy pˇres DSS a CCR na sluˇzby akˇcn´ıch ˇclen˚ u. Veˇsker´e koordinace sluˇzeb ˇr´ıd´ı bˇehov´e prostˇred´ı CCR s pˇrispˇen´ım DSS, kter´e nav´ıc komunikuje s klientskou ˇr´ıd´ıc´ı aplikac´ı.
DSSCP(Decentralized Software Services Command Prompt - DSS pˇr´ıkazov´a ˇr´adka) vzhledem vypad´a jako klasick´a pˇr´ıkazov´a ˇr´adka syst´emu Windows viz. obr´azek 3.4, ale je napojena na sluˇzby a n´astroje pro prostˇred´ı MRDS. Klasick´a pˇr´ıkazov´a ˇr´adka Windows nepodporuje pˇr´ıkazy prostˇred´ı MRDS. Pˇri spuˇstˇen´ı DSSCP se cesta adres´aˇre automaticky smˇeˇruje do adres´aˇre MRDS. Seznam n´astroj˚ u pro DSSCP: • DssInfo.exe - n´astroj, kter´ y prozkoum´a knihovnu uvedenou v parametru a zobraz´ı vˇsechny jej´ı z´avislosti na ostatn´ı knihovny i informace, kde je knihovna pouˇzita. Informace se uloˇz´ı do uveden´e sloˇzky. Je moˇzn´e si vybrat uloˇzen´ı dat do souboru HTML nebo XML. N´astroj je moˇzn´e pouˇz´ıvat i pro v´ıce knihoven najednou a vytvoˇrit tak seznam a popis pouˇz´ıvan´ ych knihoven. • DssDeploy.exe - vytv´aˇr´ı a rozbaluje archivy s pˇr´ıponou .exe. Archiv je bal´ıˇcek, kter´ y obsahuje soubory MRDS potˇrebn´e pro fungov´an´ı vytvoˇren´e robotick´e aplikace bez nainstalovan´eho prostˇred´ı MRDS. Archivy jsou samo spustiteln´e nebo se daj´ı rozbalit pomoc´ı n´astroje dssdeploy.exe. • DssHost.exe - vytvoˇr´ı DSS uzel na definovan´em TCP portu. DSS uzel je rozhran´ı, ke kter´emu se pˇripoj´ı klientsk´a aplikace. DssHost spouˇst´ı jednu nebo v´ıce sluˇzeb a zobrazuje jejich v´ ypis v pˇr´ıkazov´e ˇr´adce DSSCP. Pokud poˇzadujeme sestaven´ı aplikace pro vzd´alen´e pˇripojen´ı, pouˇzijeme argument pro vytvoˇren´ı IP adresy pro identifikaci aplikace v s´ıti. Kdyˇz chceme spustit projekt MRDS, lze to prov´est pˇr´ıkazem z DSSCP dsshost /m:manifest.Manifest.xml. N´astroj DssHost.exe naˇcte konfiguraˇcn´ı manifest, kter´ y je zad´an v parametru a spust´ı pˇr´ısluˇsn´e sluˇzby, kter´e jsou v manifestu nadefinov´any. • DssNewService.exe - vytvoˇr´ı nov´ y projekt, kter´ y se pouˇzije jako v´ ychoz´ı bod pro v´ yvoj nov´e robotick´e aplikace. Tento projekt je vytvoˇren pro MVS, ale m˚ uˇze b´ yt editov´an i v jin´em v´ yvojov´em prostˇred´ı. Je moˇznost projekt vytvoˇrit v podporovan´ ych jazyc´ıch (C#, Visual Basic.Net (VB.NET), JScript, Microsoft IronPython, C++) • DssProjectMigration.exe - dovoluje pˇrenesen´ı projektu z jedn´e verze MRDS do jin´e verze, pˇredevˇs´ım se pouˇz´ıv´a pro pˇrenos projektu z MVS 2005 na projekt v MVS 2008 a pˇrenos mezi aplikacemi vytvoˇren´ ymi v MRDS 1.5 do aplikac´ı pro MRDS 2008 11
KAPITOLA 3. ARCHITEKTURA
• DssProxy.exe - n´astroj, kter´ y vytv´aˇr´ı zastoupen´ı, pˇresmˇerov´an´ı a transformaci sluˇzeb. Automaticky se spouˇst´ı pˇri pouˇzit´ı n´astroje DssNewService.exe • HttpReserve.exe - rezervuje port pro uˇzivatele nebo dom´enu. Tento n´astroj se pouˇz´ıv´a, pokud potˇrebujeme vyhradit port pro aplikaci.
Obr´azek 3.4: Vytv´ aˇren´ı nov´eho projektu v pˇr´ıkazov´e ˇr´adce MRDS
Pokud spouˇst´ıme aplikaci v prostˇred´ı MRDS jinak neˇz z pˇr´ıkazov´e ˇr´adky DSSCP a v aplikaci se vyskytne chyba, DSSCP sice tuto chybu zobraz´ı, ale jen na nˇekolik m´alo okamˇzik˚ u, takˇze ani nen´ı moˇzn´e tuto chybu pˇreˇc´ıst. Toto chov´an´ı se vyskytuje i u klasick´e pˇr´ıkazov´e ˇr´adky syst´emu Windows a ztˇeˇzuje odhalen´ı chyby.
3.1.5
Soubory Manifest
Manifest je soubor zaloˇzen´ y na otevˇren´em standartu XML s pˇr´ıponou .xml nebo .Manifest.xml, kter´ y obsahuje tagy - znaˇcky, kter´e popisuj´ı jednotliv´e objekty a jejich vlastnosti. Manifesty jsou uloˇzeny pˇredevˇs´ım v adres´aˇri MRDS\samples\Config. Soubory manifest definuj´ı vlastnosti objekt˚ u pouˇz´ıvan´ ych v prostˇred´ı MRDS. Manifesty se pouˇz´ıvaj´ı pˇredevˇs´ım jako konfiguraˇcn´ı soubory a rozdˇeluj´ı se na tˇri druhy. 3.1.5.1
Konfiguraˇ cn´ı Manifest
Prvn´ı druh manifestu se pozn´a podle p´arov´eho tagu <Manifest>. Tyto manifesty popisuj´ı vlastnosti robotick´eho hardware (motor, ˇr´ıd´ıc´ı deska, ˇcidlo a dalˇs´ı). Pˇredevˇs´ım definuj´ı komunikaˇcn´ı vlastnosti hardwaru jako jsou porty, rychlost pˇrenosu, druh rozhran´ı, z´avislosti na sluˇzby a na konfiguraˇcn´ı soubory. Tento manifest je moˇzn´e upravovat a vytv´aˇret pomoc´ı editoru DSSME nebo textov´ ym editorem. Tento druh manifestu se vytv´aˇr´ı automaticky pˇri exportu projektu z prostˇred´ı VPL do projektu MVS.
12
KAPITOLA 3. ARCHITEKTURA
3.1.5.2
Manifest pro dokumentaci
Druh´ y druh manifestu je oznaˇcen p´arov´ ym tagem <doc>. Tento manifest popisuje sluˇzby definovan´e v knihovn´ach, kter´e byli vytvoˇreny pˇri kompilaci nov´e aplikace. Je to soubor dokumentace, kter´ y se pouˇz´ıv´a pˇri generov´an´ı dokumentaˇcn´ıch soubor˚ u n´astrojem DssInfo. Tento manifest se ned´a upravovat editorem DSSME, ale lze jej upravovat pomoc´ı textov´eho editoru nebo editoru pro dokumentaci. Soubor se automaticky vytv´aˇr´ı pˇri kompilaci aplikace v prostˇred´ı MVS nebo pˇri exportu aplikace z prostˇred´ı VPL. 3.1.5.3
Manifest s popisem simulaˇ cn´ı sc´ eny
Tˇret´ı druh manifestu je oznaˇcen p´arov´ ym tagem <SimulationState>. Tento manifest popisuje stav simulaˇcn´ıho prostˇred´ı, vloˇzen´e entity a jejich vlastnosti, chov´an´ı simulaˇcn´ıho prostˇred´ı, gravitace a dalˇs´ı vlastnosti simulace. Manifest nelze upravovat pomoc´ı DSSME, ale lze jej upravovat pomoc´ı textov´eho editoru nebo naˇcten´ım do prostˇred´ı VSE upraven´ım entit a opˇetovn´ ym uloˇzen´ım Save Scene As. Pokud sc´enu uloˇz´ıme t´ımto zp˚ usobem, vytvoˇr´ı se dva manifesty. Jeden obsahuje simulaˇcn´ı popis s pˇr´ıponou .xml, kter´ y m˚ uˇze opˇet otevˇr´ıt v prostˇred´ı VSE a upravovat. Druh´ y manifest obsahuje popis referenc´ı na sluˇzby. Pomoc´ı nˇej lze spustit simulaci z pˇr´ıkazov´e ˇr´adky DSSCP. Tento manifest m´a pˇr´ıponou .Manifest.xml. Pokud chceme spustit simulaci z pˇr´ıkazov´e ˇr´adky DSSCP, mus´ıme pouˇz´ıt manifest s pˇr´ıponou .Manifest.xml a pˇr´ıkazem pro DSSCP dsshost /port:50000 /tcpport:50001 /m:Apl.manifest.xml simulaci spust´ıme. Tento pˇr´ıkaz zobraz´ı pouze simulaˇcn´ı sc´enu v prostˇred´ı VSE. Tento postup je vhodn´ y pro upravov´an´ı vzhledu simulaˇcn´ı sc´eny. Pokud m´ame ve sc´enˇe nadefinovan´eho robota a chceme jej ovl´adat, mus´ıme se k simulaˇcn´ımu prostˇred´ı pˇripojit ˇr´ıd´ıc´ım programem na portech uveden´ ych pˇri spouˇstˇen´ı simulace z DSSCP. 3.1.5.4
Pˇ r´ıklad konfiguraˇ cn´ıho Manifestu
Na pˇr´ıkladu 3.1.5.4 je uveden Manifest, kter´ y se pouˇzije pˇri pˇripojen´ı hlavn´ı kostky“ ” NXT k robotick´e aplikaci. Adresy HTTP uveden´e v textu odkazuj´ı na sluˇzby, kter´e jsou definovan´e v knihovn´ach. Nejsou to klasick´e HTTP adresy odkazuj´ıc´ı na server. Popis jednotliv´ ych sluˇzeb lze generovat n´astrojem dssinfo z knihovny robotick´e aplikace, kter´a se vygeneruje pˇri kompilaci aplikace v prostˇred´ı MVS.
13
KAPITOLA 3. ARCHITEKTURA Pˇ rı ´klad manifestu pro komunikaci s r ˇı ´d´ ıc´ ı "kostkou" NXT <Manifest #reference na sluˇ zbu, kter´ a poskytuje funkce pro komunikaci s NXT xmlns:brick="http://schemas.microsoft.com/robotics/2007/07/lego/nxt/brick.html" #identifik´ ator manifestu xmlns:this="urn:uuid:2843e826-f443-4338-910c-14169734f723" #reference na sluˇ zby knihovny DSS xmlns:dssp="http://schemas.microsoft.com/xw/2004/10/dssp.html" #reference na sluˇ zby pro c ˇten´ ı manifest˚ u xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html">
#vytvoˇ ren´ ı seznamu sluˇ zeb
<ServiceRecordType> #fuknce naˇ cı ´t´ an´ ı sluˇ zeb
#sluˇ zba pro komunikaci pˇ res DSS protokol
#sluˇ zba, kter´ a se naˇ cte http://schemas.microsoft.com/robotics/2007/07/lego/nxt/brick.html this:LegoNXTBrickv2
#n´ azev vytvoˇ ren´ e sluˇ zby
Pˇr´ıklad 3.1.5.4: Manifest pro komunikaci s ˇr´ıd´ıc´ı kostkou“ NXT ” 3.1.5.5
Vytv´ aˇ ren´ı a u ´ prava Manifest˚ u
Editov´an´ı a vytv´aˇren´ı manifest soubor˚ u je moˇzn´e v libovoln´em textov´em editoru, ale tato cesta je velmi sloˇzit´a. Program´ator mus´ı zn´at vˇsechny syntaxe vˇsech tag˚ u, kter´e se pouˇz´ıvaj´ı v prostˇred´ı MRDS manifestech. Druh´a cesta je pomoc´ı n´astroje DSS Manifest Editor (DSSME). DSSME na obr´azku 3.5 je grafick´ y editor pro vytv´aˇren´ı a u ´pravu manifest soubor˚ u. Nov´e manifest soubory se vytv´aˇr´ı skl´ad´an´ım jiˇz existuj´ıc´ıch sluˇzeb, kter´e se naˇc´ıtaj´ı z knihoven ze sloˇzky MRDS. DSSME pˇri kaˇzd´em startu proch´az´ı sloˇzky MRDS, aby nalezl existuj´ıc´ı manifesty a sluˇzby. Start editoru se pak m˚ uˇze prot´ahnout na celou jednu minutu. V´ yhoda tohoto startu je, ˇze pˇri kaˇzd´em startu DSSME jsou naˇcteny opravdu jen existuj´ıc´ı sluˇzby a manifesty. Kdyˇz DSSME spouˇst´ıme ˇcastˇeji je jiˇz start rychlejˇs´ı. V lev´e ˇc´asti je seznam naˇcten´ ych sluˇzeb, kter´e je moˇzn´e do manifestu vkl´adat. Sluˇzby se vkl´adaj´ı pˇretaˇzen´ım vybran´e sluˇzby na pracovn´ı plochu. V prav´e ˇc´asti DSSME lze jednotliv´ ym sluˇzb´am mˇenit nastaven´ı.
14
KAPITOLA 3. ARCHITEKTURA
Obr´azek 3.5: DSSME s naˇcten´ ym manifestem pro aplikaci s NXT
3.1.6
Microsoft Visual Programming Language (VPL)
Vzhled prostˇred´ı VPL je na obr´azku 3.6. Je to visu´aln´ı programovac´ı prostˇred´ı vyvinut´e pˇr´ımo pro pouˇzit´ı sluˇzeb z knihoven DSS a CCR. Programov´an´ı se prov´ad´ı stylem drag and drop (chyt’ a t´ahni). To znamen´a, ˇze v programovac´ım prostˇred´ı m´ame v lev´em sloupci seznam dostupn´ ych sluˇzeb a ty vkl´ad´ame pˇretaˇzen´ım na pracovn´ı plochu. Tyto sluˇzby lze mezi sebou spojovat a vytv´aˇret tak inteligentn´ı aplikace. V tomto prostˇred´ı je moˇzn´e naprogramovat celou ˇr´ıd´ıc´ı aplikaci. Je urˇcen´e pro v´ yvoj´aˇre, kteˇr´ı neovl´adaj´ı ˇz´adn´ y programovac´ı jazyk, ale pouˇz´ıvaj´ı jej i zkuˇsen´ı program´atoˇri pro rychl´e sestaven´ı jednoduˇsˇs´ıch sluˇzeb, jejich propojen´ı a export do projektu pro MVS. Projekt je exportov´an v jazyce C# a do sloˇzky projektu se pˇridaj´ı i vˇsechny potˇrebn´e knihovny a manifesty. Je to velmi jednoduch´a a rychl´a cesta, jak vytvoˇrit nov´ y projekt. Touto cestou si vytvoˇr´ıme vlastn´ı manifest a projekt se sluˇzbami pro danou robotickou aplikaci. Pomoc´ı soubor˚ u manifest pˇripoj´ıme ke sluˇzb´am souˇc´asti robota nebo jejich simulace v prostˇred´ı VSE. Probl´em m˚ uˇze nastat, kdyˇz chceme v prostˇred´ı VPL programovat sloˇzitˇejˇs´ı struktury. Pˇredevˇs´ım se ve velk´em mnoˇzstv´ı sluˇzeb m˚ uˇzeme snadno ztratit. Na obr´azku 3.6 je vidˇet prostˇred´ı VPL se spuˇstˇen´ ym projektem, kter´ y obsahuje sluˇzby rozhodovac´ı struktury a naprogramovan´e dialogov´e okno s ˇr´ıd´ıc´ım kˇr´ıˇzem pro ovl´ad´an´ı pohybu robota.
15
KAPITOLA 3. ARCHITEKTURA
Obr´azek 3.6: Prostˇred´ı VPL s ˇr´ıd´ıc´ım kˇr´ıˇzem
3.1.7
Microsoft Visual Simulation Environment (VSE)
MRDS nab´ız´ı pro simulace robotick´ ych aplikac´ı simulaˇcn´ı prostˇred´ı VSE (Visu´aln´ı simulaˇcn´ı prostˇred´ı). V tomto prostˇred´ı se simuluje re´aln´e chov´an´ı entit (objekt˚ u), se zachov´an´ım fyzik´aln´ıch z´akon˚ u. Struktura VSE je zaloˇzena na Simulation Engine Service, kter´a vykresluje entity a v´ ypoˇcet simulaˇcn´ıho ˇcasu. D´ale sleduje stav simulaˇcn´ıho prostˇred´ı a simuluje entity. Dalˇs´ı v´ yznamnou sloˇzkou je Managed Physics Engine Rapper, kter´a pˇrin´aˇs´ı zjednoduˇsen´e pˇr´ıkazy pro komunikaci s API (Application Programming Interface - rozhran´ı pro programov´an´ı aplikace). Jednou z dalˇs´ıch aplikac´ı rozˇsiˇruj´ıc´ı vlastnosti simulaˇcn´ıho prostˇred´ı je AGEIA PhysX Technology. Tato technologie dok´aˇze pouˇz´ıvat hardware zvyˇsuj´ıc´ı akceleraci a kvalitu simulace chov´an´ı robot˚ u v simulaˇcn´ım prostˇred´ı pomoc´ı AGEIA PhysX procesor˚ u. Nejd˚ uleˇzitˇejˇs´ı ˇc´ast´ı simulaˇcn´ıho prostˇred´ı je aplikace Entities. Je to aplikace, kter´a v simulaˇcn´ım prostˇred´ı reprezentuje roboty a fyzick´e objekty jako napˇr´ıklad stˇeny, pˇrek´aˇzky a dalˇs´ı simulovan´e pˇredmˇety. Simulaˇcn´ı prostˇred´ı je napsan´e v prostˇred´ı XNA, coˇz je prostˇred´ı pro programov´an´ı her pod Windows. Simulaˇcn´ı prostˇred´ı VSE pro MRDS nab´ız´ı tˇr´ıdimenzion´aln´ı (3D) pohled na simulovanou sc´enu s moˇznost´ı pˇrep´ın´an´ı mezi vloˇzen´ ymi kamerami viz. obr´azek 3.7. S kamerami je
16
KAPITOLA 3. ARCHITEKTURA
moˇzn´e pohled plynule pˇribliˇzovat, oddalovat, plynule mˇenit u ´hel pohledu ze vˇsech stran, shora i zdola. Je moˇzn´e pˇrid´avat, odeb´ırat a editovat entity pˇri pˇrepnut´ı simulaˇcn´ıho prostˇred´ı do editaˇcn´ıho m´odu. Vkl´adan´e entity mohou b´ yt ve form´atu Collada (soubor pro ukl´ad´an´ı dat z animaˇcn´ıch program˚ u napˇr´ıklad z programu SolidWorks). Simulaˇcn´ı prostˇred´ı v editaˇcn´ım m´odu je zobrazeno na obr´azku 12.1 v kapitole 12.1.2. Lze mˇenit zobrazen´ı z klasick´e animace na zobrazen´ı model˚ u s vykreslen´ım hran, nebo zobrazen´ı os x, y, z, kaˇzd´e z entity. Zobrazen´ı os entit je na obr´azku 3.7.
Obr´azek 3.7: VSE v zobrazen´ı os x, y, z entit
Pro vyzkouˇsen´ı funkˇcnosti prostˇred´ı VSE si m˚ uˇzeme v prostˇred´ı VPL sestavit jednoduchou aplikaci. Napˇr´ıklad si vytvoˇr´ıme aplikaci pro NXT, aby robot jezdil st´ale dokola. Nejjednoduˇsˇs´ı je vloˇzit v prostˇred´ı VPL blok IF s podm´ınkou true“, aby simulovan´ y ” 17
KAPITOLA 3. ARCHITEKTURA
robot jezdil st´ale. Pot´e vloˇz´ıme blok GenericDifferentialDrive, kter´ y vytv´aˇr´ı dva motory s jedn´ım ˇr´ızen´ım. Propoj´ıme bloky IF a GenericDifferentialDrive a vybereme typ spojen´ı From: TrueChoice a To: SetDrivePower a hodnoty pro motory nadefinujeme pro LeftWheelPower 0.8 a pro RightWheelPower 0.7. Tyto hodnoty zajist´ı, ˇze NXT bude jezdit st´ale dokola. Maxim´aln´ı hodnota WheelPower pro motory NXT je 1. Do sluˇzby GenericDifferentialDrive importujeme manifest LEGO.NXT.Tribot.SimulationEngineState.xml. Tento manifest definuje simulaˇcn´ı prostˇred´ı a robota NXT. Sestaven´a sluˇzba je na obr´azku 3.8
Obr´azek 3.8: Sestaven´e sluˇzby pro vyzkouˇsen´ı simulace
3.1.8
Microsoft Visual Studio (MVS)
Pokud chceme programovat robotick´e aplikace opravdu efektivnˇe, je tˇreba pouˇz´ıt jen jedno v´ yvojov´e prostˇred´ı pro vˇsechny ˇc´asti projektu, ˇc´ımˇz se sn´ıˇz´ı probl´emy s kompletac´ı projektu. Vytvoˇren´ı manifest soubor˚ u, naprogramov´an´ı ˇr´ıd´ıc´ıho programu, sestaven´ı simulaˇcn´ı sc´eny, n´asledn´e propojen´ı vˇsech ˇc´ast´ı a spuˇstˇen´ı projektu. Vˇsechny tyto kroky se daj´ı efektivnˇe programovat v prostˇred´ı MVS s pouˇzit´ım n´astroj˚ u MRDS. Na obr´azku 3.9 je vidˇet MVS s naˇcten´ ym C# projektem. Na zaˇc´atku k´odu jsou vidˇet importovan´e knihovny robotick´ ych funkc´ı. Nejvhodnˇejˇs´ı jazyk pro programov´an´ı robotick´ ych aplikac´ı pomoc´ı MVS je C#, pro kter´ y jsou zpracov´any vˇsechny n´avody a tutori´aly pro prostˇred´ı MRDS. Pro ostatn´ı jazyky jsou zpracov´any pouze nˇekter´e n´avody a tutori´aly. Velkou v´ yhodou pˇri psan´ı v jazyce C# v prostˇred´ı MVS je IntelliSense. Je to n´astroj na inteligentn´ı doplˇ nov´an´ı k´odu integrovan´e do MVS. Pro v´ yvoj robotick´ ych aplikac´ı MRDS nen´ı potˇreba placen´a verze prostˇred´ı 18
KAPITOLA 3. ARCHITEKTURA
Obr´azek 3.9: Projekt MRDS naˇcten´ y ve Visual Studiu
MVS, ale lze pouˇz´ıt verzi Express, kter´a je k dost´an´ı zdarma. Pro zjednoduˇsen´ı pr´ace je vhodn´e pouˇz´ıvat n´astroje prostˇred´ı MRDS. N´asleduj´ıc´ı n´astroje generuj´ı k´od v C#, kter´ y se m˚ uˇze pouˇz´ıt v prostˇred´ı MVS pro doplˇ nov´an´ı ˇc´ast´ı projektu. V seznamu jsou uveden´e nˇekter´e n´astroje, kter´e usnadˇ nuj´ı v´ yvoj robotick´e aplikace. • Vytvoˇren´ı nov´eho projektu n´astrojem DssNewService • Vytvoˇren´ı entity pomoc´ı program˚ u Autocad, GoogleSketchUp, nebo jin´ ych animaˇcn´ıch program˚ u • Sestaven´ı simulaˇcn´ı sc´eny v prostˇred´ı VSE a uloˇzen´ı do manifestu • Sestaven´ı manifestu n´astrojem DSSME
19
KAPITOLA 3. ARCHITEKTURA
3.2 3.2.1
Architektura Player/Stage Player/Stage
Prostˇred´ı pro ˇr´ızen´ı mobiln´ıch robot˚ u Player/Stage je projekt s GNU licenc´ı s volnˇe dostupn´ ymi zdrojov´ ymi k´ody vyv´ıjen´ ymi v komunitˇe kolem projektu. Player/Stage podporuje platformu Linux (PC a embedded), Solaris, Mac OS X, BSD a dalˇs´ı platformy splˇ nuj´ıc´ı standard Posix. V prostˇred´ı Player/Stage je implementovan´a podpora pro programovac´ı jazyky C++, Tcl, Java a Python. Architektura prostˇred´ı Player/Stage je navrˇzena tak, aby byla nez´avisl´a na pouˇzit´em jazyce a platformˇe. Tato vlastnost je nejvˇetˇs´ı pˇrednost´ı prostˇred´ı Player/Stage. Programy v prostˇred´ı Player/Stage mohou b´ yt naps´any tak, aby byli co nejmenˇs´ı. To znamen´a, ˇze se pouˇz´ıvaj´ı pouze potˇrebn´e knihovny a funkce. Tak vytvoˇr´ıme program pˇresnˇe podle poˇzadavk˚ u, bez zbyteˇcn´ ych knihoven a funkc´ı. V nˇekter´ ych pˇr´ıpadech tento programovac´ı pˇr´ıstup m˚ uˇze projektu uˇskodit, protoˇze se zdrojov´ y k´od m˚ uˇze st´at nepˇrehledn´ ym. Pˇri pr´aci s prostˇred´ım Player/Stage jsou z´akladn´ımi souˇc´astmi, server Player vytvoˇren´ y na robotick´em hardware a klient, kter´ y se pˇripojuje k serveru Player. Server poskytuje data ze senzor˚ u a ovl´ad´a akˇcn´ı robotick´e ˇcleny. Klient zpracov´av´a pˇrijat´a data a vyd´av´a pokyny k ovl´ad´an´ı robotick´ ych ˇclen˚ u. Data ze serveru Player se nemus´ı pouˇz´ıvat jen pro v´ ypoˇcty v ˇr´ıd´ıc´ım programu. Data lze ukl´adat na klientovi a slouˇz´ı pro monitorov´an´ı chov´an´ı robota v prostˇred´ı. Klientem je libovoln´ y poˇc´ıtaˇcov´ y syst´em a m˚ uˇze b´ yt um´ıstˇen i na jin´em operaˇcn´ım syst´emu. Pouˇz´ıvan´e jsou klasick´e PC, integrovan´e poˇc´ıtaˇcov´e desky nebo integrovan´a zaˇr´ızen´ı. Spojen´ı serveru Player a klienta prob´ıh´a pˇres komunikaˇcn´ı rozhran´ı TCP. Pˇres TCP pˇripojen´ı server Player podporuje libovoln´ y poˇcet pˇripojen´ ych robot˚ u nebo klient˚ u. Spojen´ı je umoˇznˇeno tak´e vz´ajemnˇe mezi robotick´ ymi aplikacemi. V prostˇred´ı Player/Stage je kaˇzd´e zaˇr´ızen´ı moˇzn´e konfigurovat takzvanˇe za letu“, to znamen´a bˇehem prov´adˇen´ı ” operac´ı. Architektura prostˇred´ı Player/Stage je zaloˇzena na modul´arn´ım sch´ematu. Z´akladn´ı bloky jsou server - klient a k nim se pˇripojuj´ı ovladaˇce pro hardware viz. obr´azek 3.10. Algoritmy pouˇzit´e pro jednotliv´e aplikace, jak´ ymi jsou zjiˇst’ov´an´ı polohy, ˇr´ızen´ı motor˚ u, zpracov´an´ı dat laserov´ ych mˇeˇriˇc˚ u a ostatn´ı se pro odliˇsn´e robotick´e aplikace pouˇz´ıvaj´ı stejn´e, pouze se mˇen´ı ovladaˇce pro dan´eho robota.
Stage je 2D simulaˇcn´ı prostˇred´ı pro server Player. Simulace se spust´ı na serveru Player a simuluje chov´an´ı robotick´eho hardware. Pro pˇripojen´ı simulaˇcn´ı aplikace k serveru Player se pouˇz´ıv´a ovladaˇc, stejnˇe jako pro pˇripojen´ı re´aln´eho hardwaru. Kdyˇz tedy vyv´ıj´ıme aplikaci v prostˇred´ı Player/Stage je vhodn´e si pˇripravit dva konfiguraˇcn´ı soubory, kter´e budou t´emˇeˇr stejn´e, jen se budou se v pouˇzit´ı ovladaˇc˚ u. Jeden konfiguraˇcn´ı soubor s ovladaˇci pro re´aln´ y hardware a druh´ y s ovladaˇci pro simulaˇcn´ı prostˇred´ı Stage. Simulace prob´ıh´a v 2D grafice s p˚ udorysov´ ym pohledem. Stage m´a grafick´e prostˇred´ı uveden´e na obr´azku 3.11, kde se zobrazuje pr˚ ubˇeh simulace. V simulaˇcn´ım prostˇred´ı je moˇzn´e sledovat nˇekolik simulovan´ ych veliˇcin. • Dr´ahu pohybu robota • Mˇr´ıˇzku, kter´a rozdˇel´ı prostˇred´ı na oblasti • Mˇr´ıˇzka rozpozn´an´ı pˇrek´aˇzek • Zobrazen´ı prostoru rozsahu detektoru robota (laserov´ y detektor nebo sonar) • Um´ıstˇen´ı robota v souˇradnic´ıch Podkladov´e simulaˇcn´ı prostˇred´ı je jen bitmapa, kterou Stage prozkoum´a a m´ısta v obr´azku, kde jsou ˇc´ary pˇrevede na pˇrek´aˇzky.
V´ yvoj aplikac´ı lze v prostˇred´ı Player/Stage simulovat i ve 3D pohledu. Tuto 3D simulaci poskytuje pro prostˇred´ı Player/Stage plugin Gazebo. Gazebo je zobrazeno v grafick´em oknˇe viz. obr´azek 3.12. Syst´em simulace je stejn´ y jako v prostˇred´ı Stage. V simulaˇcn´ım prostˇred´ı Gazebo lze simulovat nˇekolik robot˚ u ve venkovn´ım prostˇred´ı. Simulovat lze klasick´e senzory, jako je laserov´ y mˇeˇriˇc, sonar, kamery, GPS a dalˇs´ı. Pod22
KAPITOLA 3. ARCHITEKTURA
pora je pro simulaci bˇeˇzn´ ych robot˚ u jako jsou napˇr´ıklad P2DX, P2AT, nebo Segway. Simulov´an´ı prob´ıh´a v prostˇred´ı, kde plat´ı fyzik´aln´ı z´akony. V nejnovˇejˇs´ı verzi Gazebo je moˇzn´e importovat na roboty vzhled vytvoˇren´ y v modelovac´ıch programech. Zobrazen´ı je moˇzn´e pˇrep´ınat mezi klasick´ ym zobrazen´ım animace a dr´atov´ ym modelem. Je moˇzn´e zobrazovat i m´ısta kde sn´ımaj´ı napˇr´ıklad laserov´e sn´ımaˇce.
Instalace v´ yvojov´ eho prostˇ red´ı MRDS Distribuovan´ e verze
Microsoft Robotics Developer Studio je distribuov´ano ve tˇrech verz´ıch. Express Edition, kter´a je pro pouˇzit´ı zdarma, ale nem´a implementov´any vˇsechny funkce. Verze Academic Edition a Standart Edition jsou funkˇcnˇe shodn´e. Academic Edition je ve vˇetˇsinˇe pˇr´ıpadech ˇs´ıˇrena prostˇrednictv´ım MSDNAA (program pro ˇs´ıˇren´ı v´ yrobk˚ u Microsoft pro akademick´e pouˇzit´ı) a DreamSpark (program pro ˇs´ıˇren´ı v´ yrobk˚ u Microsoft pro stˇredn´ı ˇskoly) a je ke staˇzen´ı zdarma. Verze Standart Edition je urˇcena pˇredevˇs´ım pro komerˇcn´ı sektor a je distribuov´ana jako placen´a verze.
4.1.2
Rozd´ıly ve verz´ıch
Rozd´ıl ve verz´ıch lze porovnat na webov´e str´ance [3]. MRDS Express Edition je dostupn´a ke staˇzen´ı z webov´ ych str´anek MRDS [4]. Tato verze je k pouˇzit´ı zdarma, ale chyb´ı v n´ı nˇekolik n´astroj˚ u a vlastnost´ı, kter´e jsou obsaˇzeny ve verzi Academic/Standart. Pˇredevˇs´ım je to .NET Compact Framework Support, coˇz je podpora programov´an´ı mobiln´ıch aplikac´ı s pˇr´ıstupem pˇr´ımo do j´adra operaˇcn´ıho syst´emu Windows Mobile. D´ale nelze v simulaˇcn´ım prostˇred´ı VSE editovat entity a jejich vlastnosti pˇr´ımo. Do VSE nelze importovat vzhled entit ve form´atu Collada a poˇcet entit je omezen na 64. Pˇri pouˇz´ıv´an´ı VPL nelze exportovat vytvoˇren´e diagramy do projektu pro MVS v jazyce C#. Dalˇs´ı znev´ yhodnˇen´ı MRDS Express Edition je, ˇze nepodporuje instalaci aktualizac´ı a je tedy tˇreba st´ahnout a nainstalovat celou novou verzi programu. 24
Pr˚ ubˇeh instalace MRDS byl testov´an na dvou syst´emech Windows. Na syst´emu Windows XP SP3 Professional bylo testov´ano pouze chov´an´ı instalace. Na syst´emu Windows Vista SP1 byla testov´ana instalace a pouˇz´ıv´an´ı MRDS. Instal´ator je proveden aplikac´ı InstallShield Wizard ve verzi 14.0.0.162. Jednou z vlastnost´ı Windows je, ˇze s poˇctem nainstalovan´ ych program˚ u se syst´em zpomaluje a pˇri bˇeˇzn´em pouˇz´ıv´an´ı se do syst´emu instaluj´ı r˚ uzn´e bal´ıˇcky a n´astroje. Neˇslo by tedy poznat, kter´e bal´ıˇcky potˇrebuje MRDS pˇri instalaci. Proto se testov´an´ı chov´an´ı instalace provedlo i na Linuxov´em virtu´aln´ım stroji VirtualBox 2.2.0 [5] na ˇcistˇe nainstalovan´em syst´emu Windows Vista. Po spuˇstˇen´ı instalace MRDS na virtu´aln´ım stroji trvalo nabˇehnut´ı instalaˇcn´ıho pr˚ uvodce dvˇe a p˚ ul minuty. Tato ˇcasov´a prodleva se potvrdila i na klasick´e instalaci Windows Vista a Windows XP. Tato doba spouˇstˇen´ı instalace je pˇri instalaci vˇsech verz´ı MRDS. Pˇri t´eto dobˇe instal´ator kontroluje pˇr´ıtomnost potˇrebn´ ych instalaˇcn´ıch bal´ıˇck˚ u v poˇc´ıtaˇci. Pˇri prvn´ı instalaci na novˇe nainstalovan´ y syst´em se po spuˇstˇen´ı instalaˇcn´ıho programu MRDS zobraz´ı okno, ve kter´em jsou zobrazeny z´avislosti na potˇrebn´e instalaˇcn´ı bal´ıˇcky, bez kter´ ych by MRDS nefungovalo spr´avnˇe. Jsou to z´avislosti na bal´ıˇcky uveden´e v tabulce 4.1. N´ azev bal´ıˇ cku
Popis bal´ıˇ cku
Microsoft Visual C++ 2008 SP1 Redis- Bal´ıˇcek s knihovnami obsahuj´ıc´ımi sluˇzby tributable Package (x86)
potˇrebn´e pro programov´an´ı v C++
Microsoft XNA Framework 2.0
Knihovna potˇrebn´a pro simulaci ve fyzik´aln´ım prostˇred´ı
NVIDIA PhysX System Software
Prostˇred´ı pro fyzik´aln´ı simulov´an´ı chov´an´ı robot˚ u
Microsoft .NET Compact Framework .Net Framework pro mobiln´ı syst´emy Micro3.5
soft
Microsoft CCR and DSS Runtime 2008 Knihovny pro podporu CCR a DSS Tabulka 4.1: Pˇrehled bal´ıˇck˚ u potˇrebn´ ych pro instalaci MRDS
Pokud tyto bal´ıˇcky nejsou obsaˇzen´e v poˇc´ıtaˇci, automaticky se nainstaluj´ı pˇred samotnou instalac´ı MRDS. Instalov´an´ı tˇechto bal´ıˇck˚ u trv´a pˇribliˇznˇe minutu a potom instal´ator pˇrepne na instalov´an´ı MRDS. V pr˚ ubˇehu instalace je moˇzn´e vybrat Kompletn´ı nebo Volitelnou instalaci. Ve voliteln´e instalaci je moˇzn´e si vybrat m´ısto na disku, kam se aplikace 25
Celkov´a doba potˇrebn´a pro instalaci se pohybuje kolem ˇctyˇr minut. M˚ uˇze se liˇsit podle verze pouˇzit´eho Windows. Pokud jsou v poˇc´ıtaˇci jiˇz nainstalovan´e nˇekter´e potˇrebn´e bal´ıˇcky, doba instalace se sniˇzuje. Po instalaci se do nab´ıdky Start syst´emu Windows pˇrid´a sloˇzka obsahuj´ıc´ı z´astupce pro spuˇstˇen´ı n´astroj˚ u MRDS. Pˇredevˇs´ım jsou to z´astupci na spuˇstˇen´ı Dokumentace prostˇred´ı MRDS, popis DSS a CCR knihoven, pˇr´ıkazov´ y ˇr´adek DSSCP, DSS Manifest Editor, z´astupci pro spouˇstˇen´ı pˇr´ıklad˚ u simulac´ı. Z´akladn´ı pˇrehled knihoven nab´ızen´ ych po instalaci prostˇred´ı MRDS je v tabulce 4.3. Podrobn´e popisy knihoven jsou v dokumentaci na webu [6]. Pˇri prvn´ım spuˇstˇen´ı jak´ekoliv aplikace vytvoˇren´e v prostˇred´ı MRDS je potˇreba povolit firewall a pˇridat v´ yjimku pro dalˇs´ı spouˇstˇen´ı. D˚ uvodem je, ˇze aplikace vytvoˇren´e v prostˇred´ı MRDS se spouˇst´ı jako webov´a sluˇzba a data jsou poskytov´ana pˇres TCP rozhran´ı. Pro spuˇstˇen´ı simulace ve fyzik´aln´ım prostˇred´ı je potˇreba m´ıt v poˇc´ıtaˇci grafick´ y adapt´er s podporou Direct 3D a shaders v2.0. Pro programov´an´ı v prostˇred´ı MRDS nen´ı jin´ y speci´aln´ı hardware potˇreba. Nev´ yhodou instalace prostˇred´ı MRDS je to, ˇze velikost instalaˇcn´ıho souboru i m´ısto zabran´e instalac´ı je relativnˇe velk´e a to v ˇr´adech stovek megabajt˚ u (ve verzi MRDS 2008 m´a instalaˇcn´ı soubor 400MB). 26
Pokud nejdˇr´ıve nainstalujeme prostˇred´ı MRDS ve verzi Express Edition a potom chceme instalovat verzi Standart/Academic, je potˇreba odstranit vˇsechny soubory z harddisku po verzi Express Edition, nebo nainstalovat novou verzi jinam na harddisk, jinak se nov´a verze nainstaluje znovu ve verzi Express Edition. Pokud byla v poˇc´ıtaˇci nainstalovan´a starˇs´ı verze MRDS, jsou dostupn´e i starˇs´ı verze ˇsablon DSS Service pro MVS. I kdyˇz starˇs´ı verzi MRDS odinstalujeme, z˚ ustanou starˇs´ı ˇsablony DSS Service v adres´aˇri projekt˚ u MVS v Dokumentech. Starˇs´ı ˇsablony nejsou funkˇcn´ı, proto je potˇreba je odebrat ruˇcnˇe.
Instalace prostˇred´ı Player/Stage je moˇzn´a z reposit´aˇre Ubuntu pˇr´ımo jako instalaˇcn´ı bal´ıˇcek pro Debian/Ubuntu (Ubuntu je klon Debianu) pˇr´ıkazem robot-player i386.deb. V reposit´aˇri Ubuntu je Player ve verzi 2.0.4. Na ofici´aln´ım serveru [7] je Player ve verzi 2.1.2, coˇz je o celou jednu v´ yvojovou verzi novˇejˇs´ı vyd´an´ı. V logovac´ım souboru se zmˇenami proveden´ ymi od verze Player 2.0.4 je nˇekolik d˚ uleˇzit´ ych oprav a z tohoto d˚ uvodu je lepˇs´ı st´ahnout a zkompilovat nejnovˇejˇs´ı ofici´aln´ı verzi.
4.2.2
Vlastnosti instalace
Instalace Playeru byla provedena na novˇe nainstalovan´ y syst´em Ubuntu8.10 Intrepid. Do nov´e instalace byly staˇzeny vˇsechny nejnovˇejˇs´ı aktualizace. Pro zjiˇstˇen´ı vˇsech z´avislost´ı v bal´ıˇcc´ıch byl syst´em Ubuntu8.10 nejdˇr´ıve instalov´an ve virtu´aln´ım stroji VirtualBox 2.2.0 [5]. Po zjiˇstˇen´ı z´avislost´ı potˇrebn´ ych bal´ıˇck˚ u byl Player provozov´an jiˇz jen na klasick´e instalaci Ubuntu8.10 na notebooku FSE. Bal´ıˇcky potˇrebn´e pro instalaci Playeru na syst´em Ubuntu8.10 jsou uvedeny v tabulce 4.4.
4.2.3
Instalace Player
Pˇri konfiguraci (./configure) Playeru je moˇzn´e si vybrat, kter´e ovladaˇce se budou instalovat. Je tak´e d˚ uleˇzit´e, kam se prostˇred´ı Player/Stage nainstaluje. Nejlepˇs´ı je nainstalovat prostˇred´ı Player/Stage do samostatn´eho adres´aˇre. Pokud pouˇzijeme z´akladn´ı nastaven´ı, je potom obt´ıˇzn´e nal´ezt vˇsechny sloˇzky, kam byl Player/Stage nainstalov´an. Po konfiguraci jsou vyps´any ovladaˇce, kter´e nejsou bˇeˇznˇe zahrnuty do konfigurace, nebo kter´e se nepodaˇrilo nal´ezt a zkonfigurovat. Pokud tyto ovladaˇce chceme pouˇz´ıvat, je potˇreba je nainstalovat a znovu konfigurovat instalaci prostˇred´ı Player/Stage. Po u ´spˇeˇsn´e konfiguraci se Player nainstaluje pouˇzit´ım make install. Kompilace a instalace Playeru je celkem ˇcasovˇe n´aroˇcn´a, pˇribliˇznˇe sedm minut. Uˇsetˇrit ˇcas a m´ısto na disku pˇri kompilaci a instalaci lze zkr´atit vypnut´ım kompilace vˇsech ovladaˇc˚ u. Kdyˇz ovladaˇce pˇri konfiguraci vypneme, mohou pozdˇeji chybˇet pˇri komunikaci s hardwarem.
Automatizace typick´ ych u ´loh vytv´aˇren´ı debian´ıch bal´ık˚ u
autotools-dev
Update infrastruktury soubor˚ u config.guess,sub
libtool
Obecn´a knihovna podpory skript˚ u
libmagick++9-dev
C++ API pro ImageMagick knihovnu
libgsl0-dev
GNU Scientific Library (GSL)
libcv-dev
Knihovny pro OpenCV (Open Computer Vision)
libhighgui-dev
Knihovny GUI pro OpenCV (Open Computer Vision)
libgtk2.0-dev
Multiplatformn´ı sada n´astroj˚ u (toolkit) pro GUI
libdc1394-22-dev
Programovac´ı rozhran´ı pro IEEE1394 digit´aln´ı kamery
libboost-signals-dev
Spr´ava sign´al˚ u a slot˚ u pro knihovny C++
libboost-thread-dev
Knihovna pro C++ v´ıce vl´aknov´e aplikace
swig
Generuje skriptovac´ı rozhran´ı pro C/C++
libjpeg62-dev
Knihovny pro pr´aci se soubory IJG JPEG
python-central (>=0.5)
Registrace a vytv´aˇren´ı n´astroj˚ u pro Python
doxygen
Dokumentaˇcn´ı syst´em pro C, C++, Java, Python, ...
linux-kernel-headers
Virtu´aln´ı bal´ıˇcky Linuxu
libgnomecanvas2-dev
V´ ykonn´ y objektovˇe-orientovan´ y zobrazovac´ı n´astroj
python-dev
Knihovny pro Python
freeglut3-dev
OpenGL Utility Toolkit
python-setuptools
Rozˇs´ıˇren´ı pro Python - utility pro komplexn´ı distribuce
Tabulka 4.4: V´ yvojov´e bal´ıˇcky potˇrebn´e pro instalaci Playeru v Ubuntu
4.2.4
Instalace Stage
Pro simulaci robotick´ ych aplikac´ı vytvoˇren´ ych v prostˇred´ı Player je potˇreba nainstalovat modul Stage. Instalace se opˇet prov´ad´ı nejdˇr´ıve konfigurac´ı, kde se zjist´ı z´avislosti knihoven a potom kompilac´ı a instalac´ı. Nejvˇetˇs´ım probl´emem pˇri instalaci Stage na Ubuntu8.10 bylo to, ˇze v syst´emu chybˇel soubor, ve kter´em jsou uvedeny k´ody barev ”rgb.txt”. Tento soubor je potˇreba st´ahnout z internetu a pˇridat do Ubuntu. V nejnovˇejˇs´ı verzi Ubuntu 9.04 Jaunty je jiˇz chybˇej´ıc´ı soubor doplnˇen. Pokud se Player a Stage spr´avnˇe nainstaluj´ı, je potˇreba pˇridat jejich um´ıstˇen´ı do konfiguraˇcn´ıch cest pro spr´avn´e vyhled´an´ı Playeru a Stage. Po kompletn´ı instalaci a konfiguraci syst´emu je vhodn´e ovˇeˇrit spr´avn´e fungov´an´ı Playeru pomoc´ı pˇredem pˇripraven´ ych 29
Knihovny poskytovan´ e prostˇ red´ım Player a Stage
Po nainstalovan´ı prostˇred´ı Player a Stage jsou dostupn´e n´astroje a knihovny s ovl´ad´an´ım pro roboty a senzory. Seznam tˇechto n´astroj˚ u a knihoven je uveden v tabulk´ach 4.5 a 4.6. Pˇresn´e podrobnosti o knihovn´ach lze nal´ezt na webov´a str´ance [8]. N´ azev bal´ıˇ cku
Popis obsahu bal´ıˇ cku
libstage2
Knihovny pro simulaˇcn´ı prostˇred´ı Stage
libstageplugin1
Plugin pro spojen´ı Playeru a Stage
stage
Simulaˇcn´ı prostˇred´ı Stage Tabulka 4.5: Knihovny poskytovan´e po instalaci Stage
4.3
Porovn´ an´ı instalace Player/Stage a MRDS
Protoˇze prostˇred´ı MRDS vych´az´ı ve tˇrech verz´ıch, m˚ uˇze se instalace u jednotliv´ ych verz´ı liˇsit. Instalace MRDS je bˇeˇzn´a instalace programu ve Windows. Nepˇrin´aˇs´ı pˇr´ıliˇs moˇznost´ı nastaven´ı, ale takov´ y typ instalac´ı je pod Windows zvykem, protoˇze jsou koncipov´any i pro m´enˇe znal´e uˇzivatele. Pˇri instalaci prostˇred´ı Player/Stage si uˇzivatel m˚ uˇze vybrat, kter´e ovladaˇce nainstaluje a kter´e ne. Takto lze sestavit prostˇred´ı pro bˇeh jedin´e aplikace, napˇr´ıklad pro mobiln´ı zaˇr´ızen´ı. Nev´ yhodou instalace prostˇred´ı MRDS je, ˇze velikost nainstalovan´ ych soubor˚ u je t´emˇeˇr schodn´ y s velikost´ı instalaˇcn´ıho souboru (400MB). Naproti tomu instalaˇcn´ı soubor Playeru je velik´ y kolem 3MB a nainstalovan´ y zab´ır´a pouze o 2MB v´ıce. Instalace prostˇred´ı Player/Stage se tak hod´ı na mal´a a nev´ ykonn´a zaˇr´ızen´ı. Vytvoˇren´ı mal´eho distribuˇcn´ıho bal´ıˇcku je v MRDS tak´e moˇzn´e, ˇ zmˇeˇren´ st´ale ale vyˇzaduje OS s podporou .NET nebo .NET Compact Framework. Cas y pˇri instalaci nahr´av´a prostˇred´ı MRDS, ale nen´ı to tak v´ yrazn´ y rozd´ıl. MRDS kolem ˇctyˇr minut a Player/Stage kolem sedmi minut. Player/Stage se instaluje t´emˇeˇr o polovinu ˇcasu v´ıce, ale z uˇzivatelsk´eho hlediska se zd´a instalace Player/Stage mnohem delˇs´ı, protoˇze vˇetˇsinu ˇcasu se zobrazuje kompilace ovladaˇc˚ u a obrazovka je st´ale stejn´a.
Aktualizace MRDS je nez´avisl´a na Windows Update, proto se aktualizace mus´ı ruˇcnˇe st´ahnout a nainstalovat. Instalace je jednoduch´a, pouze se spust´ı aktualizaˇcn´ı soubor .exe a aktualizace sama vyhled´a sloˇzku, kde je MRDS nainstalov´ano a nainstaluje nov´e soubory a opravy. Tento zp˚ usob aktualizac´ı je moˇzn´ y pouze v pln´e verzi Academic/Standart. Verze Express aktualizace nepodporuje a je tˇreba st´ahnout cel´ y nov´ y instalaˇcn´ı bal´ık a MRDS pˇreinstalovat. Aktualizace pro MRDS nevych´azej´ı pˇr´ıliˇs ˇcasto. Od dubna 2008, kdy byla vyd´ana verze MRDS 2008 do souˇcasn´e doby vyˇsly tˇri aktualizace. Pˇred verz´ı MRDS 2008 Microsoft ˇreˇsil aktualizace vypuˇstˇen´ım cel´e nov´e verze programu, protoˇze MRDS bylo st´ale ve v´ yvojov´em st´adiu, bylo pojmenov´ano odliˇsnˇe Robotics Studio 1.x ” (x je ˇc´ıslo verze)“. Nyn´ı s pˇr´ıchodem stabiln´ı verze MRDS 2008 budou pravdˇepodobnˇe aktualizace vych´azet jako samostatn´e soubory. Moˇzn´a se aktualizace integruj´ı i do Windows Update a budou se instalovat automaticky. N´azvy aktualizac´ı jsou CTP (Community Technical Preview - Komunitn´ı technick´ y pˇrehled) a n´azev mˇes´ıce, kdy aktualizace vyˇsla. Pˇrehled zmˇen v jednotliv´ ych verz´ıch a aktualizac´ıch je dostupn´ y na webov´e str´ance [9].
5.1.2
Probl´ em s kompatibilitou starˇ s´ıch verz´ı MRDS
Nˇekter´e projekty vytvoˇren´e ve starˇs´ıch verz´ıch MRDS maj´ı probl´em s kompatibilitou nov´e verze MRDS. To znamen´a, ˇze starˇs´ı projekty nejdou v nov´e verzi MRDS naˇc´ıst. I pˇresto, ˇze Microsoft vydal n´astroj na pˇrevod starˇs´ıch projekt˚ u do MRDS 2008, nˇekter´e 32
KAPITOLA 5. INSTALACE AKTUALIZAC´I
projekty nelze pˇrev´est a k jejich editaci je nutn´e pouˇz´ıvat starˇs´ı verzi MRDS. Pˇrev´aˇzn´a vˇetˇsina tˇechto probl´em˚ u se vyskytuje u pˇrevodu MRDS 1.5(’Refresh’) do verze MRDS 2008. Vzhledem k tomu, ˇze starˇs´ı projekty nen´ı moˇzn´e vyv´ıjet v nejnovˇejˇs´ı verzi MRDS, je moˇzn´e nainstalovat do operaˇcn´ıho syst´emu v´ıce r˚ uzn´ ych verz´ı MRDS.
5.1.3
Vydan´ e verze MRDS
Seznam vydan´ ych verz´ı MRDS je uveden v tabulce 5.1. N´ azev verze
Datum vyd´ an´ı Popis zmˇ en
Robotics Studio 1.0
2006 prosinec
prvn´ı verze Robotics Studia
Robotics Studio 1.5
2007 kvˇeten
vylepˇsen´ı
kompilace
prostˇred´ı
VPL,
v nov´e
n´avody, oprava chyb DSS, u ´prava dokumentace Robotics Studio 1.5 ’Refresh’
moˇznost importovat do simulaˇcn´ıho prostˇred´ı entity ve form´atu Collada
Robotics Developer Studio 2008 R2 2009 ˇcerven
pˇrid´an´ı n´astroje DSS Log Analyzer pro anal´ yzu logovac´ıch soubor˚ u, oprava chyb dokumentace a VSE
Tabulka 5.1: Pˇrehled verz´ı MRDS
33
KAPITOLA 5. INSTALACE AKTUALIZAC´I
5.2 5.2.1
Instalace aktualizac´ı Player a Stage Moˇ znosti aktualizac´ı
Moˇznost aktualizace prostˇred´ı Player je pouze kompletn´ım pˇreinstalov´an´ım cel´eho prostˇred´ı novou verz´ı. Na serveru Player jsou uvedeny t´emˇeˇr vˇsechny vydan´e verze a je moˇzn´e si je vˇsechny st´ahnout. Tato moˇznost je proto, ˇze kdyˇz vyjde nov´a verze Playeru s pˇrekompilovan´ ym j´adrem, nemus´ı na nov´e verzi fungovat starˇs´ı projekty. Player/Stage podporuje i instalaci v´ıce r˚ uzn´ ych verz´ı na jeden poˇc´ıtaˇc.
5.2.2
Pˇ rehled verz´ı Player a Stage
V tabulce 5.2 je pˇrehled verz´ı, kter´e se daj´ı st´ahnout ze serveru SourgeForge.net [10]. Prvn´ı verze Playeru, kter´a je na serveru um´ıstˇena, je verze 1.4rc1 a byla na server um´ıstˇena 15. ˇcervence 2003 a prvn´ı um´ıstˇen´a verze Stage je 1.3.3 z 7. prosince 2003. Podle data um´ıstˇen´ı na server je frekvence vyd´av´an´ı nov´ ych verz´ı pr˚ umˇernˇe tˇri aˇz ˇctyˇri verze za rok pro obˇe prostˇred´ı.
5.3
Porovn´ an´ı aktualizac´ı Playeru a MRDS
Ze seznamu vyd´avan´ ych verz´ı Playeru v tabulce 5.2 vypl´ yv´a velk´a zkuˇsenost v´ yvojov´eho t´ ymu The Player Project. Nov´e verze Playeru vych´az´ı ˇctyˇrikr´at v roce a v´ yvoj´aˇri tedy maj´ı moˇznost odstranit chyby v nov´e verzi ˇcastˇeji. Nev´ yhodou aktualizace Playeru je, ˇze se mus´ı nainstalovat cel´a nov´a verze. Podle historie MRDS vych´az´ı nov´a verze dvakr´at za rok, z ˇcehoˇz vypl´ yv´a, ˇze kaˇzd´a nov´a verze MRDS je velmi dobˇre pˇripravena a neobsahuje z´asadn´ı chyby. V´ yhodou MRDS je, ˇze se aktualizace ˇreˇs´ı vyd´an´ım aktualizaˇcn´ıho bal´ıku, kter´ y oprav´ı pouze chybn´e soubory a je v ˇr´adek nˇekolika MB. Kdyˇz porovn´ame velikost instalaˇcn´ıho a aktualizaˇcn´ıho souboru je aktualizaˇcn´ı soubor relativnˇe mal´ y. Z´asadn´ı aktualizace MRDS vych´az´ı jako cel´ y nov´ y program a to v periodˇe jednoho roku. Obˇe v´ yvojov´a prostˇred´ı podporuj´ı v´ıce nainstalovan´ ych verz´ı na jednom poˇc´ıtaˇci.
34
KAPITOLA 5. INSTALACE AKTUALIZAC´I
N´ azev verze Datum vyd´ an´ı
N´ azev verze
Datum vyd´ an´ı
Player 2.1.2
2009-01-15 19:11
Stage 2.1.1
2009-01-16 06:55
2.1.1
2008-06-16 03:39
3.0.1
2008-07-29 18:25
2.1.0
2008-06-14 03:14
3.0.0
2008-07-13 06:00
2.1.0rc2
2008-04-16 07:24
2.1.0
2008-06-14 03:17
2.1.0rc1
2007-12-13 23:00
2.1.0rc2
2008-04-16 06:52
2.0.5
2007-12-13 22:56
2.1.0rc1
2007-12-13 23:01
2.0.4
2007-05-02 22:44
2.0.4
2007-12-13 22:58
2.0.3
2006-09-26 16:13
2.0.3
2006-09-26 16:19
2.0.2
2006-06-09 20:09
2.0.2
2006-06-09 20:10
2.0.1
2006-03-25 01:34
2.0.1
2006-03-25 01:54
2.0.0
2006-02-28 07:09
2.0.0
2006-02-28 07:14
2.0-pre7
2005-10-24 23:41
2.0.0-d
2005-10-24 23:43
2.0-pre6
2005-10-21 17:00
2.0.0a
2005-08-11 20:35
1.6.5
2005-07-29 00:51
1.6.2
2005-02-09 07:10
1.6.4
2005-05-14 20:21
1.6.1
2005-01-02 07:53
1.6.3
2005-05-03 21:02
1.6
2004-12-30 07:32
1.6.2
2005-01-31 00:58
1.3.5
2004-11-12 17:13
1.6.1
2005-01-25 02:07
1.3.4
2004-06-12 07:00
1.6
2004-11-12 09:47
1.3.3
2003-12-07 08:00
1.5
2004-05-31 07:00
1.4rc2
2003-12-07 08:00
1.4rc1
2003-07-15 07:00 Tabulka 5.2: Pˇrehled verz´ı Player
35
Kapitola 6 Podpora pro uˇ zivatele 6.1
Podpora pro uˇ zivatele MRDS
6.1.1
Podpora od Microsoftu
Podpora od Microsoftu je pˇrev´aˇznˇe v anglick´em jazyce. Microsoft vyd´av´a s kaˇzdou verz´ı MRDS aktualizovanou n´apovˇedu. Form´at n´apovˇedy je ve dvou vyhotoven´ıch. Jako webov´a str´anka na serveru Microsoft [11] a jako form´at n´apovˇedy Windows, kter´ y je distribuov´an s instalaˇcn´ım souborem MRDS. N´apovˇeda MRDS je zaloˇzena na popisu ˇc´ast´ı MRDS a velk´em mnoˇzstv´ı n´avod˚ u a pˇr´ıklad˚ u k sestaven´ı robotick´ ych aplikac´ı. N´avody na robotick´e aplikace jsou koncipov´any od jednoduch´ ych aˇz po sloˇzit´e. Ve vˇetˇsinˇe pˇr´ıpad˚ u je n´avod podrobn´ y. N´avody a n´apovˇedy pro jazyk C# pˇrevaˇzuj´ı ve vˇsech ˇc´astech n´apovˇedy. Pro z´akazn´ıky firmy Microsoft je nˇekolik z´akaznick´ ych linek. Jsou zamˇeˇreny obecnˇe na vˇsechny produkty Microsoft a podpora na nich je t´emˇeˇr vˇzdy placen´a. Pokud uˇzivatel nalezne probl´em, kter´ y nelze vyˇreˇsit s pomoc´ı n´apovˇedy, je moˇzn´e z´ısk´avat informace a rady od ostatn´ıch uˇzivatel˚ u na diskusn´ıch f´orech zamˇeˇren´ ych na problematiku MRDS. • Microsoft Robotics - Community Hlavn´ı f´orum zamˇeˇren´e na MRDS http://social.msdn.microsoft.com/Forums/en-US/roboticscommunity/ threads/ • Microsoft Robotics - Concurrency and Coordination Runtime (CCR) F´orum zamˇeˇren´e na probl´emy kolem CCR 36
ˇ KAPITOLA 6. PODPORA PRO UZIVATELE
http://social.msdn.microsoft.com/Forums/en-US/roboticsccr/threads/ • Microsoft Robotics - Decentralized Software Services (DSS) F´orum zamˇeˇren´e na probl´emy kolem DSS http://social.msdn.microsoft.com/Forums/en-US/roboticsdss/threads/ • Microsoft Robotics - Simulation F´orum zamˇeˇren´e na probl´emy se simulaˇcn´ım prostˇred´ı VSE http://social.msdn.microsoft.com/Forums/en-US/roboticssimulation/ threads/ • Microsoft Robotics - Visual Programming Language F´orum zamˇeˇren´e na problematiku programovac´ıho prostˇred´ı VPL http://social.msdn.microsoft.com/Forums/en-US/ roboticsvisualprogramminglanguage/threads/ • Microsoft Robotics - Hardware Configuration and Troubleshooting F´orum zamˇeˇren´e na problematiku konfigurace hardware http://social.msdn.microsoft.com/Forums/en-US/ roboticstroubleshooting/threads/ • Microsoft Robotics - All Forums Seznam vˇsech diskusn´ıch f´or s problematikou MRDS http://social.msdn.microsoft.com/Forums/en-US/category/robotics/
6.1.2
Podpora od komunitn´ıch skupin
MRDS se od sv´eho vzniku hodnˇe rozˇs´ıˇrilo. Microsoft se snaˇz´ı sv˚ uj produkt masivnˇe propagovat. Pˇredevˇs´ım v posledn´ıch letech do propagace vloˇzilo velk´e mnoˇzstv´ı penˇez. Microsoft zapojuje do projektu firmy vyr´abˇej´ıc´ı robotick´ y hardware a vyv´ıj´ı pro tento hardware rozhran´ı. V podporovan´em hardwaru se vyskytuje pˇredevˇs´ım robotick´ y hardware, kter´ y se s´eriovˇe vyr´ab´ı a je dostupn´ y na trhu v ˇr´adech tis´ıc˚ u korun a je tedy dostupn´ y i pro bˇeˇzn´e uˇzivatele. Jedn´ım z d˚ uleˇzit´ ych hledisek ˇs´ıˇren´ı MRDS je i to, ˇze Microsoft Windows st´ale drˇz´ı vˇetˇsinov´ y pod´ıl na trhu s operaˇcn´ımi syst´emy. Nav´ıc je MRDS urˇceno i pro nezkuˇsen´e uˇzivatele a je tedy vhodn´e pro proniknut´ı do robotick´e problematiky. D´ıky tˇemto krok˚ um Microsoftu se MRDS rychle rozˇsiˇruje mezi uˇzivateli.
37
ˇ KAPITOLA 6. PODPORA PRO UZIVATELE
Z uveden´ ych d˚ uvod˚ u je moˇzn´e na internetu naj´ıt nˇekolik diskusn´ıch f´or o problematice MRDS. • MSRS Community in Turkey Tureck´e f´orum zab´ yvaj´ıc´ı se nˇekolika robotick´ ymi projekty vytv´aˇren´ ych v MRDS. Nejzn´amˇejˇs´ı projekt je bezpilotn´ı vzduˇsn´e vozidlo http://roboticsnedir.com/ • Norwegian .NET User Group Norsk´a skupina, kter´a se soustˇred´ı kolem platformy .NET http://www.nnug.no/ • Conscious-Robots.com pages for MSRS Skupina zamˇeˇruj´ıc´ı se na autonomn´ı roboty, MRDS, k´ody v C# a roboty platformy Pioneer 3 DX http://www.conscious-robots.com/en/robotics-studio/index.php • Seattle Robotics Society Bezpˇr´ıspˇevkov´a organizace The Seattle Robotics Society zaloˇzen´a v roce 1982 zab´ yvaj´ıc´ı se v´ yvojem robotick´ ych aplikac´ı. Skupina se skl´ad´a z amat´er˚ u, student˚ u a vysokoˇskolsk´ ych profesor˚ u a inˇzen´ yr˚ u http://www.seattlerobotics.org/
6.1.3
Blogy v´ yvoj´ aˇ r˚ u MRDS
Dalˇs´ım zdrojem informac´ı jsou blogy v´ yvoj´aˇr˚ u MRDS. Jedna z v´ yhod je, ˇze jsou zde aktu´aln´ı informace. • Microsoft Robotics Developer Studio Blog Hlavn´ı blog Microsoft Robotics Developer Studia http://blogs.msdn.com/msroboticsstudio/default.aspx • Robert Burke Weblog Microsoft Robotics Developer Studio http://blogs.msdn.com/robburke/search.aspx?q=robotics&p=1 • Walter Stiers Vztahy Microsoftu v akademick´e robotick´e sf´eˇre http://blogs.msdn.com/walterst/archive/tags/Robotics/default.aspx 38
ˇ KAPITOLA 6. PODPORA PRO UZIVATELE
• Chewy Chong Skupina robotick´ ych nadˇsenc˚ u v Singapuru http://blogs.msdn.com/chewyc/default.aspx • Chris Kilner Experimenty s algoritmy SLAM, MSRS, robotick´ ym vidˇen´ım http://dotnetrobot.blogspot.com/ • Martin R. Calsyn Dobrodruˇzstv´ı v Robotice http://robotsoftware.blogspot.com/
6.2
Podpora pro uˇ zivatele Player/Stage
Dokumentace i podpora Playeru je pˇrev´aˇznˇe v anglick´em jazyce. Na webov´e str´ance [12] je dostupn´a dokumentace pro nejnovˇejˇs´ı verze i nˇekter´e dokumentace pro starˇs´ı verze Playeru. Dokumentace je ve form´atu HTML str´anky a je rozdˇelena na ˇctyˇri ˇc´asti. • Popis projektu Player • Podpora pro uˇzivatele, rady jak nainstalovat Player, podporovan´a zaˇr´ızen´ı, n´avody a dalˇs´ı podpora • Detailn´ı popis vˇsech knihoven implementovan´ ych do prostˇred´ı Player • Podpora uˇzivatel˚ um, staˇzen´ı Player, Stage, Gazebo, Mezzanine. Odkazy na rozpracovan´e projekty, syst´em pro nahlaˇsovan´ı chyb a n´apovˇeda. Jednou z nejvˇetˇs´ıch v´ yhod projektu Player je, ˇze zdrojov´e k´ody jsou ˇs´ıˇreny pod GNU licenc´ı a proto jsou volnˇe dostupn´e. Pokud se pˇri pouˇz´ıv´an´ı Playeru vyskytuj´ı chyby, je moˇzn´e je nahl´asit pomoc´ı syst´emu hl´aˇsen´ı chyb na webu Playeru [13]. Stejnˇe tak pokud m´ate n´apad, co do Playeru pˇridat. Jako dalˇs´ı zdroj informac´ı je k projektu Player pˇripojena mailov´a diskuse, kde se um´ıst’uj´ı pˇr´ıspˇevky stejnˇe jako do webov´eho f´ora a je tak moˇzn´e z´ıskat odpovˇedi na ot´azky. Mailov´a diskuse je rozdˇelena na ˇctyˇri stupnˇe pˇr´ıspˇevk˚ u • playerstage-commit - z´aznamy nahr´av´an´ı soubor˚ u od v´ yvoj´aˇr˚ u pˇres verzovac´ı syst´emy 39
ˇ KAPITOLA 6. PODPORA PRO UZIVATELE
• playerstage-developers - diskuse v´ yvoj´aˇr˚ u • playerstage-gazebo - diskuse v´ yvoj´aˇr˚ u Gazebo • playerstage-users - diskuse o stabiln´ıch verz´ıch Player, hlavn´ı diskuse Dalˇs´ı podpora uˇzivatel˚ um je na r˚ uzn´ ych diskusn´ıch f´orech, kter´a se zamˇeˇruj´ı na robotiku, Linux, nebo v´ yvoj software. Jedny z nejrozs´ahlejˇs´ıch jsou f´ora Nabble [14]. Nejvhodnˇejˇs´ı je pouˇz´ıt vyhled´avaˇc Google [15] a hledat uˇzivatele s podobnou chybou nebo jej´ı ˇreˇsen´ı.
6.3
Srovn´ an´ı podpory uˇ zivatel˚ u Playeru a MRDS
MRDS se rychle rozˇsiˇruje mezi uˇzivateli, pˇredevˇs´ım d´ıky jednoduchosti vyv´ıjen´ı aplikac´ı. Proto je pro MRDS velmi rozs´ahl´a komunita uˇzivatel˚ u, i pˇres to, ˇze je MRDS vyv´ıjeno pouze 3 roky. Vzhledem k tomu, ˇze je MRDS nab´ızeno v placen´e verzi, mus´ı firma Microsoft poskytovat podporu pro uˇzivatele a nˇekdy se postˇrehy z podpory uˇzivatel˚ u dostanou i mimo placenou sekci. Protoˇze se MRDS st´ale vyv´ıj´ı, prezentuj´ı v´ yvoj´aˇri nov´e poznatky na sv´em blogu a tak se tyto informace ˇs´ıˇr´ı mezi uˇzivateli. Poznatky se d´ale rozv´ıj´ı a v´ yvoj´aˇri je pouˇz´ıvaj´ı do nov´ ych verz´ı MRDS. T´ımto zp˚ usobem si Microsoft zajiˇst’uje rozs´ahlou z´akladnu uˇzivatel˚ u a buduj´ı tak siln´e v´ yvojov´e prostˇred´ı, protoˇze pˇri v´ yvoji se vˇzdy vyskytnou probl´emy a kdyˇz se d´a rychle sehnat odpovˇed’ zvyˇsuje to oblibu programu. Diskusn´ıch f´or pro Player je velmi m´alo. Prakticky se d´a podpora z´ıskat z mailov´e diskuse Playeru a nebo na serveru Nabble [14]. Na jin´ ych m´ıstech jsem se odezvy na ˇreˇsen´ı probl´emu nedoˇckal. I kdyˇz jsem se odpovˇedi doˇckal, prvn´ı odezva pˇriˇsla aˇz po uplynut´ı mˇes´ıce od vznesen´ı dotazu. Protoˇze to bylo v dobˇe, kdy jsem s Player/Stage zaˇc´ınal, nevˇedˇel jsem jak postoupit d´ale a prostˇred´ı Player/Stage jsem na dlouh´ y ˇcas odloˇzil, neˇz jsem se v programov´an´ı zdokonalil a na ˇreˇsen´ı probl´emu jsem pˇriˇsel.
40
Kapitola 7 Srozumitelnost dokumentace 7.1 7.1.1
Srozumitelnost dokumentace MRDS Druhy manu´ al˚ u a n´ avod˚ u
Manu´aly pro MRDS jsou ve vˇetˇsinˇe pˇr´ıpadech napsan´e v elektronick´e podobˇe. Jedny z m´ala v´ yjimek jsou knihy Professional Microsoft Robotics Developer Studio od autor˚ u Kyle Johns a Trevor Taylor [16] a kniha Programming Microsoft Robotics Studio od Sara Morgan [17]. Vˇetˇsina manu´alu a n´avod˚ u pro MRDS je napsan´a v anglick´em jazyce. V ˇcesk´em jazyce je naps´ano nˇekolik ˇcl´ank˚ u, kter´e obecnˇe popisuj´ı MRDS, pˇr´ıpadnˇe uv´adˇej´ı pˇr´ıklady k´odu. Mnoho n´avod˚ u pro MRDS je ˇcasto spojov´ano s robotem LEGO NTX 2.1, jako v pˇr´ıpadˇe ˇcl´anku pana Petˇr´ıˇcka [18].
7.1.2
Kvalita dokumentace
Soubory dokumentace jsou um´ıstˇeny na webov´em serveru MSDN [11], nebo po instalaci MRDS ve sloˇzce documentation v adres´aˇri MRDS. N´apovˇeda ve sloˇzce MRDS je v klasick´em souboru n´apovˇedy Windows (soubor .chm) s rejstˇr´ıkem a vyhled´av´an´ım. N´apovˇeda je rozdˇelena na ˇc´asti pro MRDS, CCR, DSS, VPL a VSE. Dokumentace MRDS je jedna z m´ala ˇc´ast´ı, kter´a nen´ı tak kvalitnˇe zpracov´ana. Projevuj´ı se v n´ı ambice firmy Microsoft chv´alit sv˚ uj produkt, tak jako je tomu i u ostatn´ıch produkt˚ u. Napˇr´ıklad v popisech sluˇzeb CCR a DSS je aˇz pˇr´ıliˇs vˇet, kter´e vyzdvihuj´ı kvalitu sluˇzby. D´ıky tˇemto vˇet´am se pak v textu ztr´ac´ı a tˇeˇzko se ch´ape vlastn´ı princip sluˇzby. V dokumentaci je u v´ yznamn´ ych sluˇzeb uveden pˇr´ıklad, jak se sluˇzba pouˇz´ıv´a. Tyto 41
KAPITOLA 7. SROZUMITELNOST DOKUMENTACE
pˇr´ıklady jsou naopak zpracov´any kvalitnˇe krok po kroku a doprov´azeny obr´azky, takˇze i pro zaˇc´ateˇcn´ıka jsou snadno pochopiteln´e.
7.2
Srozumitelnost dokumentace Player/Stage
Dokumentace projektu Player/Stage je na vysok´e u ´rovni stejnˇe jako vˇetˇsina projekt˚ u pod licenc´ı GNU. Dokumentace je v anglick´em jazyce a ˇcesky se ned´a naj´ıt prakticky ˇz´adn´ y pˇr´ıspˇevek. V dokumentaci jsou detailnˇe popsan´e vˇsechny knihovny a jejich sluˇzby. Ovladaˇce pro podporovan´e robotick´e aplikace maj´ı v dokumentaci pˇripraven´e pˇr´ıklady pro snazˇs´ı pochopen´ı jejich pouˇz´ıv´an´ı. Nechyb´ı n´avody, kter´e pomohou zaˇc´ateˇcn´ık˚ um s instalac´ı, nebo vytvoˇren´ım prvn´ıch aplikac´ı. Dobr´ y dojem z dokumentace kaz´ı nˇekter´e chybˇej´ıc´ı str´anky pˇredevˇs´ım v n´avodech. Pro simulaˇcn´ı prostˇred´ı Stage jsou pˇripraven´e demonstraˇcn´ı aplikace. Tyto aplikace pom´ahaj´ı pochopit jak Player a Stage funguj´ı. Na webov´em serveru Playeru [7] je dokumentace v nˇekolika verz´ıch. Posledn´ı nejnovˇejˇs´ı verze a nˇekolik starˇs´ıch verz´ı Playeru.
7.3
Srovn´ an´ı dokumentace Playeru a MRDS
V n´apovˇedˇe pro prostˇred´ı Player/Stage je velmi dobˇre zpracov´an popis knihoven, jejich sluˇzeb, popis ovladaˇc˚ u a pˇr´ıklady jejich pouˇzit´ı. V dokumentaci pro prostˇred´ı Player/Stage obˇcas chyb´ı str´anky. Je to v ˇc´asti dokumentace, kde jsou n´avody, jak implementovat aplikace. Microsoft vyd´av´a nˇekolikr´at za rok aktualizovanou verzi n´apovˇedy pro prostˇred´ı MRDS. Pˇredevˇs´ım do n´apovˇedy pˇrid´avaj´ı pˇr´ıklady a pr˚ uvodce vytv´aˇren´ı nov´ ych aplikac´ı. V´ yvoj´aˇri MRDS tak´e vyd´avaj´ı knihy, ve kter´ ych popisuj´ı prostˇred´ı MRDS a pˇrid´avaj´ı n´avody, jak programovat v MRDS. D´ıky rychle se rozˇsiˇruj´ıc´ı komunitˇe uˇzivatel˚ u rychle pˇrib´ yv´a pˇredevˇs´ım internetov´ ych str´anek s n´avody, jak vyv´ıjet aplikace v prostˇred´ı MRDS. V prostˇred´ı MRDS je moˇzn´e vyv´ıjet aplikace nˇekolika moˇzn´ ymi zp˚ usoby. N´apovˇeda MRDS se snaˇz´ı popisovat vˇsechny moˇznosti programov´an´ı. Potom se n´apovˇeda st´av´a trochu nepˇrehledn´a a postupy k vytv´aˇren´ı aplikac´ı se prol´ınaj´ı dohromady. Takto m˚ uˇze n´apovˇeda uˇzivatele sp´ıˇse zm´ast neˇz mu pomoci. Naproti tomu v Player/Stage je jen jeden pˇr´ıstup k programov´an´ı a tak je pochopen´ı dokumentace mnohem snazˇs´ı. 42
Kapitola 8 Podporovan´ e robotick´ e platformy 8.1
Podporovan´ e robotick´ e platformy MRDS
Pokud m´a b´ yt n´astroj pro v´ yvoj robotick´ ych aplikac´ı u ´spˇeˇsn´ y a pouˇz´ıvan´ y, je tˇreba, aby podporoval spousty r˚ uzn´ ych platforem. Vzhledem k rychlosti postupu v´ yvoje elektronick´ ych a robotick´ ych syst´em˚ u mus´ı program´atoˇri do v´ yvojov´eho n´astroje implementovat podporu pro velk´e mnoˇzstv´ı robotick´ ych syst´em˚ u. Nav´ıc je jen m´alo robotick´ ych syst´em˚ u, kter´e maj´ı jednotn´e s´erie. Pˇri v´ yvoji robotick´ ych syst´em˚ u v podnic´ıch, nebo na akademick´e p˚ udˇe, jsou pouˇz´ıvan´e r˚ uzn´e specifick´e souˇc´asti a nespoˇcet variabilit. Nejd˚ uleˇzitˇejˇs´ı poˇzadavek pro u ´spˇeˇsn´ y v´ yvojov´ y n´astroj pro robotick´e aplikace je tedy jednoduchost implementace nov´eho vlastn´ıho popisu pro robotick´ y syst´em. Kaˇzd´ y v´ yrobce do v´ yvojov´eho n´astroje implementuje podporu s´eriovˇe vyr´abˇen´eho robota. Nejen proto, aby se mohl v´ yvojov´ y n´astroj pˇredstavit jednoduch´ ym spuˇstˇen´ım pˇredem pˇripraven´e aplikace, ale implementovan´a podpora m˚ uˇze b´ yt pouˇzita pro rychl´ y v´ yvoj a t´ım pˇrispˇet k obl´ıbenosti v´ yvojov´eho prostˇred´ı. Microsoft do prostˇred´ı MRDS implementoval podporu pro nˇekolik s´eriovˇe vyr´abˇen´ ych robotick´ ych syst´em˚ u. Prostˇred´ı MRDS podporuje v´ yrobky od v´ıce neˇz 52 firem, se kter´ ymi Microsoft spolupracuje na v´ yvoji prostˇred´ı MRDS. Pˇr´ımo po instalaci je do prostˇred´ı MRDS vloˇzena podpora pro robotick´e syst´emy nˇekolika firem.
8.1.1
Fischertechnik
Fischertechnik vyr´ab´ı robotick´e hraˇcky, kter´e se skl´adaj´ı z kostiˇcek. Z´akladem je mikroprocesorov´a deska um´ıstˇen´a v z´akladn´ı kostce“, kter´a se d´a zabudovat na nˇejak´e ” 43
´ ROBOTICKE ´ PLATFORMY KAPITOLA 8. PODPOROVANE
m´ısto do stavebnice a naprogramovat. Fotografie nˇekolika stavebnic Fischertechnik je na obr´azku 8.1. Velikost sestaven´e aplikace se velmi liˇs´ı d´ıky variabilitˇe stavebnic. V´ıce o stavebnici lze nal´ezt na webov´e str´ance v´ yrobce [19]. V prostˇred´ı MRDS je zabudovan´a podpora pro RF(Radio Frequency) komunikaci se z´akladn´ı ”kostkou”a vytvoˇren´e manifesty pro z´akladn´ı kostku, enkod´er, kontaktn´ı sp´ınaˇc a motor. Bˇeˇzn´a cena zaˇr´ızen´ı je kolem 6 000 Kˇc.
Obr´azek 8.1: Pohled na nˇekter´e stavebnice Fischertechnik
8.1.2
iRobot Create a Roomba
Firma iRobot vyr´ab´ı roboty pro dom´acnosti. Roboty jsou vˇsak obl´ıben´e i jako levn´e robotick´e syst´emy, ve kterou se m˚ uˇzou roboti Create a Roomba pˇremˇenit r˚ uzn´ ymi doplˇ nky. Na obr´azku 8.2 je iRobot Roomba v podobˇe v jak´e se prod´av´a, to znamen´a automatick´ y vysavaˇc. Velikost iRobota Roomba je kruˇznice s pr˚ umˇerem 34 cm a v´ yˇskou 9 cm. V´ıce podrobnost´ı o robotech iRobot lze nal´ezt na webov´e str´ance [20]. Prostˇred´ı MRDS poskytuje pro roboty Create a Roomba manifest pro hlavn´ı modul, komunikaci, ˇr´ızen´ı motoru, doplˇ nky, senzory a skriptov´an´ı. Bˇeˇzn´a cena zaˇr´ızen´ı je kolem 10 000 Kˇc.
8.1.3
Lego Mindstorms NXT
Stavebnice Lego jsou zn´am´e po cel´em svˇetˇe. Mnoˇzstv´ı r˚ uzn´ ych variac´ı kostek se d´a kombinovat do nekoneˇcn´ ych tvar˚ u a proto vznikl NXT a jeho variace. Je to kostka s integrovan´ ym displayem a 32bitov´ ym mikroprocesorem. Pohyb mohou zajistit 3 pˇr´ıdavn´e 44
´ ROBOTICKE ´ PLATFORMY KAPITOLA 8. PODPOROVANE
Obr´azek 8.2: iRobot Create v konfiguraci automatick´eho vysavaˇce
motory. Vn´ım´an´ı okol´ı zajist´ı senzor svˇetla a barvy, zvuku, dotykov´ y senzor a ultrazvukov´ y sonar. NXT je velmi obl´ıben´ y u lid´ı zaˇc´ınaj´ıc´ıch s robotikou, protoˇze se do NXT lehce naprogramuje jak´ ykoliv program a poˇrizovac´ı cena nen´ı pˇr´ıliˇs vysok´a. Velikost robota z´aleˇz´ı na tom, jak je robot sestaven z Lega. Velikost z´akladn´ı kostky“ je, v´ yˇska ” 14 cm a ˇs´ıˇrka 6 cm. Na fotografii 2.1 je zobrazen NXT v konfiguraci Tribot, pro kter´ y jsou pouˇzity vˇsechny motory a ˇcidla, kter´e NXT bˇeˇznˇe nab´ız´ı. Podrobnosti o robotech Lego NXT a dalˇs´ıch senzorech m˚ uˇzeme nal´ezt na webov´e str´ance [21]. Z uveden´ ych skuteˇcnost´ı se d´a uhodnout, proˇc je v MRDS vypracovan´a velice siln´a podpora pr´avˇe pro NXT. Jedn´a se o spoustu n´avod˚ u a pr˚ uvodc˚ u, jak aplikace s NXT programovat. Manifesty jsou pro vˇsechny prod´avan´e ˇc´asti NXT. Microsoft vˇzdy s´azel na co nejjednoduˇsˇs´ı uˇzivatelsk´e prostˇred´ı a kdyˇz se pouˇzije Visual Programming Language, je to spoleˇcnˇe s NXT ide´aln´ı a jednoduch´e v´ yvojov´e prostˇred´ı pro robotick´e aplikace. Bˇeˇzn´a cena zaˇr´ızen´ı je kolem 7 000 Kˇc.
8.1.4
Kondo KHR-1
Kondo KHR-1 je autonomn´ı humanoid Japonsk´e v´ yroby. Robot je 34 cm vysok´ y se 17 servomotory s nastaven´ım ot´aˇcen´ı po jednom stupni. Tyto motory zajiˇst’uj´ı ˇsirok´ y rozsah pohyb˚ u, dokonce i rychl´ y kung-fu styl pohybu. Robota vyr´ab´ı firma Kondo, kter´a se zab´ yv´a v´ yrobou mal´ ych robot˚ u, stejn´eho syst´emu jako je KHR-1. Na fotografii 8.3 je zobrazen KHR-1. Je to klasick´a verze humanoida a ostatn´ı typy robot˚ u, kter´e firma Kondo prod´av´a, maj´ı podobn´ y vzhled, jako KHR-1. Dalˇs´ı podrobnosti o robotech Kondo jsou na webov´e str´ance firmy [22]. V MRDS je implementovan´e rozhran´ı pro KHR-1. Toto rozhran´ı poskytuje ˇr´ızen´ı servomotor˚ u, zjiˇstˇen´ı pozice natoˇcen´ı servomotoru, usp´an´ı robota pro ˇsetˇren´ı baterie
45
´ ROBOTICKE ´ PLATFORMY KAPITOLA 8. PODPOROVANE
a opˇetovn´e probuzen´ı. Bˇeˇzn´a cena zaˇr´ızen´ı je kolem 20 000 Kˇc.
Obr´azek 8.3: Robot KHR-1
8.1.5
MobileRobots Pioneer P3DX
Pioneer P3DX je robot pro v´ yzkumn´e u ´ˇcely, kter´ y m´a v sobˇe instalovanou poˇc´ıtaˇcovou desku, baterie, nˇekolik senzor˚ u pro mˇeˇren´ı vzd´alenosti. Komunikace prob´ıh´a pˇres WiFi a pohyb zajiˇst’uje dvojice kol s enkod´erem a jedno mal´e koleˇcko pro zat´aˇcen´ı a stabilitu. Obsahuje i sloty pro rozˇs´ıˇren´ı o dalˇs´ı poˇc´ıtaˇcov´e komponenty. Velikost robota je pˇribliˇznˇe 50 cm a podle toho jak´e senzory robot nese se m˚ uˇze velikost mˇenit. Fotografie robota P3DX je na obr´azku 8.4. Zde je P3DX v klasick´e konfiguraci a na sobˇe m´a um´ıstˇen´e reproduktory, laserov´ y mˇeˇriˇc vzd´alenosti a na vrchu je instalovan´a kamera. Roboty Pionner vyr´ab´ı firma MobileRobots. Dalˇs´ı podrobnosti jsou na webov´e str´ance [23]. Prostˇred´ı MRDS podporuje komunikaci s Pioneerem P3DX ve vˇsech smˇerech a dovoluje i nainstalovat MRDS pˇr´ımo do integrovan´eho poˇc´ıtaˇce Pioneeru P3DX. V prostˇred´ı MRDS je nˇekolik manifest˚ u pro pˇripojen´ı obecn´ ych zaˇr´ızen´ı k robotovi P3DX. Jde o r˚ uzn´e kamery, ˇcidla svˇetla zvuku a dalˇs´ı mnoˇzstv´ı zaˇr´ızen´ı. Velmi dobˇre je pˇripravena i simulace P3DX v simulaˇcn´ım prostˇred´ı VSE a to vˇcetnˇe laserov´eho mˇeˇriˇce vzd´alenosti. Bˇeˇzn´a cena zaˇr´ızen´ı je kolem 80 000 Kˇc.
46
´ ROBOTICKE ´ PLATFORMY KAPITOLA 8. PODPOROVANE
Obr´azek 8.4: MobileRobots Pioneer P3DX
8.2
Podporovan´ e robotick´ e platformy Player/Stage
V´ yrobce
Robot
Ovladaˇ c
Acroname
Garcia
garcia
Botrics
Obot d100
obot
Evolution Robotics
ER1 and ERSDK robots
er1
iRobot
Roomba vaccuming robot
roomba
K-Team
Robotics Extension Board (REB)
reb
K-Team
Khephera
khepera
Mobiln´ı roboti
PSOS/P2OS/AROS-based, Pioneer, AmigoBot p2os
Nomadics
NOMAD200 a podobn´ı roboti
nomad
RWI/iRobot
RFLEX-based a pˇr´ısluˇsenstv´ı
rflex
Segway
Robotic Mobility Platform (RMP)
segwayrmp
UPenn GRASP
Clodbuster
clodbuster
Videre Design
ERRATIC mobile robot platform
erratic
White Box Robotics 914 PC-BOT
wbr914
Tabulka 8.1: Pˇrehled podporovan´ ych robot˚ u projektem Player
Pˇri instalaci Playeru si uˇzivatel m˚ uˇze vybrat, kter´e ovladaˇce chce nainstalovat. Seznam podporovan´ ych robotick´ ych platforem je uveden v tabulce 8.1 a podrobn´ y pˇrehled je v dokumentaci Player/Stage na webu [7]. Prostˇred´ı Player/Stage podporuje velk´e mnoˇzstv´ı hardwaru. Seznam hardwarov´ ych souˇc´ast´ı je obs´ahl´ y a proto je vhodn´e uv´est pouze z´akladn´ı platformy. D´ıky licenci GNU je moˇzn´e naj´ıt na internetov´ ych vyhled´avaˇc´ıch ovladaˇce pro velk´e mnoˇzstv´ı hardware. 47
´ ROBOTICKE ´ PLATFORMY KAPITOLA 8. PODPOROVANE
8.3
Porovn´ an´ı podporovan´ ych robotick´ ych platforem Playeru a MRDS
Vˇetˇs´ı mnoˇzstv´ı podporovan´eho hardware v prostˇred´ı Player/Stage vypl´ yv´a z delˇs´ı tradice prostˇred´ı Player/Stage. Za dobu v´ yvoje Player/Stage, v´ıce neˇz ˇsest let, byli napsan´e ovladaˇce pro r˚ uzn´ y hardware. D´ıky tomu, ˇze jsou ovladaˇce v Linuxu ve velk´e m´ıˇre kompatibiln´ı s r˚ uzn´ ym hardware, se poˇcet podporovan´ ych robotick´ ych platforem rychle rozr˚ ust´a. Dlouh´a tradice projektu Player/Stage jej masivnˇe rozˇs´ıˇrila do akademick´e sf´ery, protoˇze pˇred pˇr´ıchodem prostˇred´ı MRDS nebyl k dost´an´ı tak rozs´ahl´ y program na ˇr´ızen´ı robot˚ u. Microsoft podporuje ˇs´ıˇren´ı prostˇred´ı MRDS i mezi uˇzivateli, kteˇr´ı nemaj´ı zkuˇsenosti s programov´an´ım robotick´ ych aplikac´ı. v prostˇred´ı MRDS jsou podporovan´e robotick´e platformy, kter´e nejsou cenovˇe pˇr´ıliˇs n´aroˇcn´e jako je Fischertechnik nebo Lego NXT. Podpora je i pro draˇzˇs´ıho robota Pioneer P3DX, kter´ y se ve velk´e m´ıˇre pouˇz´ıv´a v akademick´em v´ yzkumu, kde se prostˇred´ı MRDS tak´e snaˇz´ı prosadit.
48
Kapitola 9 Pˇ renositelnost vytvoˇ ren´ e aplikace 9.1
Pˇ renositelnost vytvoˇ ren´ e aplikace MRDS
MRDS je zaloˇzeno na platformˇe .NET. Ze vˇsech projekt˚ u vyv´ıjen´ ych v prostˇred´ı MRDS je moˇzn´e vytvoˇrit program, kter´ y bude pracovat na syst´emech podporuj´ıc´ıch platformu .NET. V souˇcasn´e dobˇe jsou to vˇsechny operaˇcn´ı syst´emy firmy Microsoft, pro kterou je .NET stˇeˇzejn´ı v´ yvojov´a platforma. Jsou to syst´emy klasick´ ych operaˇcn´ıch syst´emu Windows od verze XP, pˇres Vista a pˇrich´azej´ıc´ı Windows7. D´ale je tu podpora pro mobiln´ı operaˇcn´ı syst´emy Windows Mobile, kter´e obsahuj´ı rozhran´ı .NET Compact Framework. Kdyˇz m´ame sestavenou robotickou aplikaci v prostˇred´ı MRDS jsou pro jej´ı funkci potˇreba robotick´e knihovny MRDS. Pomoc´ı n´astroje DssDeploy.exe se m˚ uˇze vytvoˇrit autonomn´ı bal´ıˇcek, do kter´eho se vloˇz´ı vˇsechny potˇrebn´e knihovny z prostˇred´ı MRDS. Pot´e m˚ uˇzeme aplikaci spustit i na poˇc´ıtaˇci kde MRDS nen´ı nainstalov´ano. St´ale je ale vyˇzadov´ana podpora platformy .NET.
9.2
Pˇ renositelnost vytvoˇ ren´ e aplikace Player/Stage
D´ıky nen´aroˇcnosti konzolov´ ych syst´em˚ u Linux je moˇzn´e nasazen´ı aplikac´ı Player/Stage na i na m´enˇe v´ ykonn´ ych v´ ypoˇcetn´ıch syst´emech jako jsou telefony, autonomn´ı poˇc´ıtaˇcov´e desky a jednoduch´e v´ ypoˇcetn´ı jednotky s operaˇcn´ım syst´emem Linux. Protoˇze prostˇred´ı Player/Stage podporuje i jin´e platformy neˇz Linux, je moˇzn´e vytvoˇrenou aplikaci spouˇstˇet i na dalˇs´ıch operaˇcn´ıch syst´emech, Solaris, Mac OS X, BSD. Tam kde chceme pouˇz´ıvat 49
ˇ ˇ E ´ APLIKACE KAPITOLA 9. PRENOSITELNOST VYTVOREN
aplikace vytvoˇren´e v prostˇred´ı Player/Stage mus´ı b´ yt toto prostˇred´ı nainstalov´ano. D´ıky velk´e variabilitˇe instalace prostˇred´ı Player/Stage je m´ısto zabran´e instalac´ı pouze nˇekolik MB. Klient Playeru se d´a v urˇcit´ ych pˇr´ıpadech pouˇz´ıvat i na syst´emu Windows a to znamen´a, ˇze server Playeru a klient mohou b´ yt spuˇstˇeny na rozd´ıln´ ym operaˇcn´ıch syst´emech.
9.3
Porovn´ an´ı pˇ renositelnosti aplikac´ı Playeru a MRDS
Velk´a v´ yhoda prostˇred´ı Player/Stage je to, ˇze podporuje nˇekolik rozd´ıln´ ych operaˇcn´ıch syst´em˚ u a vˇetˇsina z nich je dostupn´a pod licenc´ı GNU. Naproti tomu firma Microsoft se zab´ yv´a v´ yvojem operaˇcn´ıho syst´emu Windows pro t´emˇeˇr libovolnou v´ ypoˇcetn´ı jednotku a vyvinut´a aplikace by mˇela b´ yt mezi vˇsemi operaˇcn´ımi syst´emy Windows kompatibiln´ı. Tato v´ yhoda m˚ uˇze trochu pˇrej´ıt do pozad´ı, protoˇze syst´emy Windows jsou dostupn´e pouze v placen´ ych verz´ıch. I kdyˇz je z´ısk´an´ı operaˇcn´ıho syst´emu podloˇzeno financemi, zase za to z´akazn´ık dostane podporu od firmy Microsoft. Proto je ot´azka, kterou cestou se vydat. Kdyˇz pouˇz´ıv´ame robotick´e prostˇred´ı pro akademick´ y v´ yvoj je v souˇcasn´e dobˇe vˇetˇsinou moˇzn´e pouˇz´ıt licence MSDNAA na produkty Microsoft a t´ım se v´ yhoda licence GNU pro Player/Stage st´av´a bezcenn´a. Vlastnost prostˇred´ı Player/Stage, ˇze klientsk´a a serverov´a ˇc´ast m˚ uˇze b´ yt na odliˇsn´ ych operaˇcn´ıch syst´emech se m˚ uˇze uplatnit i pro prostˇred´ı MRDS. Sluˇzby z knihovny DSS, kter´e zajiˇst’uj´ı pˇresuny dat mezi ˇc´astmi aplikace v MRDS je tak´e zaloˇzena TCP spojen´ı a proto nen´ı probl´em um´ıstit ˇr´ıd´ıc´ı aplikaci napˇr´ıklad na linuxov´ y operaˇcn´ı syst´em. Hlavn´ı ˇc´ast MRDS, kter´a sb´ır´a data a ovl´ad´a robotick´e ˇc´asti mus´ı b´ yt st´ale na platformˇe Windows a .NET.
MRDS je prostˇred´ı pro v´ yvoj robotick´ ych aplikac´ı, kter´e je urˇcen´e pro pokroˇcil´e program´atory, ale i zaˇc´ateˇcn´ıky, protoˇze je zde jednoduch´a implementace aplikace pˇres VPL. I kdyˇz v´ yvoj prostˇred´ı MRDS neprob´ıh´a tak dlouhou dobu jiˇz se objevuj´ı firmy, kter´e nasazuj´ı prostˇred´ı MRDS do sv´eho v´ yvoje i pro ˇr´ızen´ı praktick´ ych aplikac´ı. Jedna z prvn´ıch firem pouˇz´ıvaj´ıc´ı prostˇred´ı MRDS byla francouzsk´a firma ROBOSOFT jiˇz v roce 2006. Prvn´ı roboti ˇr´ızen´ı prostˇred´ım MRDS byli robuLAB80, robuROC4 a robuROC6. Jsou to roboty pro pˇrem´ıst’ov´an´ı mal´ ych objekt˚ u a roboty pro vojensk´e u ´ˇcely. Dalˇs´ı informace je moˇzn´e nal´ezt na webov´e str´ance firmy ROBOSOFT [24]. Spolupr´aci na prostˇred´ı MRDS rozv´ıj´ı Microsoft se spoleˇcnostmi CoroWave, Fischertechnik, iRobot, KUKA Roboter, Lego, Segway, VIA Technologies a dalˇs´ımi v´ıce neˇz 50 firmami [25].
10.2
Projekty vyv´ıjen´ e v prostˇ red´ı Player/Stage
Re´aln´e nasazen´ı prostˇred´ı Player/Stage je hlavnˇe ve v´ yzkumn´em sektoru, kv˚ uli jednoduch´e upravitelnosti a dostupnosti zdrojov´ ych k´odu. V´ yhodou prostˇred´ı Player/Stage je i licence GNU a nen´aroˇcnost prostˇred´ı na v´ ykon hardware. Projekty, kter´e vyuˇz´ıvaj´ı ve v´ yvoji vlastnosti Player/Stage jsou napˇr´ıklad robotick´e jednotky White Box Robotics 9, projekt implementace Player/Stage do liveCD Knoppix, projekt robotOS i projekt, kter´ y 51
aplikuje Player/Stage v prostˇred´ı Win32 pˇres syst´em cygwin a nˇekolik dalˇs´ıch projekt˚ u. Protoˇze je Player/Stage GNU projekt a nem´a silnou propagaˇcn´ı kampaˇ n, tak prezentace projekt˚ u, kter´e prostˇred´ı Player/Stage vyuˇz´ıvaj´ı se omezuje na webov´e str´anky robotick´ ych fakult nebo komunit. Z tohoto d˚ uvodu jsou projekty s pouˇzit´ım Player/Stage tˇeˇzko vyhledateln´e. Na webov´e str´ance [26] je abecedn´ı seznam nˇekter´ ych v´ yznamn´ ych uˇzivatel˚ u Player/Stage. Seznam je rozdˇelen podle kontinent˚ u a pˇrev´aˇzn´a vˇetˇsina uveden´ ych instituc´ı jsou v´ yzkumn´e u ´stavy nebo univerzity. Jedna z m´ala firem v seznamu je tˇreba firma Robotnik, zde je jej´ı webov´a str´anka [27]. Firma se zab´ yv´a v´ yvojem a v´ yrobou, robotick´ ych ramen, robotick´ ych rukou a autonomn´ımi robotick´ ymi vozidly.
Dalˇs´ı firmou je
White Box Robotics a na jejich webu [28] je popis v´ yvojov´ ych prostˇred´ı, kter´e pouˇz´ıvaj´ı k v´ yvoji. Prostˇred´ı Player/Stage pouˇz´ıvaj´ı pro v´ yvoj robota 914 PC-BOT. Player/Stage pouˇz´ıv´a k v´ yvoji i firma Intel, nebo Boeing, ale nen´ı pˇresnˇe pops´ano k jak´ ym u ´ˇcel˚ um. Dalˇs´ı firmou, kter´a pouˇz´ıv´a Player/Stage je firma MobileRobots, kter´a vyr´ab´ı napˇr´ıklad roboty Pionner viz. webov´a str´anka v´ yrobce [23]. Firma CoroWave pouˇz´ıv´a Player/Stage pro venkovn´ıho robota Explorer, nebo robota s rukou CoroBot. Zde je webov´a str´anka Explorer [29] a zde pro CoroBot [30].
10.3
Porovn´ an´ı pouˇ zit´ı
Player/Stage se v´ıce uplatˇ nuje na akademick´e p˚ udˇe po cel´em svˇetˇe. D´ıky sv´e jednoduchosti, podpoˇre linuxov´ ych syst´em˚ u, voln´ ym k´od˚ u a GNU licenci, ale i nˇekter´e firmy Player/Stage implementovaly do sv´ ych v´ yrobn´ıch postup˚ u. Na druhou stranu MRDS se ve vˇetˇs´ı m´ıˇre vyuˇz´ıv´a mezi firmami. Pouˇz´ıv´a se mezi zaˇc´ateˇcn´ıky na robotick´em poli, d´ıky jednoduchosti v´ yvoje aplikac´ı. Do akademick´e sf´ery se teprve pomalu dost´av´a a konkuruje tak prostˇred´ı Player/Stage.
52
Kapitola 11 Cena prostˇ red´ı 11.1
Cena prostˇ red´ı MRDS
MRDS je vyd´av´ano ve tˇrech verz´ıch jejichˇz rozd´ıly jsou popsan´e v kapitole 4.1.1. Verze Express Edition je distribuov´ana zdarma s nˇekolika omezen´ımi popsan´ ych v kapitole 4.1.2. Verze Academic Edition je distribuov´ana pˇres sluˇzbu poskytov´an´ı produkt˚ u pro akademick´e pouˇzit´ı Microsoft MSDNAA a Microsoft DreamSpark. Proto je pro akademick´e pouˇzit´ı pln´a verze prostˇred´ı MRDS zdarma. Verze Standart Edition je urˇcena pro komerˇcn´ı vyuˇzit´ı a jej´ı cena se pohybuje kolem 499.95 USD (pˇribliˇznˇe 10 000 Kˇc). Pokud si uˇzivatel poˇr´ıd´ı placenou verzi prostˇred´ı MRDS Standart Edition dostane telefonickou a mailovou podporu k produktu.
11.2
Cena prostˇ red´ı Player/Stage
Projekt Player je vyv´ıjen pod licenc´ı GNU a proto je zdarma a jeho k´ody jsou volnˇe ˇsiˇriteln´e. Nev´ yhodou GNU licence je, ˇze nem˚ uˇze uˇzivatel vyˇzadovat ˇz´adnou podporu. Podpora je ze strany dobrovoln´ık˚ u a lid´ı, kteˇr´ı projektu Player vˇenuj´ı sv˚ uj voln´ y ˇcas.
53
ˇ ´I KAPITOLA 11. CENA PROSTRED
11.3
Porovn´ an´ı ceny prostˇ red´ı Player/Stage a MRDS
V akademick´e sf´eˇre se db´a na ˇsetˇren´ı s finanˇcn´ımi prostˇredky a proto se hledal alternativn´ı software, kter´ y je zdarma. Tento poˇzadavek velmi kvalitnˇe splˇ noval operaˇcn´ı syst´em Linux, kter´ y pˇrin´aˇs´ı alternativu k Windows. D´ıky tomu, ˇze Player/Stage podporuje Linux a nav´ıc m´a velkou historii, je v akademick´e sf´eˇre velmi rozˇs´ıˇren. Proto Microsoft zavedla sluˇzby MSDNAA, pˇres kterou jsou do akademick´e sf´ery distribuov´any produkty Microsoft. T´ım se Microsoft snaˇz´ı si z´ıskat budouc´ı potencion´aln´ı uˇzivatele z ˇrad student˚ u. T´ımto krokem se prostˇred´ı MRDS zaˇradilo v akademick´e sf´eˇre vedle prostˇred´ı Player/Stage. Nejlepˇs´ı vlastnost Linuxu a Player/Stage, kterou jsou distribuce zdarma, sluˇzba MSDNAA naruˇsila. V budoucnu se m˚ uˇze st´at MRDS na akademick´e p˚ udˇe bˇeˇzn´ ym prostˇred´ım pro programov´an´ı robot˚ u. Pˇredevˇs´ım i d´ıky tomu, ˇze je urˇceno i pro uˇzivatele zaˇc´ateˇcn´ıky, coˇz je jedna z d˚ uleˇzit´ ych vlastnost´ı pro v´ yuku. Prostˇred´ı Player/Stage tak z˚ ust´av´a v´ yhoda v tom, ˇze se Linux nech´a jednoduˇse instalovat jako velmi nen´aroˇcn´ y operaˇcn´ı syst´em a pak m˚ uˇzeme Player/Stage na Linuxu pouˇz´ıvat na nen´aroˇcn´ ych v´ ypoˇcetn´ıch syst´emech. MRDS st´ale potˇrebuje pro svou funkci platformu .NET a ta je n´aroˇcnˇejˇs´ı, neˇz j´adro Linuxu. MRDS se pro komerˇcn´ı pouˇzit´ı prod´av´a v cenˇe 10 000 Kˇc. Napˇr´ıklad r´ ysovac´ı program AutoCad stoj´ı i nˇekolik des´ıtek aˇz stovek tis´ıc. Cena za prostˇred´ı MRDS je naopak vykoupena podporou pro uˇzivatele. Kdyˇz se MRDS pouˇz´ıv´a pro v´ yvoj v nˇejak´e firmˇe, je nutn´e aby se pˇr´ıpadn´e chyby odstranily co nejrychleji, protoˇze jinak doch´az´ı ke ztr´atˇe zisku. Placen´a verze programu tedy d´av´a jistou z´aruku, ˇze nedojde dlouhodobˇejˇs´ımu v´ ypadku v´ yvoje.
54
Kapitola 12 Implementace aplikace Pro porovn´an´ı zp˚ usobu a n´aroˇcnosti implementace projektu v obou prostˇred´ıch MRDS ˇ ıd´ıc´ı aplikace a Player/Stage byla zvolena aplikace pro ˇr´ızen´ı pohybu robota v prostˇred´ı. R´ ˇr´ıd´ı pohyb robota pˇri proj´ıˇzdˇen´ı prostˇred´ım tak, aby nenarazil do objekt˚ u nebo stˇen v prostˇred´ı a vˇcas se pˇrek´aˇzk´am vyhnul. Aplikaci je moˇzn´e implementovat na robota, kter´ y m´a schopnost pohybu a mus´ı m´ıt minim´alnˇe dva mˇeˇriˇce vzd´alenosti, nebo laserov´ y mˇeˇriˇc pro sn´ım´an´ı prostˇred´ı, ve kter´em se robot pohybuje. Aplikace vyh´ yb´an´ı se pˇrek´aˇzk´am funguje tak, ˇze senzory um´ıstˇen´e na robotu pro mˇeˇren´ı vzd´alenosti jsou na lev´e a prav´e stranˇe, tak aby se sn´ımac´ı u ´hel pˇrekr´ yval pˇred stˇredem robota. Kdyˇz se robot bl´ıˇz´ı k pˇrek´aˇzce a vzd´alenost k pˇrek´aˇzce je menˇs´ı neˇz maxim´ aln´ı mˇeˇren´ a vzd´alenost, d´avaj´ı senzory na lev´e a prav´e stranˇe robota rozd´ıln´e hodnoty vzd´alenosti. Kdyˇz je vzd´alenost z jednoho ˇcidla menˇs´ı neˇz vzd´alenost z druh´eho, robot sn´ıˇz´ı rychlost tak aby mohl bezpeˇcnˇe zatoˇcit a zatoˇc´ı na tu stranu, kde je vzd´alenost vˇetˇs´ı a vyhne se tak pˇrek´aˇzce. Zatoˇcen´ı je omezen´e hodnotou maxim´aln´ıho zatoˇcen´ı. Na pˇr´ıkladˇe 12 je uveden pseudok´od vyh´ yb´an´ı se pˇrek´aˇzk´am.
55
KAPITOLA 12. IMPLEMENTACE APLIKACE Pseudok´ od vyh´ yb´ an´ ı se pˇ rek´ az ˇk´ am // nekoneˇ cn´ a smyˇ cka for(;;) { // blokov´ an´ ı programu dokud nepˇ rijdou nov´ a data (10Hz) c ˇekej na data ze senzoru(); // naˇ cten´ ı minim´ aln´ ı vzd´ alenosti z~ˇ cidel minVpravo = pˇ reˇ cti pravou vzd´ alenost(); minVlevo = pˇ reˇ cti levou vzd´ alenost(); // omezen´ ı velikosti vzd´ alenosti if (vlevo > maxim´ aln´ ı mˇ er ˇen´ a vzd´ alenost) vlevo = maxim´ aln´ ı mˇ er ˇen´ a vzd´ alenost; if (vpravo > maxim´ aln´ ı mˇ er ˇen´ a vzd´ alenost) vpravo = maxim´ aln´ ı mˇ er ˇen´ a vzd´ alenost; // v´ ypoˇ cet nov´ e rychlosti, tak aby robot zpomalil a stihl se vyhnout nov´ a rychlost = (vpravo + vlevo) / hodnota pro u ´pravu rychlosti; //v´ ypoˇ cet nov´ e hodnoty nov´ e zatoˇ cen´ ı = (vpravo - vlevo); // maxim´ aln´ ı uhel zatoˇ ceni nov´ e zatoˇ cen´ ı = limit(nov´ e zatoˇ cen´ ı, maxim´ aln´ ı zatoˇ cen´ ı vlevo, maxim´ aln´ ı zatoˇ cen´ ı vpravo); // zapsat pˇ rı ´kazy do robota nastaveni rychlosti(nov´ a rychlost, nov´ e zatoˇ cen´ ı); }
Pˇr´ıklad 12: Pseudok´od vyh´ yb´an´ı se pˇrek´aˇzk´am
12.1
Implementace aplikace v MRDS
Tvorba nov´eho projektu v MRDS se m˚ uˇze rozdˇelit na nˇekolik ˇc´asti. Tento postup vytvoˇr´ı zcela pr´azdny projekt s importem z´akladn´ıch knihoven MRDS. 1. Vytvoˇren´ı nov´e aplikace n´astrojem DssNewService 2. Sestaven´ı simulace a vloˇzen´ı entit do simulaˇcn´ı sc´eny v prostˇred´ı VSE ´ 3. Uprava vytvoˇren´eho manifestu pro simulaci a pro robota (pomoc´ı DSSME) 4. Naprogramov´an´ı a kompilace ˇr´ıd´ıc´ı aplikace pro ˇr´ızen´ı robota v prostˇred´ı MVS 5. Spuˇstˇen´ı vytvoˇren´e aplikace 56
KAPITOLA 12. IMPLEMENTACE APLIKACE
12.1.1
Vytvoˇ ren´ı nov´ eho projektu n´ astrojem DssNewService
Nov´ y projekt se vytvoˇr´ı pˇr´ıkazem napsan´ ym v DSSCP: dssnewservice /language: “Csharp“ /service:“Vyhybani“ /dir:“Vyhybani“. Moˇznost´ı pro vytv´aˇren´ı nov´ ych projekt˚ u je v´ıce a podrobnosti o parametrech lze z´ıskat v n´apovˇedˇe dssnewservice help. Pro funguj´ıc´ı implementaci staˇc´ı popsan´e nastaven´ı. Projekt mus´ı b´ yt um´ıstˇen ve sloˇzce prostˇred´ı MRDS, jinak nebudou fungovat cesty ke knihovn´am a funkc´ım MRDS. Takto sestav´ıme nov´ y projekt pro MVS s importovan´ ymi robotick´ ymi knihovnami s vytvoˇren´ ym manifestem Vyhybani.Manifest.xml, hlavn´ım souborem C# projektu .csproj a dalˇs´ımi soubory potˇrebn´ ymi pro C# projekt. Projekt hned po vytvoˇren´ı zkompilujeme, aby jsme ho mohli pˇrid´avat do manifest˚ u. Pˇri vytv´aˇren´ı nov´e aplikace je v nastaven´ı projektu MVS cesta ke spouˇstˇen´emu manifestu v absolutn´ı podobˇe, proto pˇri pˇresunut´ı projektu do jin´e sloˇzky projekt nefunguje. Proto pˇri pˇresunut´ı projektu do jin´e sloˇzky je potˇreba zmˇenit nastaven´ı projektu v z´aloˇzce Debug. Nastavit je potˇreba pracovn´ı adres´aˇr Working directory a argumenty pro DSSCP Command line arguments tak, aby projekt naˇsel soubor manifest. T´ımto zp˚ usobem je moˇzn´e k projektu pˇripojit i manifest pro simulaci. Podle druhu robotick´e aplikace se do k´odu mus´ı pˇridat reference na knihovnu RoboticsCommon.proxy.dll, kter´a obsahuje ovladaˇce pro pˇr´ıstup k obecn´ ym (generic) robotick´ ym zaˇr´ızen´ım, jako je motor, kamera, ˇcidlo, mˇeˇriˇc vzd´alenosti a dalˇs´ı. Protoˇze pouˇz´ıv´ame v aplikaci motor i mˇeˇriˇce vzd´alenosti, importujeme tuto knihovny do referenc´ı v MVS. Podrobnosti o knihovnˇe RoboticsCommon.proxy.dll lze naj´ıt pouˇzit´ım pˇr´ıkazu dssinfo bin\RoboticsCommon.Proxy.dll /o:adresar /s:html z pˇr´ıkazov´e ˇr´adky DSSCP.
12.1.2
Sestaven´ı simulaˇ cn´ı sc´ eny
Pro ovˇeˇren´ı funkˇcnosti naprogramovan´e aplikace pouˇzijeme simulaˇcn´ı prostˇred´ı VSE. Aby jsme si vytvoˇrili simulaˇcn´ı sc´enu mus´ıme spustit prostˇred´ı VSE. Jednoduch´a cesta se nab´ız´ı spuˇstˇen´ım pˇripraven´eho prostˇred´ı pˇres z´astupce ze sloˇzky MRDS v nab´ıdce Start syst´emu Windows. Nejvhodnˇejˇs´ı je z´astupce pro spuˇstˇen´ı simulaˇcn´ıho prostˇred´ı Simple Simulated Robot. Tato simulace obsahuje pouze robota s podvozkem a ovl´adac´ı aplikac´ı, pro vyzkouˇsen´ı robota. Nyn´ı m˚ uˇzeme zaˇc´ıt upravovat prostˇred´ı tak, aby vyhovovalo naˇs´ı poˇzadovan´e simulaci. Nejdˇr´ıve je tˇreba pˇrepnout prostˇred´ı VSE do editaˇcn´ıho m´odu, pˇres poloˇzku Mode -> Edit. V tomto m´odu m˚ uˇzeme pˇrid´avat, editovat a odeb´ırat jednotliv´e entity. Pˇresunov´an´ı pˇrek´aˇzek myˇs´ı provedeme tak, ˇze mus´ıme m´ıt entitu vy57
KAPITOLA 12. IMPLEMENTACE APLIKACE
branou v seznamu entit. Stiskneme kl´avesu CTRL a prav´ ym tlaˇc´ıtkem myˇsi si vybereme v jak´ ych os´ach chceme entitu pˇresouvat a lev´ ym tlaˇc´ıtkem entitu pˇresouv´ame. Pro aplikaci vyh´ yb´an´ı se pˇrek´aˇzk´am nech´ame v prostˇred´ı robota a pˇrid´ame pˇrek´aˇzky, tak jako na obr´azku 12.1. U statick´ ych entit nepotˇrebujeme ˇz´adn´e sluˇzby a tak je staˇc´ı do sc´eny vloˇzit pˇres poloˇzku Entity -> Load Entities.
Obr´azek 12.1: Visu´aln´ı simulaˇcn´ı prostˇred´ı s entitami v editaˇcn´ım m´ odu
Kdyˇz omylem smaˇzeme entitu nebe, zemˇe nebo slunce je v MRDS nadefinov´an soubor manifest s jehoˇz pomoc´ı tyto entity importujeme zpˇet do VSE. Tento manifest se jmenuje EntityUI. Importujeme ho do simulaˇcn´ıho prostˇred´ı VSE pˇres File -> Open Manifest ze sloˇzky MRDS\samples\Config a tlaˇc´ıtkem na Dialogu Add default scene vloˇz´ıme z´akladn´ı entity, nebe, zemi a slunce. Stejn´ ym postupem m˚ uˇzeme k simulaˇcn´ımu prostˇred´ı VSE spustit okno Dashboard pro otestov´an´ı ˇr´ızen´ı robota. Kdyˇz uprav´ıme pozice entit tak, aby odpov´ıdali naˇsim poˇzadavk˚ um, simulaˇcn´ı sc´enu uloˇz´ıme pˇres File -> Save Scene As a simulaˇcn´ı sc´enu nazveme VyhybaniSim. Takto vygenerujeme dva soubory manifest. Jeden s popisem sc´eny VyhybaniSim.xml a druh´ y, kter´ y popisuje potˇrebn´e sluˇzby, pojmenovan´ y Vyhybani.Manifest.xml. Tento manifest pak pouˇz´ıv´ame pˇri spouˇstˇen´ı simulace projektu. Pokud je simulaˇcn´ı prostˇred´ı spuˇstˇen´e a po58
KAPITOLA 12. IMPLEMENTACE APLIKACE
kus´ıme se o spuˇstˇen´ı jeˇstˇe jedn´e instance, tak DSSCP zobraz´ı chybov´e hl´aˇsen´ı a prostˇred´ı se nespust´ı.
12.1.3
Vytv´ aˇ ren´ı vlastn´ı entity pro VSE
Tato kapitola popisuje postup jak vytvoˇrit jednoduchou entitu, napˇr´ıklad bludiˇstˇe, z bitmapov´eho obr´azku. Vytvoˇr´ıme p˚ udorys bludiˇstˇe v bitmapov´em obr´azku a pˇrevedeme do vektorov´eho form´atu napˇr´ıklad programem WinTopo a uloˇz´ıme ve form´atu DXF (form´at AutoCad Drawing Exchange Format). Pomoc´ı programu GoogleSketchUp naˇcteme soubor DXF. Vytvoˇren´ı 3D objektu se provede spojen´ım vˇsech ˇcar a n´astrojem Tlaˇcit / t´ahnout vytvoˇr´ıme 3D model, kter´ y se exportuje do souboru Google Earth 4 (.kmz). Potom mus´ıme soubor .kmz pˇrejmenovat na archiv .zip. Po extrahov´an´ı archivu zip nalezneme soubor .dae (soubor Collada) kter´ y m˚ uˇzeme jiˇz pˇr´ımo importovat do simulaˇcn´ıho prostˇred´ı VSE pˇres poloˇzku Entities -> Load entities. Existuj´ı i dalˇs´ı postupy pro vytv´aˇren´ı entit, napˇr´ıklad pˇrevodem v´ ykresu CAD do souboru .obj nebo souboru .bos. Soubor BOS i OBJ obsahuj´ı vzhled robot˚ u pro simulaˇcn´ı prostˇred´ı. Entity se mohou vytv´aˇret i pomoc´ı animaˇcn´ıch nebo r´ ysovac´ıch program˚ u, vˇzdy je ale nutn´e soubory pˇrev´est na form´at BOS nebo OBJ. Na vytv´aˇren´ı simulaˇcn´ıch sc´en se specializuj´ı i firmy jako je napˇr´ıklad firma SimplySim [31]. Cena za jednu vˇetˇs´ı m´ıstnost (ˇskoln´ı tˇr´ıda) se pohybuje kolem 120 Eur.
12.1.4
´ Uprava manifest˚ u
Do manifestu vytvoˇren´eho pˇri uloˇzen´ı simulaˇcn´ı sc´eny se mus´ı pˇridat manifest vygenerovan´ y pˇri vytv´aˇren´ı nov´eho projektu. To se provede tak, ˇze se manifest VyhybaniSim.manifest.xml se naˇcte do DSSME a pˇrid´a se do nˇej sluˇzba Vyhybani, coˇz je manifest Vyhybani.manifest.xml, kter´ y v sobˇe nese odkazy na sluˇzby, kter´e budou ˇr´ıdit robota. Pro simulationengine mus´ıme pˇridat poˇc´ateˇcn´ı stav simulaˇcn´ı sc´eny, kter´ y byl vytvoˇren. Dvakr´at klikneme na simulationengine a zvol´ıme Import initial state, zmˇen´ıme druh souboru na xml a nalezneme VyhybaniSim.xml a naˇcteme jej. T´ımto m´ame spojen´ y manifest VyhybaniSim.manifest.xml se simulaˇcn´ım prostˇred´ım a stavem sc´eny, tak jak jsme j´ı sestavili. VyhybaniSim.manifest.xml je na obr´azku 12.2. Pro re´aln´ y hardware se mus´ı vytvoˇrit nov´ y manifest v DSSME a opˇet do nˇej pˇridat manifest Vyhybani.manifest.xml. Pro Lego NX mus´ıme vloˇzit sluˇzby pro komunikaci s dvojic´ı
59
KAPITOLA 12. IMPLEMENTACE APLIKACE
Obr´azek 12.2: Manifest pro komunikaci se simulaˇcn´ım prostˇred´ım
motor˚ u pro pohyb LegoNXTDrivev2 a pro komunikaci se sonarem LegoNXTUltrasonicSensorv2. Pro obˇe sluˇzby se mus´ı nastavit poˇc´ateˇcn´ı podm´ınky. Pro sluˇzbu LegoNXTDrivev2, je to vzd´alenost mezi koly, porty na ˇr´ıd´ıc´ı kostce“ NXT ke kter´ ym jsou pˇripojeny ” motory, pr˚ umˇer kol a frekvence obnovov´an´ı. Pro sluˇzbu sonaru LegoNXTUltrasonicSensorv2 je to port pro pˇripojen´ı k ˇr´ıd´ıc´ı kostce“ NXT a frekvence ˇcten´ı dat. Jeˇstˇe se mus´ı ” vloˇzit sluˇzba ˇr´ıd´ıc´ı kostky“ NXT, pˇres kterou robot komunikuje s poˇc´ıtaˇcem. Sestaven´ y ” manifest je uveden na obr´azku 12.3. Tyto dva manifesty budeme pouˇz´ıvat pˇri spouˇstˇen´ı ˇr´ıd´ıc´ı aplikace pˇres n´astroj dsshost.
12.1.5
Implementace robota
Kdyˇz vyv´ıj´ıme novou robotickou aplikaci, je d˚ uleˇzit´e m´ıt ovladaˇce pro hardware. V prostˇred´ı MRDS jsou ovladaˇce nahrazeny sluˇzbami a reference na sluˇzby jsou uloˇzeny v souborech manifest. Manifestem m˚ uˇze k aplikaci pˇripojit re´aln´ y hardware nebo simulaˇcn´ı aplikaci. Pokud chceme pouˇz´ıt pro stejnou aplikaci jin´ y hardware, pouze pouˇzijeme jin´ y manifest. Pro jsme si vytvoˇrili dva manifesty. Pokud jiˇz jednou zkompilujeme robotickou aplikaci, staˇc´ı pro jej´ı opˇetovn´e spuˇstˇen´ı pouze nadefinovan´e manifesty, ale je tˇreba je spouˇstˇet z adres´aˇre MRDS. 60
KAPITOLA 12. IMPLEMENTACE APLIKACE
Obr´azek 12.3: Manifest pro komunikaci s NXT v programu DSSME
Pˇri v´ yvoji ˇr´ıd´ıc´ı aplikace upravujeme pouze soubor DiagramService.cs. Soubor mus´ı obsahovat nˇekolik blok˚ u naprogramovan´eho k´odu. Vˇetˇsina blok˚ u k´odu se pˇrid´a automaticky pˇri vytv´aˇren´ı nov´e aplikace. Pro vlastn´ı psan´ı aplikace je potˇreba naj´ıt metodu Start() a do t´eto metody postupnˇe ps´at aplikaci podle k´odu pˇriloˇzen´eho v pˇr´ıloze B. Jednotliv´e ˇc´asti k´odu jsou popsan´e v koment´aˇr´ıch k´odu. Uveden´ y k´od nen´ı kompletn´ı. Kompletn´ı k´od je moˇzn´e naleznout na CD pˇriloˇzen´em k pr´aci. Pˇri kompilaci se vytvoˇr´ı knihovny, kter´e obsahuj´ı sluˇzby pro generovanou aplikaci a uloˇz´ı se do adres´aˇre MRDS\bin. Pokud v prostˇred´ı MVS aplikaci zmˇen´ıme je potˇreba ji zkompilovat, aby se knihovny pˇrepsali. Generovan´e knihovny maj´ı stejn´ y n´azev jako uloˇzen´ y projekt v prostˇred´ı MVS. Kdyˇz projekt VPL pojmenujeme Vyhybani knihovny budou pojmenov´any Vyhybani.Y2009.M07. Y znamen´a rok a M mˇes´ıc kdy byla aplikace sestaven´a. Generovan´e knihovny jsou tˇri a spolu s nimi se generuj´ı soubory programov´e datab´aze (.pdb - programov´a datab´aze) a soubor manifest pro dokumentaci. Soubor PDB udrˇzuje informace o ladˇen´ı programu a informace o stavu projektu. D´ale soubor uchov´av´a seznam vˇsech symbol˚ u pouˇzit´ ych v knihovnˇe, jejich cesty, n´azvy a ˇr´adky kde jsou nadefinov´any. Tyto informace dovoluj´ı inkrement´alnˇe spojovat nastaven´ı ladˇen´ı programu.
61
KAPITOLA 12. IMPLEMENTACE APLIKACE
12.1.6
Spuˇ stˇ en´ı vytvoˇ ren´ı aplikace
Kdyˇz m´ame simulaˇcn´ı prostˇred´ı sestaven´e, vˇsechny vlastnosti a entity nadefinovan´e v .xml souboru, vlastn´ı spuˇstˇen´ı simulace se provede pˇr´ıkazem dsshost /port:50000 /manifest: ”VyhybaniNXT.Manifest.xml” pro re´alnou aplikaci NXT nebo dsshost /port:50000 /manifest:”VyhybaniSim.Manifest.xml” pro simulaci v simulaˇcn´ım prostˇred´ı VSE z pˇr´ıkazov´e ˇr´adky DSSCP.
12.2
Implementace aplikace v Player/Stage
V´ yvoj robotick´ ych aplikac´ı v prostˇred´ı Player/Stage je stejn´e jako v ostatn´ım linuxov´em programov´an´ı. Vˇsechny konfiguraˇcn´ı soubory a soubory aplikace pro ˇr´ızen´ı robota jsou v textov´em form´atu a jsou jednoduˇse upraviteln´e libovoln´ ym textov´ ym editorem. Jedin´a ˇc´ast, kter´a se kompiluje, je ˇr´ıd´ıc´ı program napsan´ y v programovac´ım jazyce.
12.2.1
Vytv´ aˇ ren´ı ˇ r´ıd´ıc´ıho programu
ˇ ıd´ıc´ı aplikace se vyv´ıj´ı v programovac´ım prostˇred´ım, kter´e podporuje programoR´ vac´ı jazyk, ve kter´em je aplikace programov´ana. Implementace vyh´ yb´an´ı se pˇrek´aˇzk´am v prostˇred´ı Player/Stage je napsan´a v jazyce C++. Pro v´ yvoj ˇr´ıd´ıc´ıch aplikac´ı je vhodn´e napˇr´ıklad prostˇred´ı KDevelop nebo NetBeans, podle pouˇzit´eho programovac´ıho jazyka. Moˇznost ps´at aplikaci je i v klasick´em textov´em editoru pro Ubuntu. Tento editor se jmenuje Gedit a pˇri vytvoˇren´ı souboru s pˇr´ıponou programovac´ıho jazyka barevnˇe zv´ yrazˇ nuje syntaxi k´odu. V Geditu jsou podporovan´e napˇr´ıklad jazyky C, C++, Java, HTML, XML, Python, Perl, Tex. Pˇri psan´ı ˇr´ıd´ıc´ı aplikace je potˇreba importovat do k´odu knihovny Playeru a knihovnu ˇ ıd´ıc´ı aplipro datovou komunikaci , include . R´ kace je zobrazena na pˇr´ıkladu 12.2.1.
62
KAPITOLA 12. IMPLEMENTACE APLIKACE Zdrojov´ y k´ od r ˇı ´d´ ıc´ ı aplikace "vyhybani.cc" #include // knihovna pro pˇ r´ ıstup k Playeru #include
// knihovna poskytuj´ ıc´ ı proudov´ y pˇ renos dat
#include "args.h"
// import pˇ rı ´kaz˚ u pro pr´ aci s argumenty
int main(int argc, char **argv) // z´ ısk´ a dva argumenty zadan´ e pˇ ri spuˇ stˇ en´ ı { parse_args(argc,argv);
// rozdˇ elen´ ı argument˚ u
try
// zahazov´ an´ ı v´ yjimek pˇ ri chyb´ ach
{ using namespace PlayerCc;
// pouˇ zije PlayerCc, z knihovny playerc++ pro pˇ rı ´stup // klienta k rozhran´ ım hardware
PlayerClient robot(gHostname, gPort); // pˇ ripojen´ ı klienta k serveru Player Position2dProxy pp(&robot, gIndex);
// poˇ zadavek pro pˇ rı ´stup k poziˇ cn´ ımu hardware
LaserProxy lp(&robot, gIndex);
// poˇ zadavek pro pˇ rı ´stup k laserov´ emu mˇ er ˇiˇ ci
std::cout << robot << std::endl;
// v´ ypis pˇ ripojen´ ı k serveru Player
pp.SetMotorEnable (true);
// spuˇ stˇ en´ ı motor˚ u, aby se robot rozjel
for(;;)
// nekoneˇ cn´ a smyˇ cka
{ double newspeed = 0;
// definov´ an´ ı hodnoty pro novou rychlost
double newturnrate = 0;
//definov´ an´ ı hodnoty zatoˇ cen´ ı robota
robot.Read();
// blokov´ an´ ı programu dokud nepˇ rijdou nov´ a data c ˇten´ ı 10Hz
double minR = lp.GetMinRight(); // z´ ıskat nejmenˇ sı ´ hodnotu z prav´ eho laserov´ eho mˇ er ˇiˇ ce double minL = lp.GetMinLeft();
// z´ ıskat nejmenˇ sı ´ hodnotu z lev´ eho laserov´ eho mˇ er ˇiˇ ce
std::cout << "minR: " << minR
// v´ ypis minR a minL na termin´ al
<< "minL: " << minL << std::endl; double l = (1e5*minR)/500-100; double r = (1e5*minL)/500-100; if (l > 100) l = 100;
ˇ ıd´ıc´ı aplikace vyh´ Pˇr´ıklad 12.2.1: R´ yb´an´ı se pˇrek´aˇzk´am 63
KAPITOLA 12. IMPLEMENTACE APLIKACE
Kdyˇz m´ame napsanou ˇr´ıd´ıc´ı aplikaci, je tˇreba j´ı zkompilovat a zkontrolovat pr´ava pro spouˇstˇen´ı. Po kompilaci jiˇz m˚ uˇzeme soubor spouˇstˇet klasicky, pomoc´ı pˇr´ıkazu ./vyhybani z termin´alu. Nejdˇr´ıve vˇsak mus´ıme m´ıt spuˇstˇen´ y server Player, aby se ˇr´ıd´ıc´ı program mohl k serveru Player pˇripojit. Pro testov´an´ı je vhodn´e aplikaci spustit v simulaˇcn´ım prostˇred´ı Stage. Pro simulaci si mus´ıme pˇripravit konfiguraˇcn´ı soubor vyhybani.cfg, soubor vyhybani.world s popisem simulaˇcn´ıho prostˇred´ı a simulovan´eho robota a bitmapov´ y obr´azek simulovan´eho prostˇred´ı.
12.2.2
Simulace v prostˇ red´ı Stage
Na obr´azku 12.4 je zn´azornˇen´a struktura sestaven´ı serveru Player, na kter´em bˇeˇz´ı simulaˇcn´ı prostˇred´ı Stage a k serveru se pˇripojuje klientsk´a ˇr´ıd´ıc´ı aplikace. Stejnˇe tak jako je ovladaˇc pro re´aln´ y hardware, je ovladaˇc i pro Stage.
Obr´azek 12.4: Struktura pˇripojen´ı ˇr´ıd´ıc´ı aplikace k simulaˇcn´ımu prostˇred´ı
Pro spuˇstˇen´ı simulaˇcn´ıho prostˇred´ı Stage je potˇreba vytvoˇrit soubor konfigurace, ve kter´em budou reference na ovladaˇc Stage. Pˇr´ıklad 12.2.2 pˇredstavuje obsah souboru vyhybani.cfg s implementac´ı ovladaˇce pro Stage a rozhran´ım pro mˇeˇren´ı pozice a laserov´e mˇeˇren´ı polohy.
64
KAPITOLA 12. IMPLEMENTACE APLIKACE Obsah konfiguraˇ cn´ ıho souboru vyhybani.cfg driver
#vytvoˇ rı ´ ovladaˇ c stage a pˇ ripoj´ ı position2d a laser
(
#rozhran´ ı k modelu robota"garcia" name "stage"
#n´ azev ovladaˇ ce #poskytuje sonar, poziˇ cn´ ı a laserov´ y senzor
provides ["position2d:0" "laser:0" "sonar:0"] model "garcia" #n´ azev modelu robota )
Pˇr´ıklad 12.2.2: Konfiguraˇcn´ı soubor pro simulaci v prostˇred´ı Stage Konfiguraˇcn´ı soubor z pˇr´ıkladu 12.2.2 zobrazuje i referenci na soubor vyhybani.world. Soubor vyhybani.world obsahuje definici simulaˇcn´ı sc´eny. V hlaviˇcce souboru mus´ı b´ yt odkazy na soubory, ve kter´ ych jsou definov´any vlastnosti pro simulovan´eho robota a senzory. Soubor vyhybani.world popisuj´ıc´ı simulaˇcn´ı prostˇred´ı je na pˇr´ıkladˇe 12.2.2.
65
KAPITOLA 12. IMPLEMENTACE APLIKACE Obsah souboru "vyhybani.world" pro popis simulaˇ cn´ ı sc´ eny include "pioneer.inc" #definuje vlastnosti simulovan´ eho robota Pioneer include "map.inc"
#definuje objekt ’map’ pouˇ zit´ y pro podkladovou mapu
include "sick.inc"
#definuje sick laser scaner
size [16 16]
#velikost simulaˇ cn´ ıho prostˇ red´ ı (v metrech)
resolution 0.02
#nastav´ ı rozliˇ sen´ ı laserov´ eho mˇ er ˇice (v metrech)
pose [-7 -6 90] #z´ akladn´ ı pozice robota na mapˇ e sick_laser()
#implementovan´ y laserov´ y mˇ er ˇiˇ c
watchdog_timeout -1.0
#doba hl´ ıd´ an´ ı komunikace s robotem
)
Pˇr´ıklad 12.2.2: Vyhybani.world popisuj´ıc´ı vlastnosti simulaˇcn´ı sc´eny Pro dokonˇcen´ı vytvoˇren´e simulaˇcn´ı sc´eny je potˇreba vytvoˇrit bitmapu pro simulaˇcn´ı sc´enu. Kdyˇz m´ame nadefinovan´e soubory CFG a WORLD, je potˇreba jeˇstˇe vytvoˇrit podkladov´ y obr´azek pro zobrazen´ı simulovan´eho prostˇred´ı, ve kter´em Stage rozpozn´a ˇc´ary a vytvoˇr´ı z nich pˇrek´aˇzky, viz. obr´azek 12.5. Pro spuˇstˇen´ı simulace je tˇreba z termin´alu nejdˇr´ıve spustit Player s argumentem konfiguraˇcn´ıho souboru ./player vyhybani.cfg. T´ımto zp˚ usobem vytvoˇr´ıme server Player, na kter´em bˇeˇz´ı simulace. Kdyˇz chceme simulaci ovl´adat, mus´ıme se k serveru Player pˇripojit. Pˇripojen´ı obstar´a knihovna PlayerClient implementovan´a ve zdrojov´em k´odu ˇr´ıd´ıc´ı aplikace. Pokud pˇri spouˇstˇen´ı serveru Player neud´ame port, na kter´em pak server oˇcek´av´a pˇripojen´ı, je port definov´an na z´akladn´ı hodnotu 6665. Pˇri pˇripojov´an´ı ˇr´ıd´ıc´ı aplikace pak nemus´ıme zad´avat ˇz´adn´ y port a aplikace se pˇripoj´ı na z´akladn´ım portu 6665. Klientskou aplikaci spust´ıme z termin´alu pˇr´ıkazem ./vyhybani a z´ısk´ame simulaci s pˇripojenou ˇr´ıd´ıc´ı aplikac´ı podle obr´azku 12.5. 66
KAPITOLA 12. IMPLEMENTACE APLIKACE
Obr´azek 12.5: Simulov´an´ı vyh´ yb´an´ı se pˇrek´ aˇzk´ am pro Player/Stage
12.3
Porovn´ an´ı zp˚ usob˚ u implementace
Kdyˇz porovn´ame oba zp˚ usoby implementace nov´ ych projekt˚ u, je implementace aplikace v prostˇred´ı Player/Stage jednoduˇsˇs´ı, nicm´enˇe nem´ame ˇz´adn´e pomocn´e n´astroje a vˇsechny soubory mus´ı b´ yt seps´any ruˇcnˇe. Pro sestaven´ı simulaˇcn´ıho prostˇred´ı m˚ uˇzeme jako pomocn´ y n´astroj pouˇz´ıt pouze editor obr´azk˚ u, kter´ y pouˇz´ıv´ame pˇri simulaci prostˇred´ı. V MRDS je nejtˇeˇzˇs´ı sestavit manifest, kter´ y propoj´ı vˇsechny potˇrebn´e sluˇzby dohromady. Je velmi vhodn´e pouˇz´ıt editor DSSME, kter´ y hl´ıd´a vˇsechny z´avislosti a nab´ız´ı pˇrehled jiˇz sestaven´ ych sluˇzeb podle toho kterou sluˇzbu pr´avˇe editujeme. Z tˇechto sluˇzeb m˚ uˇzeme vyb´ırat a vkl´adat je do editovan´eho manifestu. Po uloˇzen´ı manifestu se vˇsechny sluˇzby slouˇc´ı do jednoho souboru, kter´ y pouˇzijeme pˇri spouˇstˇen´ı nov´e sluˇzby. Pokud pouˇz´ıv´ame pro zaloˇzen´ı projektu prostˇred´ı VPL, uˇsetˇr´ıme mnoˇzstv´ı pr´ace s psan´ım k´odu aplikace a oˇsetˇrov´an´ım v´ yjimek. Po tom, co exportujeme projekt z prostˇred´ı VPL do prostˇred´ı MVS, m´ame k dispozici zdrojov´ y k´od, ve kter´em jiˇz m˚ uˇzeme jen vyv´ıjet ˇr´ıd´ıc´ı aplikaci a nemus´ıme importovat knihovny ani oˇsetˇrovat v´ yjimky. Pokud porovn´ame simulaˇcn´ı prostˇred´ı, tak Stage nab´ız´ı hned v z´akladu zobrazen´ı trasy, sledov´an´ı v´ ypoˇctu sn´ım´an´ı laseru, zobrazen´ı detekce a pˇrevodu obr´azku na pˇrek´aˇzky a dalˇs´ı n´astroje, kter´e v prostˇred´ı VSE v z´akladn´ı konfiguraci nejsou a je tˇreba je na67
KAPITOLA 12. IMPLEMENTACE APLIKACE
programovat. Nejvˇetˇs´ı v´ yhodou Stage je to, ˇze se zde velmi rychle implementuje nov´a simulaˇcn´ı sc´ena, pouh´ ym naˇcten´ım obr´azku. V´ yhodou VSE je, ˇze podporuje akceleraˇcn´ı hardware a m˚ uˇzeme prostˇred´ı upravovat s pouˇzit´ım prostˇred´ı MVS. Kdyˇz vytv´aˇr´ıme simulaˇcn´ı prostˇred´ı pomoc´ı MVS, m˚ uˇzeme si VSE upravovat pomoc´ı naprogramov´an´ı nov´ ych funkc´ı. V´ yhodou Player/Stage je jednoduchost programov´an´ı aplikac´ı pouze za pomoc´ı textov´eho editoru. MRDS mus´ı pouˇz´ıvat n´aroˇcnˇejˇs´ı grafick´e n´astroje, protoˇze napˇr´ıklad soubory manifest jsou vˇetˇsinou sloˇzit´e a bylo by opravdu n´aroˇcn´e je sestavovat ruˇcnˇe. Na druhou stranu tyto n´astroje zjednoduˇsuj´ı pr´aci, kter´a je ˇcasovˇe n´aroˇcn´a, napˇr´ıklad hled´an´ı chyb, protoˇze tyto n´astroje hl´ıdaj´ı spr´avnost vytv´aˇren´ ych soubor˚ u.
68
Kapitola 13 Z´ avˇ er C´ılem pr´ace bylo porovn´an´ı dvou prostˇred´ı na ˇr´ızen´ı mobiln´ıch robot˚ u. Porovn´av´ana byla prostˇred´ı Microsoft Robotics Developer Studio bˇeˇz´ıc´ı na platform´ach Windows. Druh´e prostˇred´ı je Player/Stage, kter´e podporuje platformy Linux, Mac OS X, BSD, a dalˇs´ı platformy standardu POSIX. Porovn´av´an´ı se t´ yk´a architektury, instalace prostˇred´ı a aktualizac´ı, podpory pro uˇzivatele, srozumitelnosti dokumentace, podporovan´ ych platforem, pˇrenositelnosti vytvoˇren´ ych aplikac´ı, projekt˚ u pˇri jejichˇz v´ yvoji se obˇe prostˇred´ı pouˇz´ıvaj´ı, ceny prostˇred´ı, zp˚ usobu a v´ yvoje nov´ ych aplikac´ı. Prvn´ı kroky pˇri seznamov´an´ı prostˇred´ı, vyzn´ıvaj´ı ve prospˇech prostˇred´ı Player/Stage, kdyˇz pominu probl´emy s instalac´ı, chybˇej´ıc´ım souborem k´od˚ u barev a ˇspatn´ ym ovladaˇcem, kter´e byly v n´asleduj´ıc´ı verzi odstranˇeny. Pro zaˇc´ateˇcn´ıka jsou vhodnˇejˇs´ı pˇr´ıklady aplikac´ı, kter´e jsou jednoduch´e. Pˇr´ıklady Player/Stage jsou koncipov´any pouze v nˇekolika souborech a jsou tedy pˇrehledn´e. Pˇredpokladem pˇri proch´azen´ı pˇr´ıklad˚ u je z´akladn´ı znalost programov´an´ı. Zaˇc´atky v MRDS jsou koncipovan´e pro prostˇred´ı VPL a pro pouˇzit´ı s re´aln´ ym roboty. Pˇredevˇs´ım se mi zd´alo, ˇze v´ yvoj´aˇri pˇredpokl´adaj´ı pouˇz´ıv´an´ı robota Lego NXT. Po nainstalov´an´ı prostˇred´ı MRDS je dostupn´e velk´e mnoˇzstv´ı r˚ uzn´ ych pˇr´ıklad˚ u, ale jen m´alo pˇr´ıklad˚ u jak si vytvoˇren´ y pˇr´ıklad upravit pro vlastn´ı aplikaci. Simulaˇcn´ı u ´lohy jsou tak´e pˇripraveny v pˇr´ıkladech, ale pro zaˇc´ateˇcn´ıka je vytvoˇren´ı vlastn´ı simulace sloˇzit´a u ´loha. Aˇz pˇri zevrubnˇejˇs´ım zkoum´an´ı prostˇred´ı dokumentace a dalˇs´ıch dostupn´ ych materi´al˚ u je pˇr´ıprava simulaˇcn´ıho prostˇred´ı srozumitelnˇejˇs´ı. Pˇredevˇs´ım chyb´ı souhrnn´ y popis pˇr´ıklad˚ u, kter´ y by napovˇedˇel co vˇsechno je v syst´emu moˇzn´e. V dokumentaci, kde se popisuje prostˇred´ı MRDS pˇrevl´adaj´ı komerˇcn´ı informace, kter´e chv´al´ı produkt a pouˇzit´e prvky syst´emu a jen m´alo informac´ı, kter´e opravdu pˇribl´ıˇz´ı funkci syst´emu. Pˇresto pro zaˇc´ateˇcn´ıky je vhodnˇejˇs´ı prostˇred´ı MRDS, protoˇze obsahuje visu´aln´ı prostˇred´ı VPL, ve 69
´ ER ˇ KAPITOLA 13. ZAV
kter´em se velice pˇrehlednˇe a jednoduˇse sestav´ı jednoduch´e aplikace. Dalˇs´ı v´ yhodou prostˇred´ı MRDS jsou dostupn´e pomocn´e n´astroje. Pro generov´an´ı nov´eho projektu export z prostˇred´ı VPL, nebo n´astrojem DssNewService. D˚ uleˇzit´ y n´astroj je grafick´e prostˇred´ı DSSME, pro sestavov´an´ı manifest˚ u, kter´e dovol´ı prov´adˇet pouze operace, kter´e jsou dovolen´e. Nab´ız´ı sluˇzby, kter´e se vztahuj´ı k dan´e operaci. Prostˇred´ı MRDS nab´ız´ı nˇekolik dalˇs´ıch n´astroj˚ u popsan´ ych v pr´aci, kter´e pouˇz´ıvaj´ı pˇredevˇs´ım v pˇr´ıkazov´e ˇr´adce DSSCP. Pokud by si uˇzivatel poˇrizoval prostˇred´ı pro v´ yrobu aplikac´ı pro komerˇcn´ı u ´ˇcely, je velk´a v´ yhoda poˇr´ıdit si prostˇred´ı pro kter´e je podpora ze strany v´ yrobce. Vzhledem k tomu, ˇze Player/Stage je vyv´ıjen komunitou a dobrovoln´ıky, nen´ı moˇzn´e oˇcek´avat podporu pro Player/Stage v kaˇzd´e situaci. Naproti tomu MRDS se prod´av´a v cenˇe 10 000 Kˇc a zde jiˇz uˇzivatel podporu vyˇzadovat m˚ uˇze, protoˇze je obsahem licenˇcn´ıho ujedn´an´ı. Zpracovan´a pr´ace shrnuje informace z nˇekolika zdroj˚ u do jednoho textu a pˇrin´aˇs´ı subjektivn´ı pohled na pr´aci s v´ yvojov´ ymi prostˇred´ımi. Vzhledem k tomu, ˇze pr´ace byla ps´ana v´ıce neˇz rok mohl jsem sledovat v´ yvoj obou prostˇred´ı. Bˇehem psan´ı pr´ace prostˇred´ı Player/Stage neproˇslo pˇr´ıliˇs velk´ ymi zmˇenami. Chybˇej´ıc´ı ˇc´asti webov´e str´anky jsou celou dobu stejn´e, vyˇsla jedna aktualizace a chov´an´ı prostˇred´ı se nezmˇenilo. Zat´ımco prostˇred´ı MRDS prodˇelalo bouˇrliv´e zmˇeny. Vyˇsly hned tˇri nov´e verze prostˇred´ı, byla zmˇenˇena webov´a str´anka, pˇribylo mnoˇzstv´ı nov´ ych informac´ı na r˚ uzn´ ych webov´ ych str´ank´ach a hlavnˇe pˇribyl v´ıce neˇz dvojn´asobek nov´ ych pˇr´ıklad˚ u pro aplikace. D´ıky dlouh´e historii se prostˇred´ı Player/Stage rozˇs´ıˇrilo hlavnˇe do akademick´e sf´ery, kde pˇrev´aˇzilo nad ostatn´ımi v´ yvojov´ ymi prostˇred´ımi. Katedra kybernetiky na fakultˇe elektrotechnick´e v Praze, kde tato pr´ace vznikala tak´e pouˇz´ıv´a pˇri v´ yvoji prostˇred´ı Player/Stage, proto se pr´ace v´ıce zamˇeˇrila na zkoum´an´ı vlastnost´ı a chov´an´ı v´ yvojov´eho prostˇred´ı MRDS.
70
Literatura [1] Microsoft Corporation. Webov´ a str´ anka Microsoft Robotics Developer Studia [online]. http://www.microsoft.com/robotics/, 2009. [2] Professional Microsoft Robotics Developer Studio. Webov´e str´ anky Professional Microsoft Robotics Developer Studio [online]. http://www.promrds.com/, 2009. [3] Microsoft Corporation. Porovn´an´ı verz´ı Microsoft Robotics Developer Studia [online]. http://www.microsoft.com/robotics/#ProductMatrix, 2009. [4] Microsoft Corporation. Staˇzen´ı Microsoft Robotics Developer Studia [online]. http://msdn.microsoft.com/cs-cz/robotics/aa731520(en-us).aspx. [5] Sun
Webov´ a
Microsystems.
str´ anka
projektu
VirtualBox
[online].
http://www.virtualbox.org, 2009. [6] Microsoft Corporation. Knihovny poskytovan´e Microsoft Robotics Developer Studiem [online]. http://msdn.microsoft.com/en-us/library/microsoft.ccr. adapters.winforms.aspx, 2009. [7] The
Player
Player
[online].
Webov´ a str´ anka knihoven Player [online].
http://
Project.
Webov´ a
str´ anka
projektu
http://playerstage.sourceforge.net/, 2009. [8] The Player Project.
playerstage.sourceforge.net/doc/Player-2.1.0/player/ architecture.html, 2009. [9] Microsoft Corporation. Novinky Microsoft Robotics Developer Studia [online]. http://www.microsoft.com/feeds/msdn/en-us/robotics/rss.xml, 2006. [10] The
[11] Microsoft Corporation. Manu´ al pro Microsoft Robotics Developer Studio [online]. http://msdn.microsoft.com/robotics, 2006. [12] The
Player
Dokumentace
Project.
projektu
Player
[online].
http://playerstage.sourceforge.net/index.php?src=doc, 2009. [13] The Player Project. Webov´ a str´ anka pro nahl´aˇsen´ı chyb v projektu Player [online]. http://sourceforge.net/tracker/?group_id=42445, 2009. [14] Nabble.
Webov´ a
str´ anka
Nabble
f´ orum
[online].
http://www.nabble.com/Player-Stage-Gazebo-f4302.html, 2009. [15] Google. Internetov´y vyhled´avaˇc Google [online]. http://www.google.com, 2009. [16] Kyle Johns and Trevor Taylor. Professional Microsoft Robotics Developer Studio. Wiley Publishing, 2008. [17] Sara Morgan. Programming Microsoft Robotics Developer Studio. Microsoft Press, 2008. ´ˇ ˇ´ıc ˇek. Roboti od LEGA a Microsoft Robotics Developer Studio [online]. [18] Toma s Petr http://www.vyvojar.cz/Articles/429-roboti-od-lega-a-microsoftrobotics-studio.aspx, 2006. [19] Fischertechnik.
http://www.corobot.net/, 2009. [31] SimplySim 3D Simulation Experts. Webov´ a str´ anka firmy SimplySim [online]. http://www.simplysim.net/, 2009.
73
Pˇ r´ıloha A Zkratky pouˇ z´ıvan´ e v textu
i
ˇ ´ILOHA A. ZKRATKY POUZ ˇ´IVANE ´ V TEXTU PR
.NET
dot NET
Programovac´ı platforma Microsoft
API
Application Programming Inter- Rozhran´ı pro programov´an´ı aplikace face
CCR
Concurrency and Coordination Runtime pro soubˇeˇzn´e a koordinovan´e Runtime
aplikace
C#
Csharp
Objektovˇe orientovan´ y jazyk Windows
CTP
Community Technical Preview
Komunitn´ı technick´ y pˇrehled
DSS
Decentralized Software Services
Decentralizovan´e softwarov´e sluˇzby
DSSCP
DSS Command Prompt
DSS pˇr´ıkazov´a ˇr´adka
DSSME
DSS Manifest Editor
Editor manifest souboru
DSSP
DSS Protocol
Protokol DSS sluˇzeb
FSE
FujitsuSiemens Esprimo V5545
Notebook FS Esprimo V5545
GNU
GNU General Public License
vˇseobecn´a veˇrejn´a licence GNU
HTTP
Hypertext Transfer Protokol
Protokol pro pˇrenos data
MRDS
Microsoft
Robotics
Developer Robotick´e v´ yvojov´e studio
Studio MSDNAA MSDN Academic Aliance
v r´amci licence mohou studenti bezplatnˇe pouˇz´ıvat software od firmy Microsoft
REST
Representational state transfer
Styl softwarov´e architektury pro distribuovan´e syst´emy jako je WWW
SLAM
Simultaneous Localisation And Algoritmus souˇcasn´e lokalizace a maMapping
pov´an´ı
SOAP
Simple Object Access Protocol
Protokol pro v´ ymˇenu zpr´av zaloˇzen´ ych na XML pˇres s´ıt’, hlavnˇe pomoc´ı http
Tcl
Tcl
programovac´ı jazyk zaloˇzen´ y na Lispu
URI
Uniform Resource Identifier
Jednotn´ y identifik´ator zdroje
VPL
Visual Programming Language
Vizu´aln´ı programovac´ı jazyk v RDS
VSE
Visual Simulation Environment
Simulaˇcn´ı prostˇred´ı pro roboty
WPF
Windows Presenation Framework Knihovna pro vytv´aˇren´ı grafick´eho rozhran´ı Tabulka A.1: Zkratky pouˇz´ıvan´e v textu
ii
Pˇ r´ıloha B Zdrojov´ y k´ od vyh´ yb´ an´ı se pˇ rek´ aˇ zk´ am - MRDS ˇ C´ ast aplikace pro ˇ r´ ızen´ ı robota v prostˇ red´ ı MRDS // Import potˇ rebn´ ych knihoven s robotick´ ymi sluˇ zbami using System; using System.Collections.Generic; using System.ComponentModel; using System.Xml; using ccr = Microsoft.Ccr.Core; using dss = Microsoft.Dss.Core; using dssa = Microsoft.Dss.Core.Attributes; using dssh = Microsoft.Dss.Core.DsspHttp; using dssm = Microsoft.Dss.ServiceModel.DsspServiceBase; using dssp = Microsoft.Dss.ServiceModel.Dssp; using soap = W3C.Soap; using submgr = Microsoft.Dss.Services.SubscriptionManager; using drive = Microsoft.Robotics.Services.Drive.Proxy; using sicklrf = Microsoft.Robotics.Services.Sensors.SickLRF.Proxy; namespace Robotics.Vyhybani.Diagram { [DisplayName("Vyhybani")]
/// Jm´ eno sluˇ zby
[Description("Robot se vyh´ yb´ a pˇ rek´ aˇ zk´ am")] iii
// Popis sluˇ zby
ˇ ´ILOHA B. ZDROJOVY ´ KOD ´ VYHYB ´ AN ´ ´I SE PREK ˇ ´ ZK ˇ AM ´ - MRDS PR A
[dssa.Contract(Contract.Identifier)] public class DiagramService : dssm.DsspServiceBase { // Inicializace stavu aplikace [dssa.InitialStatePartner(Optional = true)] private DiagramState _state; // Port pro sluˇ zby, lze se na nˇ ej pˇ ripojit v internetov´ em // prohl´ ıˇ zeˇ ci na http://localhost/Vyhybani [dssa.ServicePort("/Vyhybani", AllowMultipleInstances = true)] private DiagramOperations _mainPort = new DiagramOperations(); // Port pro zabezpeˇ cenou komunikaci, pˇ rihl´ aˇ sen´ ı vyˇ zaduje zadat //
heslo Windows pro prohl´ ıˇ zen´ ı v internetov´ em prohl´ ıˇ zeˇ ci
[dssa.Partner("SubMgr", Contract = submgr.Contract.Identifier, CreationPolicy = dssa.PartnerCreationPolicy.CreateAlways)] private submgr.SubscriptionManagerPort _subMgr = new submgr.SubscriptionManagerPort(); // Definice pro spojen´ ı s laserov´ ym mˇ eˇ riˇ ce // Partner: SimulatedLaserRangeFinder // Contract: http://schemas.microsoft.com/xw/2005/12/sicklrf.html [dssa.Partner("SimulatedLaserRangeFinder", Contract = sicklrf.Contract.Identifier, CreationPolicy = dssa.PartnerCreationPolicy.UsePartnerListEntry)] sicklrf.SickLRFOperations _simulatedLaserRangeFinderPort = new sicklrf.SickLRFOperations(); sicklrf.SickLRFOperations _simulatedLaserRangeFinderNotify = new sicklrf.SickLRFOperations(); //Definice pro spojen´ ı s n´ apravou robota s dvˇ ema motory //Partner: SimulatedGenericDifferentialDrive //Contract:http://schemas.microsoft.com/robotics/2006/05/drive.html iv
ˇ ´ILOHA B. ZDROJOVY ´ KOD ´ VYHYB ´ AN ´ ´I SE PREK ˇ ´ ZK ˇ AM ´ - MRDS PR A
[dssa.Partner("SimulatedGenericDifferentialDrive", Contract = drive.Contract.Identifier, CreationPolicy = dssa.PartnerCreationPolicy.UsePartnerListEntry)] drive.DriveOperations _simulatedGenericDifferentialDrivePort = new drive.DriveOperations(); // Vytvoˇ ren´ ı portu pro komunikaci public DiagramService(dssp.DsspServiceCreationPort creationPort) : base(creationPort) {} // Hlavn´ ı metoda, kter´ a inicializuje celou aplikaci protected override void Start() {
// Pokud nen´ ı ˇ z´ adn´ y partner pro inicializaci, stav bude null
if (_state == null) { // Stav sluˇ zby mus´ ı b´ yt vytvoˇ ren
pˇ red t´ ım, neˇ z se spust´ ı
// pos´ ıl´ an´ ı zpr´ av mezi procesy _state = new DiagramState(); } // Zbytek startovn´ ıho procesu poˇ zaduje schopnost ˇ cekat na odezvy // od sluˇ zeb a od spouˇ stˇ ec´ ıho handleru, pokud nˇ ejak´ y existuje. SpawnIterator(DoStart); } /// Start aplikace. Vrac´ ı chybu aplikace, pokud se vyskytne private IEnumerator DoStart() {
soap.Fault fault = null;
// Pˇ ripojen´ ı k partner˚ um yield return ccr.Arbiter.Choice( _simulatedLaserRangeFinderPort.Subscribe (_simulatedLaserRangeFinderNotify, typeof(sicklrf.Replace) ), EmptyHandler, delegate(soap.Fault f) v
ˇ ´ILOHA B. ZDROJOVY ´ KOD ´ VYHYB ´ AN ´ ´I SE PREK ˇ ´ ZK ˇ AM ´ - MRDS PR A
private void StartHandlers() { // Aktivace zpr´ av pro manipulaci se sluˇ zbami base.Start();
}
// Manipul´ atory pro ˇ r´ ıd´ ıc´ ı zpr´ avy IEnumerator SimulatedLaserRangeFinderReplaceHandler(sicklrf.Replace message) { OnSimulatedLaserRangeFinderReplaceHandler handler = new OnSimulatedLaserRangeFinderReplaceHandler(this, Environment.TaskQueue); return handler.RunHandler(message); } // Vlastn´ ı ˇ r´ ıd´ ıc´ ı aplikace/// ˇ´ // R ıd´ ı robota tak, aby nenarazil do pˇ rek´ aˇ zky odboˇ cil na voln´ e m´ ısto class OnSimulatedLaserRangeFinderReplaceHandler : HandlerBase { public OnSimulatedLaserRangeFinderReplaceHandler( DiagramService service, ccr.DispatcherQueue queue) : base(service, queue) vi
ˇ ´ILOHA B. ZDROJOVY ´ KOD ´ VYHYB ´ AN ´ ´I SE PREK ˇ ´ ZK ˇ AM ´ - MRDS PR A
{} public IEnumerator RunHandler(sicklrf.Replace message) { // Z´ ısk´ an´ ı vzd´ alenosti z ˇ cidla vzd´ alenosti. Vyberou se // dva body pod ´ uhlem 45◦ na pˇ redku robota // podle kter´ ych se uh´ yb´ a robot pˇ red pˇ rek´ aˇ zkami ve //vzd´ alenosti 1500mm pˇ red pˇ rek´ aˇ zkou. if (((
// Uh´ yb´ an´ ı pˇ red pˇ rek´ aˇ zkou doleva
message.Body.DistanceMeasurements[ (message.Body.DistanceMeasurements.Length / 8) * 3]) > (message.Body.DistanceMeasurements[ (message.Body.DistanceMeasurements.Length / 8) * 5])) && ((message.Body.DistanceMeasurements[ (message.Body.DistanceMeasurements.Length / 8) * 5]) < 1500)) { // Pˇ ri pˇ ribl´ ıˇ zen´ ı se k pˇ rek´ aˇ zce, kter´ a je zprava, zatoˇ c´ ı // o ´ uhel 45◦ na levou stranu, // pˇ ri uh´ yb´ an´ ı sn´ ıˇ z´ ı rychlost na 60%, aby se nepˇ revr´ atil drive.RotateDegreesRequest request = new drive.RotateDegreesRequest(); request.Power = 0.3D;
// rychlost na 30% maxima
request.Degrees = (double)-40;
// zatoˇ cen´ ı na levou stranu
// zaps´ an´ ı pˇ r´ ıkazu do robota SimulatedGenericDifferentialDrivePort.RotateDegrees(request); } else if (((
ˇ ´ILOHA B. ZDROJOVY ´ KOD ´ VYHYB ´ AN ´ ´I SE PREK ˇ ´ ZK ˇ AM ´ - MRDS PR A
{ // Pˇ ri pˇ ribl´ ıˇ zen´ ı se k pˇ rek´ aˇ zce, kter´ a je zleva, zatoˇ c´ ı o ´ uhel // 45◦ na pravou stranu, // pˇ ri uhyb´ an´ ı sn´ ıˇ z´ ı rychlost na 60%, aby se nepˇ revr´ atil drive.RotateDegreesRequest requestA = new drive.RotateDegreesRequest(); requestA.Power = 0.3D;
// rychlost na 30% maxima
requestA.Degrees = (double)40;
// zatoˇ cen´ ı na pravou stranu
SimulatedGenericDifferentialDrivePort.RotateDegrees(requestA); } else { // Pokud nen´ ı ˇ z´ adn´ a pˇ rek´ aˇ zka v dosahu jede robot pˇ r´ ım´ ym smˇ erem drive.SetDrivePowerRequest requestB = new drive.SetDrivePowerRequest(); requestB.RightWheelPower = 0.5D; requestB.LeftWheelPower = 0.5D;
// rychlost pˇ ri pˇ r´ ım´ em pohybu // rychlost pˇ ri pˇ r´ ım´ em pohybu
SimulatedGenericDifferentialDrivePort.SetDrivePower(requestB); } // Odeˇ sle kompletn´ ı pˇ r´ ıkaz do robota base.Complete.Post(ccr.EmptyValue.SharedInstance); yield break; } class JoinAlpha // Funkce pro z´ apis rychlosti do robota { public string LeftWheelPower; public string RightWheelPower; public JoinAlpha() {} public JoinAlpha(object[] args) { LeftWheelPower = args[0].ToString(); RightWheelPower = args[1].ToString(); } viii
ˇ ´ILOHA B. ZDROJOVY ´ KOD ´ VYHYB ´ AN ´ ´I SE PREK ˇ ´ ZK ˇ AM ´ - MRDS PR A
} // Vytvoˇ ren´ ı portu pro z´ apis rychlosti do robota ccr.Port