´ Fakulta Elektrotechnicka ˇ CVUT v Praze
´r ˇska ´ pra ´ ce Bakala
N´ avrh ˇ r´ıd´ıc´ı architektury bezpilotn´ıho vrtuln´ıku LinkQuad
Autor: ˇ´ık Michal Zajac
ˇ Skolitel: Ing. Milan Rollo, Ph.D.
Prohlaseni autora prace
Prohlasuji, ze jsem pfedlozenou praci vypracoval samostatne a ze jsem uvedl veskere pouzite informacni zdroje v souladu s Metodickym pokynem o dodrzovani etickych principu pfi pffprave vysokoskolskych zaverecnych praci.
VPraze dne
..?9..:l:..Wl.
Podpis autora prace
Podˇ ekov´ an´ı Na tomto m´ıstˇe bych r´ ad podˇekoval m´emu vedouc´ımu, Ing. Milanu Rollovi, Ph.D., za pˇr´ıkladn´e veden´ı, podporu a ochotu ke konzultac´ım bˇehem tvorby m´e pr´ace. Dalˇs´ı d´ıky vˇenuji sv´e rodinˇe a vˇsem pˇr´ atel˚ um za neust´avaj´ıc´ı podporu nejen bˇehem psan´ı t´eto pr´ace, ale bˇehem cel´eho studia. Bez nich bych mˇel mnohem vˇetˇs´ı pot´ıˇze svou pr´aci a studium dokonˇcit.
Abstrakt C´ılem t´eto pr´ ace je n´ avrh ˇr´ıd´ıc´ı architektury pro bezpilotn´ı ˇctyˇrrotorov´ y vrtuln´ık LinkQuad s ohledem na moˇznost jeho vyuˇzit´ı pˇri verifikaci vlastnost´ı algoritm˚ u pro pl´anov´an´ı taktick´ ych mis´ı postaven´ ych nad syst´emem ˇ AgentFly. Tento syst´em vyv´ıjen´ y v Centru Agentn´ıch Technologi´ı, FEL, CVUT v Praze umoˇzn ˇuje simulaci a ˇr´ızen´ı t´ ym˚ u bezpilotn´ıch prostˇredk˚ u a to jak virtu´aln´ıch, tak i re´aln´ ych. LinkQuad je uzavˇren´a platforma ˇ edsko. vybaven´ a pokroˇcil´ ym autopilotem a pˇr´ıdavn´ ymi palubn´ımi poˇc´ıtaˇci vyv´ıjen´a firmou UAS Technologies Sv´ Z uˇzivatelsk´eho hlediska vˇsak poskytuje jen z´akladn´ı letov´e funkce a pro jej´ı integraci do st´avaj´ıc´ıho syst´emu bylo nutn´e navrhnout a implementovat architekturu, kter´a by umoˇznila interakci s autoplilotem LinkBoard, autonomn´ı pl´ anov´ an´ı letov´ ych trajektori´ı, interakci s uˇzivatelem a komunikaci s ostatn´ımi entitami v syst´emu. Navrˇzen´e moduly byly implementov´ any v programovac´ım jazyku Java a bˇeˇz´ı na pˇr´ıdavn´em palubn´ım poˇc´ıtaˇci Gumstix a pozemn´ım ˇr´ıd´ıc´ım pracoviˇsti. Vlastnosti a funkcionalita navrˇzen´e architektury byly ovˇeˇreny sadou letov´ ych test˚ u.
Abstract Goal of this thesis is to design a control architecture for unmanned quadcopter LinkQuad considering its use for verification of features of algorithms for tactical mission planning build on the AgentFly system. This system, developed at Agent Technology Center, FEE, CTU in Prague, allows simulation and control of teams of autonomous UAVs both virtual and real ones. LinkQuad is a closed platform equipped with advanced autopilot and additional onboard computers, developed by UAS Technologies Sweden. From the user’s point of view it offers only some basic flight functions and for its integration into an existing system it was necessary to design and implement architecture which will allow interaction with LinkBoard autopliot, autonomous flight trajectory planning, interaction with human user and communication with other entities. Designed modules were implemented in Java programming language and run on Gumstix onboard computer and ground station. Functionality and features of designed architecture were verified by a set of flight experiments.
Ceske vysoke uceni technicke v Praze Fakulta elektrotechnicka Katedra kybernetiky
ZADANI BAKALARSKE P R A C E Student:
Michal
Zajacik
Studijni program:
Otevfena informatika (bakalafsky)
Obor:
Informatika a pocitacove vedy
Nazev tematu:
Navrh fidici architektury pro bezpilotni vrtulnik LinkQuad
Pokyny pro vypracovani: 1. Seznamte se s fidici architekturou bezpilotniho vrtulniku LinkQuad. 2. Implementujte v programovacim jazyku Java komunikacni protokol pro pfenos datovych a fidicfch informaci mezi autopilotem LinkBoard a palubnim pocitacem Gumstix. 3. Navrhnete a implementujte model vrtulniku v simulacnim prostfedi AgentFly. 4. Navrhnete a implementujte architekturu zajist'ujicf autonomni planovani a vykonavani letovych trajektorii. 5. Experimentalne overte vlastnosti navrzene planovaci a fidici architektury v simulacnim prostfedi a na realnem bezpilotnim prostfedku.
Seznam odborne literatury: Doda vedouci prace.
Vedoucf bakalarske prace: Ing. Milan Rollo, Ph.D. Platnost zadani: do konce zimniho semestru 2012/2013
V Praze dne 9. 1.2012
Obsah ´ 1 Uvod
1
1.1
Motivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
C´ıl pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Struktura pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Bezpilotn´ı leteck´ e prostˇ redky
3
2.1
Bezpilotn´ı letadla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Klasifikace bezpilotn´ıch prostˇredk˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˇ rrotorov´e vrtuln´ıky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ctyˇ
4
2.3.1
6
2.3
Osy a u ´hly n´ aklonu ˇctyˇrvrtulov´e helikopt´ery . . . . . . . . . . . . . . . . . . . . . . . . . .
3 LinkQuad 3.1
3.2
3.3
5
7
Fyzick´e vlastnosti a hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.1.1
Fyzick´e vlastnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.1.2
Hardwarov´ a platforma a senzory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.1.3 Uˇzivatelsk´ y poˇc´ıtaˇc Gumstix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ˇ R´ıd´ıc´ı mechanismy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ˇ ıd´ıc´ı smyˇcky CMCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.1 R´ 3.2.2
Letov´e m´ ody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3
Komunikace se syst´emem LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Softwarov´e vybaven´ı syst´emu LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.1
Angstr¨ om linux a Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.2
LinkGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.3
Konfigurace LinkBoardu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.4
Vnitˇrn´ı kontroln´ı smyˇcky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.5
Vnˇejˇs´ı kontroln´ı smyˇcky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.6
Mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.7
Syst´em veden´ı z´ aznamu o letu
3.3.8
Start syst´emu LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.9
Uk´ azky konfigurace autopilotu LinkBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 N´ avrh architektury vyˇ sˇ s´ı ˇ r´ıd´ıc´ı vrstvy
19
ˇ ıd´ıc´ı software AgentFly 5 R´
20
I
5.1
5.2
AgentFly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.1.1
Simulace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1.2
Pl´ anov´ an´ı trajektorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1.3
Detekce kolizn´ıch situac´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.4
Shrnut´ı vlastnost´ı syst´emu AgentFly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Multi-agentn´ı platforma AGlobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2.1
Architektura syst´emu AGlobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6 Architektura vyˇ sˇ s´ı ˇ r´ıd´ıc´ı vrstvy 6.1
24
Realizace entity bezpilotn´ıho syst´emu LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7 Implementace komunikace a letov´ eˇ r´ıd´ıc´ı funkce
27
7.1
Komunikaˇcn´ı server LinkQuadGXsrvr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.2
Z´ akladn´ı struktura programu LinkQuadGXsrvr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.3
serialComm3: C socket server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.4
Hlavn´ı ˇr´ıd´ıc´ı funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.5
Pˇrij´ım´ an´ı paket˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ˇ Z´ adosti o promˇenn´e a z´ apis uˇzivatelsk´ ych parametr˚ u . . . . . . . . . . . . . . . . . . . . . . . . . 30 ˇ R´ıd´ıc´ı funkce letu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.6 7.7
7.7.1
Funkce letu po pˇr´ımce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.7.2
Funkce rotace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8 Experimenty
33
8.1
V simulaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.2
Na re´ aln´em HW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 8.2.1
Vnitˇrn´ı prostˇred´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.2.2
Vnˇejˇs´ı prostˇred´ı: manu´ aln´ı reˇzim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.2.3
Vnˇejˇs´ı prostˇred´ı: vzn´ aˇsen´ı a let po pˇr´ımce . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
9 Zhodnocen´ı v´ ysledk˚ u a smˇ ery dalˇ s´ıho v´ yvoje
40
9.1
Zhodnocen´ı dosaˇzen´ ych v´ ysledk˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.2
Smˇery dalˇs´ıho v´ yvoje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
10 Obsah pˇ riloˇ zen´ eho CD
41
II
Seznam obr´ azk˚ u 2.1
Uk´ azka UAV letoun˚ u. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Schiebel S-100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.3
Bell XV-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.4
5
2.5
Smˇer rotac´ı vrtul´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ Uhly a osy ˇctyˇrrotov´e helikopt´ery, pˇrevzato z [Kivrak–06] . . . . . . . . . . . . . . . . . . . . . .
6
3.1
Helikopt´era LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.2
Architektura bezpilotn´ıho syst´emu LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.3
Architektura autopilotu LinkBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.4
Zasazen´ı LinkBoard do helikopt´ery LinkQuad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.5
Gumstix Overo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.6
V´ ypis souboru /proc/cpuinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.7
V´ ypis souboru /proc/meminfo
3.8
Hierarchie ˇr´ıd´ıc´ıch smyˇcek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.9
Vzhled LinkGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.10 Nastaven´ı vnitˇrn´ıch smyˇcek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.11 Nastaven´ı vnˇejˇs´ıch smyˇcek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.12 Uk´ azka nastaven´ı mixeru
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1
Sch´ema architektury vyˇsˇs´ı ˇr´ıd´ıc´ı vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2
Sch´ema vnitˇrn´ı architektury vyˇsˇs´ı ˇr´ıd´ıc´ı vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.1
Grafick´ a komponenta AgentFly - napl´anovan´a mise . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2
Grafick´ a komponenta AgentFly - vizualizace trajektorie letounu . . . . . . . . . . . . . . . . . . . 22
5.3
Grafick´ a komponenta AgentFly - vizualizace letounu . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.4
Architektura syst´emu AGlobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.1
Sch´ema vyˇsˇs´ı ˇr´ıd´ıc´ı architektury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.1
Z´ akladn´ı struktura programu LinkQuadGXsrvr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2
Optim´ aln´ı v´ yvoj rychlosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.3
Trajektorie a referenˇcn´ı (kontroln´ı) bod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.4
Zobrazen´ı naˇcten´ ych senzorov´ ych veliˇcin pomoc´ı LinkQuadGXsrvru . . . . . . . . . . . . . . . . 32
7.5
Uk´ azka v´ ystupu LinkQuadGXsrvru pˇri zad´an´ı pokynu k letu . . . . . . . . . . . . . . . . . . . . 32
8.1
Fotografie bezpilotn´ıho syst´emu LinkQuad za letu III
. . . . . . . . . . . . . . . . . . . . . . . . . . 35
8.2
Uk´ azka rozptylu pozice pˇri automatick´em udrˇzov´an´ı polohy . . . . . . . . . . . . . . . . . . . . . 35
8.3
Uk´ azka rozptylu v´ yˇsky pˇri automatick´em udrˇzov´an´ı polohy ve vˇetru. . . . . . . . . . . . . . . . . 36
8.4
Z´ aznam pr˚ uletu trajektorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.5
Z´ aznam v´ yvoje rychlosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.6
Z´ aznam v´ yvoje nadmoˇrsk´e v´ yˇsky pˇri pr˚ uletu trajektorie. . . . . . . . . . . . . . . . . . . . . . . . 37
8.7
Z´ aznam druh´eho pr˚ uletu trajektorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.8
Z´ aznam v´ yvoje rychlosti pˇri druh´em pr˚ uletu trajektorie. . . . . . . . . . . . . . . . . . . . . . . . 38
8.9
Z´ aznam v´ yvoje nadmoˇrsk´e v´ yˇsky pˇri druh´em pr˚ uletu trajektorie. . . . . . . . . . . . . . . . . . . 39
IV
Kapitola 1
´ Uvod V posledn´ıch letech prudce stoup´ a poˇcet bezpilotn´ıch leteck´ ych prostˇredk˚ u (unmanned aerial vehicles - UAV) nasazen´ ych jak v civiln´ıch, tak i ve vojensk´ ych oblastech. Bezpilotn´ı letouny jsou v souˇcasn´e dobˇe ˇr´ızeny na d´ alku pozemn´ı obsluhou a to bud’ pomoc´ı satelit˚ u (v pˇr´ıpadˇe velk´ ych letoun˚ u), nebo pomoc´ı radiov´ ych vys´ılaˇc˚ u. Oproti letoun˚ um s lidskou pos´ adkou jsou jejich hlavn´ımi v´ yhodami zejm´ena niˇzˇs´ı provozn´ı n´aklady, poˇrizovac´ı cena a menˇs´ı n´ aroky na v´ ycvik jejich obsluhy. Koneˇcn´ ym c´ılem v´ yzkumu bezpilotn´ıch prostˇredk˚ u je umoˇznit ˇc´ast u ´loh ˇr´ızen´ı pˇresunout pˇr´ımo na palubn´ı poˇc´ıtaˇce bezpilotn´ıch prostˇredk˚ u a t´ım usnadnit pr´aci oper´ator˚ um odpovˇedn´ ym za ˇr´ızen´ı mise. Prostˇredky by mˇely b´ yt schopny samostatnˇe napl´ anovat nejefektivnˇejˇs´ı trasu pro splnˇen´ı zadan´ ych u ´kol˚ u, pˇriˇcemˇz berou v potaz i pˇr´ıpadn´e pˇrek´ aˇzky, jako jsou budovy nebo hory a d´ale i vliv poˇcas´ı, zejm´ena vˇetru. Souˇc´ ast´ı v´ yzkumu jsou tak´e algoritmy zamˇeˇren´e na spolupr´aci ve skupinˇe takov´ ych letoun˚ u, kdy prostˇrednictv´ım jednoho pozemn´ıho pracoviˇstˇe bude moˇzn´e ovl´adat v´ıce letoun˚ u souˇcasnˇe. Letouny si budou moci vz´ ajemnˇe zas´ılat sv´e letov´e pl´ any, s pˇredstihem detekovat kolizn´ı situace a vyh´ ybat se bez z´asahu oper´ator˚ u. Bezpilotn´ı leteck´e prostˇredky mohou m´ıt ˇradu podob. Kromˇe letoun˚ u existuj´ı prostˇredky spadaj´ıc´ı do kategorie VTOL (Vertical Take Off and Landing), tedy prostˇredk˚ u schopn´ ych vertik´aln´ıho startu a pˇrist´an´ı. Vˇetˇsinou se jedn´ a o helikopt´ery a jejich r˚ uzn´e typy, ale nach´az´ı se zde i letouny speci´aln´ı konstrukce, jako je napˇr´ıklad proudov´ y letoun Harrier. Tato kategorie leteck´ ych prostˇredk˚ u pˇrin´aˇs´ı ˇradu nov´ ych probl´em˚ u. Vˇetˇsina z nich se t´ yk´ a pˇredevˇs´ım stabilizace polohy, ale z´ aroveˇ n je nutn´e vyvinout nov´e zp˚ usoby pl´anov´an´ı letu, kter´e zohledn´ı specifick´e vlastnosti tˇechto prostˇredk˚ u, jako je schopnost zcela se zastavit a vzn´aˇset se na m´ıstˇe ˇci klesat a stoupat v kolm´em smˇeru.
1
1.1
Motivace
ˇ Hlavn´ı motivac´ı pro tuto pr´ aci je nejnovˇejˇs´ı v´ yzkum v Centru agentn´ıch technologi´ı (ATG) na FEL, CVUT v Praze, zamˇeˇren´ y na oblast bezpilotn´ıch prostˇredk˚ u a r˚ uzn´ ych aplikaˇcn´ıch sc´en´aˇr˚ u, kter´e tyto prostˇredky vyuˇz´ıvaj´ı. V posledn´ı dobˇe roste d˚ uraz na praktick´e ovˇeˇren´ı vlastnost´ı algoritm˚ u pro distribuovan´e pl´ anov´ an´ı t´ ymov´ ych mis´ı. Ty byly dosud testov´ any pouze v simulaˇcn´ım prostˇred´ı AgentFly, kter´e vˇsak nepostihuje vˇsechny aspekty spojen´e s pˇrechodem k re´ aln´emu nasazen´ı. Z tohoto d˚ uvodu byly poˇr´ızeny re´aln´e bezpilotn´ı prostˇredky Procerus (letoun typu samokˇr´ıdlo) a LinkQuad (ˇctyˇrrotorov´ y vrtuln´ık). Tyto bezpilotn´ı prostˇredky jsou vybaven´e autopiloty s moˇznost´ı GPS navigace a komunikace s pozemn´ım pracoviˇstˇem. Tato u ´roveˇ n ˇr´ızen´ı ovˇsem nepostaˇcuje pro pl´ anov´ an´ı komplexn´ıch mis´ı, proto je nezbytn´e vyvinout vyˇsˇs´ı ˇr´ıd´ıc´ı vrstvu, kter´a by umoˇznila jak autonomn´ı pl´ anov´ an´ı letov´ ych trajektori´ı v dynamick´em prostˇred´ı, tak i interakci s ostatn´ımi jednotkami v r´ amci plnˇen´ı t´ ymov´ ych mis´ı. Syst´em klade d˚ uraz i na interakci s uˇzivatelem prostˇrednictv´ım grafick´eho rozhran´ı pozemn´ıho pracoviˇstˇe, kter´e umoˇzn ˇuje ovl´ adat jak jednotliv´e bezpilotn´ı prostˇredky, tak i zad´avat glob´ aln´ı c´ıle cel´ ym t´ ym˚ um.
1.2
C´ıl pr´ ace
Platforma LinkQuad umoˇzn ˇuje kromˇe ruˇcn´ıho ovl´ad´an´ı pˇres RC vys´ılaˇc i z´akladn´ı bezpilotn´ı operaci hovering, ˇcesky udrˇzen´ı polohy dle senzor˚ u. C´ılem je usnadnit obsluhu vrtuln´ıku, automatizovat let a t´ım umoˇznit prov´ adˇen´ı sloˇzitˇejˇs´ıch mis´ı i ovl´ ad´ an´ı v´ıce stroj˚ u nar´az. Proto nad z´akladn´ı ˇr´ıd´ıc´ı strukturou n´ızk´e u ´rovnˇe budou vystavˇeny vyˇsˇs´ı vrstvy, kter´e ve fin´ aln´ı podobˇe umoˇzn´ı uˇzivateli zadat letov´ y pl´an, n´aslednˇe autonomnˇe napl´ anuj´ı trajektorii vzhledem k fyzik´ aln´ım omezen´ım vrtuln´ıku a pˇrek´aˇzk´am a celou trajektorii prolet´ı.
1.3
Struktura pr´ ace
Cel´ a pr´ ace je strukturov´ ana n´ asleduj´ıc´ım zp˚ usobem. V druh´e kapitole budou pˇredstaveny bezpilotn´ı leteck´e prostˇredky a v jejich r´ amci i bezpilotn´ı vrtuln´ıky. Tˇret´ı kapitola se bude vˇenovat popisu konkr´etn´ı pouˇzit´e ˇ platformy - bezpilotn´ımu syst´emu LinkQuad - jak po hardwarov´e, tak softwarov´e str´ance. Ctvrt´ a kapitola pˇredstav´ı n´ avrh architektury vyˇsˇs´ı ˇr´ıd´ıc´ı vrstvy helikopt´ery. V p´at´e kapitole bude pˇredstaven ˇr´ıd´ıc´ı software AgentFly. N´ asleduj´ıc´ı ˇsest´ a kapitola se bude vˇenovat konkr´etn´ımu n´avrhu propojen´ı syst´emu LinkQuad s ˇr´ıd´ıc´ım softwarem AgentFly. Sedm´ a kapitola se bude zab´ yvat implementac´ı naˇc´ıt´an´ı a zpracov´an´ı dat ze senzor˚ u a jejich re´ aln´ ym uplatnˇen´ım pˇri n´ avrhu ˇr´ıd´ıc´ı funkce letu helikopt´ery po pˇr´ımce. Osm´a kapitola se vˇenuje experiment˚ um s bezpilotn´ım syst´emem LinkQuad a posledn´ı dev´at´a kapitola shrne dosaˇzen´e v´ ysledky a vytyˇc´ı prostor pro budouc´ı pr´ aci.
2
Kapitola 2
Bezpilotn´ı leteck´ e prostˇ redky 2.1
Bezpilotn´ı letadla
Jak jiˇz bylo ˇreˇceno v u ´vodu, UAV (nˇekdy t´eˇz dron), je bezpilotn´ı leteck´ y prostˇredek, tj. letoun bez lidsk´e pos´ adky na palubˇe. Je ˇr´ızen vˇetˇsinou na d´ alku lidsk´ ym oper´atorem ze zemˇe nebo dokonce z jin´eho dopravn´ıho prostˇredku, a to pomoc´ı r´ adiov´ ych vys´ılaˇc˚ u ˇci satelitn´ıho spojen´ı. V prvn´ım pˇr´ıpadˇe je dosah omezen na nˇekolik kilometr˚ u od ˇr´ıd´ıc´ıho centra, v tom druh´em je moˇzn´e ovl´adat letouny v rozsahu cel´e zemˇekoule. Pozemn´ı obsluha plnˇe odpov´ıd´ a za bezpeˇcnost provozu letoun˚ u, ˇr´ıd´ı jejich letovou trajektorii a z´aroveˇ n pln´ı pˇredem stanoven´e u ´koly. Z paluby letounu vybaven´eho elektronick´ ymi senzory, kamerami, palubn´ımi poˇc´ıtaˇci a komunikaˇcn´ımi zaˇr´ızen´ımi dost´ av´ a pozemn´ı obsluha u ´pln´e informace o dˇen´ı v okol´ı letounu a na jejich z´akladˇe se rozhoduje, jak nejl´epe zadan´e u ´koly plnit. V´ yhodou pouˇzit´ı bezpilotn´ıch letoun˚ u je krom n´ızk´ ych poˇrizovac´ıch a provozn´ıch n´aklad˚ u sn´ıˇzen´ı n´ arok˚ u na pozemn´ı obsluhu. Letouny je tak moˇzn´e pouˇz´ıt v mnohem ˇsirˇs´ım spektru aplikac´ı, kde nasazen´ı klasick´ ych letadel nen´ı moˇzn´e z d˚ uvod˚ u infrastruktury nutn´e k zajiˇstˇen´ı jejich provozu (napˇr. letiˇstˇe s dostateˇcnˇe dlouh´ ymi drahami). Velk´e bezpilotn´ı letouny urˇcen´e pro pr˚ uzkum ter´enu ˇci monitorov´an´ı meteorologick´ ych podm´ınek mohou b´ yt ve vzduchu na rozd´ıl od lidsk´e pos´adky nepˇretrˇzitˇe i nˇekolik dn´ı. Pozemn´ı obsluha se m˚ uˇze v ovl´ ad´ an´ı letoun˚ u v pravideln´ ych intervalech stˇr´ıdat, sniˇzuje se stres a u ´nava a t´ım tak´e kles´a moˇznost pochyben´ı vlivem lidsk´eho faktoru. Jeden letoun tak v souˇcasnosti typicky ovl´ad´a nˇekolik oper´ator˚ u, kteˇr´ı odpov´ıdaj´ı za jeho pilot´aˇz, zpracov´ an´ı informac´ı z paluby, pˇr´ıpadnˇe pl´ anov´ an´ı a kontrolu plnˇen´ı mis´ı. Posledn´ı technologick´e trendy vˇsak ukazuj´ı snahu co nejv´ıce ˇr´ıd´ıc´ıch u ´kon˚ u prov´ adˇet automaticky a v kooperaci s ostatn´ımi letouny, prostˇrednictv´ım poˇc´ıtaˇc˚ u pˇr´ıtomn´ ych na palubˇe UAV. Existuje ˇrada typ˚ u bezpilotn´ıch letoun˚ u, mohou jimi b´ yt jak letadla, tak vrtuln´ıky r˚ uzn´ ych velikost´ı a se specifickou v´ ybavou uzp˚ usobenou potˇreb´ am konkr´etn´ı mise. Sluˇzeb UAVs v souˇcasnosti vyuˇz´ıv´a hlavnˇe arm´ ada, ale v menˇs´ı m´ıˇre se zaˇc´ın´ a nach´ azet i civiln´ı uplatnˇen´ı, napˇr´ıklad pˇri monitorov´an´ı poˇz´ar˚ u, pr˚ uzkumu, lokalizaci osob a pˇri kontrol´ ach veden´ı elektˇriny, ropy, ˇci plynu. UAVs obecnˇe se tedy nasazuj´ı hlavnˇe v situac´ıch, kter´e jsou pro letouny norm´ aln´ı velikosti s pos´ adkou pˇr´ıliˇs rizikov´e a nebezpeˇcn´e, nebo pro kter´e je provoz velk´ ych letoun˚ u pˇr´ıliˇs n´ akladn´ y. Fotografie r˚ uzn´ ych UAVs jsou na obr´azc´ıch 2.1 a 2.2, fotografie pˇrejaty z [Wikipedia–12].
Obr´ azek 2.1: Uk´ azky n´ amoˇrnictva USA
UAV
letoun˚ u
Obr´azek 2.2: Helikopt´era Schiebel S-100 s v´ıce´ uˇcelovou raketou 3
2.2
Klasifikace bezpilotn´ıch prostˇ redk˚ u
Existuje mnoho zp˚ usob˚ u klasifikace bezpilotn´ıch prostˇredk˚ u. Jedn´ım z hledisek je poˇcet motor˚ u. Dalˇs´ım hlediskem je konstrukce - jestli se jedn´ a o tzv. fixed-wing, tedy letoun s pevn´ ymi kˇr´ıdly, nebo helikopt´eru. UAV se mohou klasifikovat i podle druhu pohonu na spalovac´ı a elektrick´a. Dalˇs´ım mˇeˇr´ıtkem m˚ uˇze b´ yt velikost, dolet, ˇci dosah prostˇredku. Bezpilotn´ı prostˇredky m˚ uˇzeme dˇelit i na CTOL (Convencional Take Off and Landing - tedy prostˇredky co startuj´ı a pˇrist´ avaj´ı konvenˇcn´ım zp˚ usobem), VTOL (zm´ınˇen´ yvu ´vodu), STOL (Short Take Off and Landing prostˇredky kter´e k pˇristan´ı potˇrebuj´ı pouze kr´atkou pˇrist´avac´ı dr´ahu) a na kombinace pˇredchoz´ıch, napˇr´ıklad STOVL (Short Take Off and Vertical Landing). Kategori´ı existuje opravdu velk´e mnoˇzstv´ı a proto bude jako posledn´ı uvedena klasifikace dle u ´ˇcelu prostˇredku: • Faleˇ sn´ e c´ıle a n´ avnady – UAV poskytuj´ı podporu ostatn´ım jednotk´am odl´ak´an´ım nepˇr´atelsk´ ych zbraˇ nov´ ych syst´em˚ u t´ım, ˇze simuluj´ı nepˇr´ atelsk´ y letoun ˇci stˇrelu • Pr˚ uzkumn´ a UAVs – zjiˇst’uj´ı informace o stavu bojiˇstˇe • Bojov´ a UAVs – poskytuj´ı sv´e ofenzivn´ı schopnosti v mis´ıch pˇr´ıliˇs rizikov´ ych pro pilotovan´e letouny • Logistick´ a UAVs – UAVs konstruovan´a speci´alnˇe pro pˇrepravu materi´alu • V´ yzkumn´ a a v´ yvojov´ a UAVs – pouˇz´ıvan´a k dalˇs´ımu zdokonalen´ı bezpilotn´ı technologie. • Civiln´ı a komerˇ cn´ı UAVs – UAVs konstruovan´a pro lokalizaci osob, monitoring poˇz´ar˚ u, kontrolu veden´ı, ale existuje i ryze komerˇcn´ı vyuˇzit´ı - napˇr. fotografov´an´ı a nat´aˇcen´ı akrobatick´ ych lyˇzaˇr˚ u a mˇest z v´ yˇsky. Syst´em LinkQuad se ˇrad´ı k elektˇrinou poh´ anˇen´ ym ˇctyˇrmotorov´ ym VTOL v´ yzkumn´ ym bezpilotn´ım prostˇredk˚ um. N´ asleduj´ıc´ı sekce proto bude vˇenov´ ana popisu ˇctyˇrrotorov´ ych vrtuln´ık˚ u, kter´e tvoˇr´ı podkategorii VTOL bezpilotn´ıch prostˇredk˚ u.
4
2.3
ˇ rrotorov´ Ctyˇ e vrtuln´ıky
ˇ rrotorov´ Ctyˇ y vrtuln´ık, jak uˇz n´ azev napov´ıd´a, je vybaven ˇctveˇric´ı vrtul´ı, kter´e jsou um´ıstˇeny v jedn´e rovinˇe. ˇ rrotory vˇetˇsinou uˇz´ıvaj´ı vrtule s listy se stejn´ Ctyˇ ym fixn´ım sklonem, na rozd´ıl od helikopt´er standardn´ı konstrukce, kde je sklon list˚ u rotoru mˇeniteln´ y. U quadrotor˚ u, jak jsou ˇctyˇrvrtulov´e helikopt´ery obˇcas naz´ yv´any, je ˇr´ızen´ı stroje doc´ıleno pomoc´ı regulace rychlost´ı ot´ aˇcek jednotliv´ ych rotor˚ u za pˇr´ıpadn´eho nakl´apˇen´ı cel´ ych motor˚ u kolem horizont´aln´ı osy. Hezkou uk´ azkou technologie nakl´ apˇen´ı motor˚ u je letoun Bell XV-15, kter´ y je vidˇet na obr´azku 2.3, byt’ nepatˇr´ı mezi UAV. U mal´ ych dron˚ u, jako je napˇr´ıklad LinkQuad, se kv˚ uli zjednoduˇsen´ı konstrukce nejv´ıce pouˇz´ıv´a ˇr´ızen´ı pouze pomoc´ı regulace ot´ aˇcek. Dva motory, kter´e jsou naproti sobˇe se ot´aˇc´ı stejn´ ym smˇerem, druh´a dvojice motor˚ u se toˇc´ı smˇerem opaˇcn´ ym a kompenzuje vzniklou hybnost prvn´ı dvojice, grafick´e zn´azornˇen´ı ukazuje obr´azek 2.4, obr´azek pˇrejat z [Jiˇrinec–11], motory jsou ˇc´ıslov´ any po smˇeru pohybu hodinov´ ych ruˇciˇcek.
Obr´ azek 2.3: Bell XV-15 Obr´azek 2.4: Smˇer rotac´ı vrtul´ı
5
2.3.1
Osy a u ´ hly n´ aklonu ˇ ctyˇ rvrtulov´ e helikopt´ ery
Kdyˇz maj´ı vˇsechny rotory stejnou rychlost ot´aˇcek, celkov´a vytv´aˇren´a hybnost je nulov´a, helikopt´era si udrˇzuje svou polohu (popˇr´ıpadˇe se pohybuje vertik´ alnˇe), nikam se nenakl´ap´ı ani neot´aˇc´ı. Um´ıst´ı-li se kart´ezsk´a soustava souˇradnic do stˇredu vrtuln´ıku tak, ˇze osa X proch´az´ı pˇredn´ım (ˇc. 1) a zadn´ım (ˇc. 3) rotorem, osa Y lev´ ym (ˇc. 2) a prav´ ym (ˇc. 4) rotorem a osa Z smˇeˇruje kolmo dol˚ u, mohou se pojmenovat u ´hly rotac´ı kolem pˇr´ısluˇsn´ ych os n´ asledovnˇe (viz 2.5 s ˇc´ıslov´ an´ım motor˚ u ve smˇeru pohybu hodinov´ ych ruˇciˇcek): • orientovan´ yu ´hel kolem osy X: φ • orientovan´ yu ´hel kolem osy Y: θ • orientovan´ yu ´hel kolem osy Z: ψ
´ Obr´ azek 2.5: Uhly a osy ˇctyˇrrotov´e helikopt´ery, pˇrevzato z [Kivrak–06]
Pˇredozadn´ımu n´ aklonu se ˇr´ık´ a sklon (v angliˇctinˇe pitch) a je doc´ılen zmˇenou u ´hlu θ. Pravolev´e otoˇcen´ı, n´ aklon (roll) je zp˚ usobeno zmˇenou u ´hlu φ. Zmˇena kurzu (yaw) je doc´ılena zmˇenou u ´hluψ. Kurz m´a hodnotu 0 pokud pˇredn´ı ˇc´ ast UAV m´ıˇr´ı pˇresnˇe na sever. Definovan´e u ´hly budou vyuˇzit´e pozdˇeji pˇri popisu konfigurace vnitˇrn´ıch kontroln´ıch smyˇcek helikopt´ery LinkQuad. V pˇr´ıpadˇe, ˇze je poˇzadov´an let helikopt´ery urˇcit´ ym smˇerem, je nutn´e celou platformu dan´ ym smˇerem naklonit pomoc´ı regulace ot´aˇcek rotor˚ u. Pokud je vyˇzadov´an let ˇsikmo, mˇen´ı se samozˇrejmˇe tˇechto u ´hl˚ u v´ıce najednou. Nejˇcastˇejˇs´ı operace jsou n´ aklony kolem os X a Y, tedy zmˇeny u ´hl˚ u φ a θ, ˇcili otoˇcen´ı tˇelesa helikopt´ery do stran a dopˇredu/dozadu. T´eto zmˇeny polohy se doc´ıl´ı u ´pravou ot´aˇcek motor˚ u leˇz´ıc´ıch na dan´e ose. Pˇri poˇzadovan´e zmˇenˇe kurzu (zmˇena u ´hlu ψ) se v´ ykon motor˚ u mˇen´ı po dvojic´ıch. Pˇri ot´aˇcen´ı doleva se zvedne v´ ykon motor˚ u ˇc´ıslo 1 a 3 (pˇredn´ı a zadn´ı) a sn´ıˇz´ı v´ ykon 2 a 4 (boˇcn´ı) a pro samotnou rotaci se vyuˇzije takto vznikl´ a hybnost rotor˚ u. V´ ykon druh´e dvojice kles´a proto, aby helikopt´era udrˇzela v´ yˇsku a nezaˇcala stoupat ve v´ ykrutu. Pˇri rotaci doprava se postupuje opaˇcnˇe, tedy zved´a se v´ ykon motor˚ u 2 a 4 (po stran´ach helikopt´ery) a ub´ır´ a v´ ykon motor˚ u 1 a 3. Protoˇze je helikopt´era schopn´a pohybu do vˇsech stran, nen´ı nutn´a zmˇena kurzu za u ´ˇcelem u ´pravy trajektorie.
6
Kapitola 3
Bezpilotn´ı syst´ em LinkQuad V t´eto kapitole budou pops´ any fyzick´e vlastnosti a softwarov´e vybaven´ı ˇctyˇrrotorov´e helikopt´ery LinkQuad, fotografie se nach´ az´ı na obr´ azku 3.1. LinkQuad je uzavˇrenou platformou, produktem firmy UAS Technologies Sweden. Z toho, ˇze zaˇr´ızen´ı nen´ı na b´ azi opensource, plynou jist´a omezen´ı, napˇr. to, ˇze ˇc´ast dokumentace a ˇ software jsou uzavˇren´e. CVUT tedy nedisponuje pln´ ym pˇr´ıstupem k hardware a ke zdrojov´ ym k´od˚ um a je odk´ azan´e na zdroje informac´ı a pomoc poskytnut´e dodavatelem zaˇr´ızen´ı.
Obr´ azek 3.1: Helikopt´era LinkQuad
3.1 3.1.1
Fyzick´ e vlastnosti a hardware Fyzick´ e vlastnosti
LinkQuad je ˇctyˇrrotorov´ a helikopt´era klasick´e konstrukce, v´aˇz´ıc´ı dle [Jiˇrinec–11] 1.313 kg, z ˇcehoˇz 394 g pˇripad´ a baterii a 112 g kameˇre uchycen´e vespod helikopt´ery. Letov´e zkouˇsky byly prov´adˇeny bez kamery, re´aln´ a letov´ a hmotnost byla tedy pˇribliˇznˇe 1.2 kg. Na ˇs´ıˇrku mˇeˇr´ı s vrtulemi 68 cm, bez nich 45 cm. Na v´ yˇsku m´a s nasazen´ ymi nohami a RC ant´enou 48 cm, 10 cm pˇripad´ a na v´alcov´e tˇelo, ke kter´emu je RC ant´ena mˇeˇr´ıc´ı 33,5 cm pˇripevnˇena z boku. ˇ Sesti-ˇ cl´ ankov´ a Li-Pol baterie, kter´ a se skl´ad´a ze dvou 3-ˇcl´ankov´ ych paralelnˇe zapojen´ ych blok˚ u, disponuje celkovou kapacitou 5200 mAh pˇri napˇet´ı 11.1 V. Re´aln´a v´ ydrˇz znaˇcnˇe z´avis´ı na okoln´ı teplotˇe, pˇri teplotˇe 7
vzduchu cca 25◦ C se pohybuje okolo 20 minut letu, v z´avislosti na s´ıle vˇetru a vyt´ıˇzen´ı stroje, obecnˇe pˇri teplotˇe niˇzˇs´ı se v´ ydrˇz citelnˇe sniˇzuje. Ve v´ ybavˇe je i druh´a baterie pro rychlou v´ ymˇenu bˇehem leteck´ ych experiment˚ u. Dalˇs´ım pˇr´ısluˇsenstv´ım je kamera, kter´ a se d´a pˇripevnit na spodn´ı ˇc´ast helikopt´ery a kter´a v re´aln´em ˇcase pˇren´ aˇs´ı obraz na pozemn´ı stanici. Kamera disponuje servo motorky a je plnˇe ovl´adateln´a pomoc´ı vys´ılaˇcky. Kamera nebyla pro riziko jej´ıho poˇskozen´ı pˇri p´adu testov´ana. Pouˇzit´e motory Hacker A20-26M v´ aˇz´ı 42g a disponuj´ı v´ ykonem 150 Watt˚ u. Standardn´ı odbˇer motor˚ u ˇcin´ı 12 A, ve ˇspiˇcce aˇz 15 A.
3.1.2
Hardwarov´ a platforma a senzory
Nejprve bude pˇredstaveno orientaˇcn´ı sch´ema architektury bezpilotn´ıho syst´emu LinkQuad, n´aslednˇe budou pops´ any jeho jednotliv´e komponenty. Vrtuln´ık LinkQuad je ˇr´ızen pomoc´ı autopilotu LinkBoard, kter´ y na sobˇe kromˇe dvojice mikroprocesor˚ u nese ˇradu senzor˚ u a vlastn´ı flash pamˇet’ pro uloˇzen´ı konfigurace. Mikroprocesory maj´ı za u ´kol zpracov´ avat data a prov´ adˇet kalkulace nezbytn´e k letu helikopt´ery. Z autopilotu d´ale vedou v´ ystupy do regul´ator˚ u motor˚ u, do ovl´ ad´ an´ı pˇripojiteln´e kamery, linky k r´adiov´emu pˇrij´ımaˇci a modemu pro komunikaci s pozemn´ı stanic´ı. K LinkBoardu se daj´ı pˇripojit dva pˇr´ıdavn´e uˇzivatelsky pˇr´ıstupn´e poˇc´ıtaˇce Gumstix. Posledn´ı komponentou je v´ ystup ke ˇcteˇcce microSD karty, kter´ a se uˇz´ıv´a k ukl´ad´an´ı z´aznamu o letu. Sch´ema na obr´azku 3.2, bylo pˇrevzato od [UASTech–12].
Obr´ azek 3.2: Architektura bezpilotn´ıho syst´emu LinkQuad Autopilot disponuje disponuje celou ˇradou senzor˚ u pro zjiˇstˇen´ı pˇresn´e informace o poloze platformy: • Gyroskopy - pro urˇcen´ı u ´hl˚ u φ, θ a ψ, tedy n´aklon˚ u v jednotliv´ ych os´ach • 3D Akcelerometr - zjiˇstˇen´ı velikosti a smˇeru zrychlen´ı, tedy zmˇenu rychlosti pohybu v ˇcase • Barometr - urˇcen´ı atmosf´erick´eho tlaku a n´asledn´ y v´ ypoˇcet nadmoˇrsk´e v´ yˇsky • Magnetometr - pro mˇeˇren´ı kurzu, tedy odchylky od severu • Voltmetr - zjiˇstˇen´ı napˇet´ı nap´ ajec´ı baterie • GPS - urˇcen´ı polohy pomoc´ı satelitn´ıho navigaˇcn´ıho syst´emu Jak bylo zm´ınˇeno v´ yˇse, mikroprocesory ˇr´ıd´ıc´ı let helikopt´ery jsou dva. Oba jsou ARMov´e architektury a maj´ı pracovn´ı frekvenci 72 MHz. Prvn´ı z nich se naz´ yv´a Sensor Micro Controller Unit (d´ale jen SMCU), druh´ y Control Micro Controller Unit (d´ ale jen CMCU). 8
SMCU vyˇc´ıt´ a a zpracov´ av´ a data ze senzor˚ u a RC pˇrij´ımaˇce a pˇred´av´a je ve zpracovan´e formˇe do vnˇejˇs´ıch a vnitˇrn´ıch ˇr´ıd´ıc´ıch smyˇcek bˇeˇz´ıc´ıch na CMCU. O smyˇck´ach bude pojedn´ano v samostatn´e sekci t´eto kapitoly. Zpracov´ an´ı senzorov´ ych dat na SMCU spoˇc´ıv´a v jejich filtraci, smˇeˇsov´an´ı a pˇrev´adˇen´ı do digit´aln´ı podoby. Z´ıskan´e u ´daje vyuˇzije CMCU a pomoc´ı smyˇcek vypoˇcte a pˇred´a povely jednotliv´ ym regul´ator˚ um motor˚ u. Touto neust´ alou kontrolou pˇri spr´ avn´e funkci zajiˇst’uje stabilitu a ovladatelnost helikopt´ery. CMCU z´aroveˇ n odes´ıl´ a data na modem komunikuj´ıc´ı s pozemn´ı stanic´ı, poˇc´ıtaˇcem (napˇr. notebookem). CMCU d´ale odes´ıl´a data na 10 PWM (Pulse Width Modulation, bˇeˇznˇe uˇz´ıvan´a technika kontroly nap´ajen´ı) v´ ystupn´ıch kan´al˚ u. SMCU i CMCU z´ aroveˇ n odes´ılaj´ı sv´ a data na s´eriov´e porty RS232, ke kter´ ym je pˇripojen pˇr´ıdavn´ y uˇzivatelsk´ y poˇc´ıtaˇc Gumstix. Gumstixu bude vˇenov´ an prostor tak´e v samostatn´e sekci. Obr´azek 3.3 zn´azorˇ nuj´ıc´ı uspoˇr´ ad´ an´ı autopilotu, pˇrejat z [UASTech–12].
Gumstix 1
Gumstix 2 RS232-1
RS232-1 RS232-3
RS232-2
RS232-2
USB-1
USB-1
Sensors: 1. 3D Accelerometer 2. 3 Gyroscopes 3. Barometer 4. Compass
Rc receiver
10 x PWM output channels
Analog/Digital Converter Ch1: battery voltage Ch2-Ch4: additional sensors
Motor controllers
Sensor MCU GPS
RS232-3
Control MCU
Additional sensors: e.g sonar
Modem
Obr´ azek 3.3: Architektura autopilotu LinkBoard Uˇzivatel m´ a n´ asleduj´ıc´ı moˇznosti komunikace s autopilotem: • RC pˇ rij´ımaˇ c - pˇrijet´ı a zpracov´ an´ı povel˚ u z RC vys´ılaˇcky • Komunikaˇ cn´ı modem - uˇz´ıvan´ y ke spojen´ı a komunikaci s pozemn´ı stanic´ı. RC pˇrij´ımaˇc pˇrij´ım´ a uˇzivatelsk´e povely z r´adiov´e vys´ılaˇcky na frekvenci 35 MHz. Tyto povely vstupuj´ı do ˇr´ıd´ıc´ıch smyˇcek CMCU a t´ım ovl´ adaj´ı let bezpilotn´ıho prostˇredku. Komunikaˇcn´ı modem na stranˇe helikopt´ery se skl´ad´a ze dvou komponent. Z Wi-Fi vys´ılaˇce na frekvenci 2.4 GHz pro bezdr´ atov´ y pˇrenos dat a pˇrevodn´ıku na s´eriov´ y port RS232, pomoc´ı kter´eho je modem pˇripojen k autopilotu. Pozemn´ı stanice m´ a sv˚ uj vlastn´ı modem, ke kter´emu je pˇripojena pomoc´ı USB a s´eriov´ y port se na n´ı emuluje softwarovˇe. Na stranˇe pozemn´ı stanice m´a tud´ıˇz modem kromˇe Wi-Fi modulu pˇrevodn´ık na USB. Pˇripojen´ a z´ avˇesn´ a videokamera pˇren´ aˇs´ı obraz v re´aln´em ˇcase na pozemn´ı stanici prostˇrednictv´ım vys´ıl´ an´ı na frekvenci 1.3 GHz.
9
Obr´ azek 3.4: Zasazen´ı LinkBoard do helikopt´ery LinkQuad. Poˇc´ıtaˇc Gumstix je k LinkBoardu pˇripojen zespodu, nen´ı tedy na fotografii vidˇet. Zespodu odklopen´eho vrchn´ıho krytu je pˇripevnˇen´a ant´ena GPS pˇrij´ımaˇce (vlevo) a vpravo od n´ı kompas.
3.1.3
Uˇ zivatelsk´ y poˇ c´ıtaˇ c Gumstix
LinkQuad m˚ uˇze n´est pˇripojen´e souˇcasnˇe aˇz dva uˇzivatelsky pˇr´ıstupn´e poˇc´ıtaˇce Gumstix. V pˇr´ıpadˇe zapojen´ı obou tˇechto jednotek funguje jedna jako ˇr´ıd´ıc´ı a druh´a jako podˇr´ızen´a jednotka. Oba poˇc´ıtaˇce spolu mohou navz´ ajem komunikovat pomoc´ı s´eriov´ ych port˚ u RS232. Pouˇzit´a platforma LinkQuadu nese na palubˇe pˇripojen´ y jeden Gumstix. Gumstix disponuje vlastn´ım Wi-Fi modulem, kter´ y vytv´aˇr´ı 2.4 GHz Wi-Fi s´ıt’ v ad-hoc reˇzimu, je tedy moˇzn´e se k t´eto s´ıti pˇripojit jako ke kter´ekoli jin´e Wi-Fi z libovoln´eho zaˇr´ızen´ı. Modul s poˇc´ıtaˇcem Gumstix Overo Fire (na obr´ azku 3.5), konkr´etnˇe model GS3503F-R2766, je k autopilotu pˇripojen zespodu a komunikuje s n´ım pomoc´ı s´eriov´ ych port˚ u RS232. Podrobn´e informace o hardware poskytne pouˇzit´ y operaˇcn´ı syst´em platformy - Angstr¨ om linux.
Obr´ azek 3.5: Gumstix Overo. Zleva: modul Wi-Fi, vlastn´ı procesor Gumstix s heatspreadem, slot microSD karty
10
Procesor poˇc´ıtaˇce Gumstix je jednoj´ adrov´ y ˇcip s architekturou ARMv7, taktovan´ y na 500 MHz. K dispozici je 256 MB RAM syst´emov´e pamˇeti. Pro ukl´ad´an´ı dat a instalaci operaˇcn´ıho syst´emu je uˇzita vlastn´ı 8GB microSD karta. Podrobnˇejˇs´ı informace jsou zachyceny na obr´azc´ıch 3.6 a 3.7.
Obr´ azek 3.6: V´ ypis souboru /proc/cpuinfo obsahuj´ıc´ı dostupn´e informace o procesoru
Obr´ azek 3.7: V´ ypis souboru /proc/meminfo obsahuj´ıc´ı dostupn´e informace o pamˇeti RAM
3.2
ˇ ıd´ıc´ı mechanismy R´
3.2.1
ˇ ıd´ıc´ı smyˇ R´ cky CMCU
Na CMCU neust´ ale bˇeˇz´ı dvojice ˇr´ıd´ıc´ıch smyˇcek - vnˇejˇs´ı a vnitˇrn´ı. Obˇe smyˇcky jsou plnˇe konfigurovateln´e. V pouˇzit´em nastaven´ı je rol´ı vnitˇrn´ı smyˇcky se zpˇetnou vazbou stabilizace kurzu, sklonu a n´aklonu a ovl´ ad´ an´ı polohy helikopt´ery na z´ akladˇe senzorick´ ych dat, kter´e dod´av´a SMCU. Pokud je helikopt´era ˇr´ızena kompletnˇe ruˇcnˇe pomoc´ı RC vys´ılaˇcky, jsou polohy joystick˚ u vyuˇzity jako vstupy do t´eto smyˇcky. Tato vnitˇrn´ı velmi rychl´ a stabilizace citelnˇe usnadˇ nuje ˇr´ızen´ı. Bez n´ı by platforma byla pˇr´ıliˇs nestabiln´ı a velmi obt´ıˇznou na pilot´ aˇz. V´ ystupy z vnitˇrn´ıch smyˇcek jsou d´ ale pˇred´any do smˇeˇsovaˇce ˇr´ıd´ıc´ıch sign´al˚ u (Mixeru), kde se nastav´ı jak´e v´ ystupy budou m´ıt vliv na konkr´etn´ı regul´ator motoru. Vnˇejˇs´ı smyˇcka je tak´e zpˇetnovazebnou smyˇckou, kter´a na z´akladˇe poˇzadovan´ ych hodnot uˇzivatelsk´ ych parametr˚ u (vektor pozice a vektor rychlosti, pˇr´ıpadnˇe i akcelerace) poskytuje ˇr´ıd´ıc´ı sign´aly do vnitˇrn´ı smyˇcky. Jedn´ a ˇ ızen´ı se tady o strukturu vyˇsˇs´ı u ´rovnˇe, kter´ a ˇr´ıd´ı polohu helikopt´ery v r´amci zvolen´eho syst´emu souˇradnic. R´ extern´ım programem je tedy moˇzn´e prostˇrednictv´ım z´apisu do uˇzivatelsk´ ych parametr˚ u. Hierarchie smyˇcek se nach´ az´ı na obr´ azku 3.8. Konfigurovatelnost hraje v´ yznamnou roli. S n´ı je moˇzn´e napˇr. uˇz´ıvat uˇzivatelsk´ ych parametr˚ u i ve vnitˇrn´ıch smyˇck´ ach.
11
Obr´ azek 3.8: Hierarchie ˇr´ıd´ıc´ıch smyˇcek pouˇzit´e konfigurace.
3.2.2
Letov´ e m´ ody
Bezpilotn´ı syst´em LinkQuad umoˇzn ˇuje porovoz v tˇechto letov´ ych m´odech: • Reˇzim ruˇcn´ıho ovl´ ad´ an´ı (Manual flight, Mode 1) • Reˇzim poloautomatick´eho ovl´ ad´ an´ı (Semi-auto flight, Mode 2) • Reˇzim plnˇe automatick´eho letu (Automatic flight, Mode 3) M´ ody se vol´ı pˇrep´ınaˇcem na RC vys´ılaˇcce. Prvn´ım je plnˇe ruˇcn´ı reˇzim, kdy je helikopt´era ovl´ad´ana povely ˇr´ıd´ıc´ıch p´ ak RC vys´ılaˇcky, kter´e urˇcuj´ı u ´hly n´aklonu, kurz a plyn. Samozˇrejmˇe je moˇzn´e plnˇe pˇrizp˚ usobit ovl´ ad´ an´ı a jeho citlivost konkr´etn´ım potˇreb´am. Druh´ ym letov´ ym m´odem je semi-automatick´ y reˇzim, kter´ y nen´ı ´ celem tohoto reˇzimu je poskytnout v souˇcasn´e verzi prostˇredku zcela funkˇcn´ı a proto je v nastaven´ı deaktivov´an. Uˇ automatick´ y let ovlivniteln´ y uˇzivatelsk´ ym vstupem z RC vys´ılaˇcky. Posledn´ım reˇzimem je auto reˇzim kdy se LinkQuad ˇr´ıd´ı podle nastaven´ ych uˇzivatelsk´ ych promˇen´ ych, pˇri z´akladn´ım nastaven´ı do nich pˇri pˇrepnut´ı m´ odu automaticky uloˇz´ı aktu´ aln´ı pozici a tu nad´ale udrˇzuje pomoc´ı GPS navigace, kompasu a barometru. V tomto reˇzimu existuje i moˇznost augmentace bodu okolo kter´eho se vzn´aˇs´ı, tedy u ´pravu t´eto polohy pomoc´ı zmˇeny c´ılov´ ych uˇzivatelsk´ ych parametr˚ u podle pokyn˚ u z RC vys´ılaˇcky. Tato funkˇcnost nebyla kv˚ uli probl´em˚ um se stabilitou ˇr´ıd´ıc´ıho firmwaru ˇr´ adnˇe otestov´ ana.
3.2.3
Komunikace se syst´ emem LinkQuad
Komunikace mezi uˇzivatelem a LinkQuadem prob´ıh´a pomoc´ı 3 komunikaˇcn´ıch kan´al˚ u. Prvn´ı kan´al tvoˇr´ı jiˇz popsan´ y modem, slouˇz´ıc´ı ke spojen´ı bezpilotn´ıho prostˇredku a ˇr´ıd´ıc´ıho softwaru LinkGS. Komunikace m˚ uˇze bezpeˇcnˇe prob´ıhat aˇz do vzd´ alenosti 1 km v otevˇren´em prostoru. V urbanizovan´em prostˇred´ı se dosah m˚ uˇze zkr´ atit v z´ avislosti na druhu a mnoˇzstv´ı pˇrek´aˇzek. Druh´ y kan´al ztˇelesˇ nuje RC komunikace s vys´ılaˇckou pro manu´ aln´ı ˇr´ızen´ı a pˇrep´ın´ an´ı letov´ ych m´ od˚ u. Tˇret´ım vyuˇz´ıvan´ ym kan´alem je ad-hoc 2.4 GHz Wi-Fi s´ıt’ vytv´ aˇren´ a poˇc´ıtaˇcem Gumstix, prostˇrednictv´ım kter´e je umoˇznˇeno shellov´e (SSH) spojen´ı s jeho operaˇcn´ım syst´emem a spouˇstˇen´ı vlastn´ıch program˚ u. Dosah s´ıtˇe se bohuˇzel pohybuje tˇesnˇe nad hranic´ı 100 m. Obsluhovat operaˇcn´ı syst´em a programy na nˇem bˇeˇz´ıc´ı je tedy moˇzn´e pouze do t´eto vzd´alenosti od pozemn´ı stanice.
12
3.3 3.3.1
Softwarov´ e vybaven´ı syst´ emu LinkQuad Angstr¨ om linux a Java
Jak jiˇz bylo nˇekolikr´ at zm´ınˇeno, poˇc´ıtaˇc Gumstix m´a na sv´e pˇripojen´e microSD kartˇe nainstalov´an operaˇcn´ı syst´em Linux, konkr´etnˇe 32-bitovou distribuci Angstr¨om Linux z roku 2010 vyuˇz´ıvaj´ıc´ı headless j´adro. Jedn´ a se o plnohodnotnou distribuci urˇcenou prim´arnˇe pro embedded zaˇr´ızen´ı, obsahuj´ıc´ı sadu z´akladn´ıch linuxov´ ych pˇr´ıkaz˚ u a nˇekolik doplˇ nkov´ ych, kter´e bˇeˇznˇe nainstalovan´e neb´ yvaj´ı. Jako pˇr´ıklad takov´eho pˇr´ıkazu m˚ uˇze poslouˇzit screen. 1 Pouˇzit´ a verze Javy je nakonec Oracle Java(TM) SE Runtime Environment for Embedded (build 1.7.0 04ea-b20, headless). Prvn´ı verz´ı, kter´ a byla testov´ana byla Open verze Javy IcedTea Open Java SE, ale fungovala pomaleji neˇz uzavˇren´ a verze od Oraclu, nav´ıc obsahovala starˇs´ı verze knihoven a nˇekter´e potˇrebn´e funkce tud´ıˇz chybˇely. Angstr¨ om linux m´ a nainstalovan´ y a zkonfigurovan´ y C compiler gcc, nen´ı tedy probl´em pˇrekl´adat programy psan´e v jazyku C pˇr´ımo na poˇc´ıtaˇci Gumstix.
3.3.2
LinkGS
LinkGS je hlavn´ı ovl´ adac´ı program platformy psan´ y v jazyku C, pouˇz´ıvaj´ıc´ı pro vizualizaci QT knihovny. Pro spr´ avnou funkˇcnost zobrazov´ an´ı je nutn´e m´ıt povolenou 3D akceleraci plochy ve Windows. S platformou LinkQuad komunikuje prostˇrednictv´ım komunikaˇcn´ıho modemu pˇripojiteln´eho k poˇc´ıtaˇci pomoc´ı USB, parametry pˇripojen´ı (napˇr. baudrate) jsou plnˇe nastaviteln´e. Standardn´ı vzhled programu 3.9. V z´akladn´ım nastaven´ı zobrazuje umˇel´ y horizont, aˇz 8 modifikovateln´ ych graf˚ u v´ yvoje senzorov´ ych promˇenn´ ych, ovl´adac´ı prvky se z´ akladn´ımi pokyny pro vypnut´ı/zapnut´ı SMCU, CMCU, motor˚ u a loggov´an´ı, indik´atory stavu jednotliv´ ych komponent dle senzor˚ u a konzoli se zpr´ avami od syst´emu. Program s´ am o sobˇe je plnˇe konfigurovateln´ y, jednotliv´e komponenty (grafy, ovl´adac´ı prvky, umˇel´ y horizont atd.) se daj´ı pˇresouvat a nastavovat jejich velikost, konfiguraci programu je moˇzno uloˇzit v XML form´ atu. Pˇri prvn´ım startu programu je tak´e nutno naˇc´ıst XML konfiguraˇcn´ı soubor dostupn´ ych senzorov´ ych dat platformy LinkQuad (LinkQuadTelemetry.xml). Nastaven´ı ˇr´ıd´ıc´ı architektury LinkBoardu je tak´e moˇzn´e exportovat do XML, coˇz se doporuˇcuje, pokud existuj´ı rozd´ıln´a nastaven´ı, napˇr´ıklad pro lety ve venkovn´ım prostˇred´ı a uvnitˇr budov. Posledn´ım XML konfiguraˇcn´ım souborem je soubor konfiguruj´ıc´ı mapu prostˇred´ı. Zabudovan´ y syst´em mapy prostˇred´ı vˇsak zat´ım nebyl otestov´ an. To nicm´enˇe nen´ı na pˇrek´aˇzku, nebot’ jako grafick´e rozhran´ı pl´ anov´ an´ı trajektorie bude pouˇzit grafick´ y v´ ystup syst´emu AgentFly. Program LinkGS a vˇsechny uˇzit´e konfiguraˇcn´ı soubory (vˇcetnˇe konfiguraˇcn´ıch soubor˚ u LinkBoardu) se nach´az´ı na pˇriloˇzen´em CD. Konfiguraˇcn´ı soubory jsou jak ve formˇe xml, tak v podobˇe screenshot˚ u pro pˇr´ıpadn´e uˇzit´ı jako inspirace pro nastaven´ı novˇejˇs´ı verze platformy.
3.3.3
Konfigurace LinkBoardu
N´ asleduj´ıc´ı ˇr´ adky se budou vˇenovat konfiguraci autopilotu LinkQuadu - LinkBoardu - pomoc´ı LinkGS. Otevˇren´ı konfiguraˇcn´ıho okna umoˇzn´ı mˇenit veˇsker´e nastaven´ı kontroln´ıch mechanizm˚ u vrtuln´ıku. Tato nastaven´ı je nutno mˇenit s vypnut´ ym CMCU i SMCU a pro uloˇzen´ı je nutn´ y z´apis do konfiguraˇcn´ı flash pamˇeti LinkBoardu, aˇz pot´e je moˇzn´e opˇet zapnout oba ˇr´ıd´ıc´ı procesory. Vˇsechna nastaven´ı je moˇzn´e z pamˇeti naˇc´ıst. Naˇc´ıtat lze bud’ vˇsechno nastaven´ı nar´ az, nebo vybran´e ˇca´sti z konfiguraˇcn´ıho okna. Z´aloˇzka Sensors (vˇsechny z´aloˇzky napˇr. obr´ azek 3.10) umoˇzn ˇuje mˇenit offsety a n´asob´ıc´ı kontanty (gainy) u jednotliv´ ych sensor˚ u. Tyto hodnoty se liˇs´ı pro kaˇzdou verzi LinkBoardu a jsou urˇceny v´ yrobcem. To sam´e plat´ı pro hodnoty pod z´aloˇzkou Filters, kde se nastavuj´ı komplement´ arn´ı filtry senzorick´ ych dat. Z´aloˇzka Pan-Tilt Unit se pouˇz´ıv´a k nastaven´ı funkc´ı kamery. Nejd˚ uleˇzitˇejˇs´ımi z´ aloˇzkami jsou vˇsak z´aloˇzky Mixer, RC sticks, Inner Loops a Flight Modes. RC Sticks konfiguruj´ı vstupy z RC vys´ılaˇcky, Inner Loops nastaven´ı konstant a promˇenn´ ych vnitˇrn´ıch ˇr´ıd´ıc´ıch smyˇcek a z´ aloˇzka Flight Modes nastavuje promˇenn´e a konstanty vnˇejˇs´ı kontroln´ı smyˇcky pro automatick´e drˇzen´ı polohy. Mixer se star´ a o sm´ısen´ı ˇr´ıd´ıc´ıch sign´ al˚ u a jejich distribuci regul´ator˚ um motor˚ u a kamery. 1 Tohoto pˇ r´ıkazu se d´ a vyuˇ z´ıt pro odpojen´ı (a pro pozdˇ ejˇs´ı znovu pˇripojen´ı) programu termin´ alu, ve kter´ em byl spuˇstˇ en. To se hod´ı pˇri pˇripojen´ı do syst´ emu pˇres SSH pomoc´ı Wi-Fi. V pˇr´ıpadˇ e, ˇ ze dojde ke ztr´ atˇ e sign´ alu, program spuˇstˇ en´ y a bˇ eˇ z´ıc´ı v termin´ alu se zastav´ı. Pˇri odpojen´ım pomoc´ı screen m˚ uˇ ze bˇ eˇ zet d´ al, nebot’ se zbavil z´ avislosti na SSH spojen´ı.
13
Obr´ azek 3.9: Vzhled LinkGS s uk´ azkou zobrazen´ı graf˚ u, umˇel´eho horizontu, indik´ator˚ u stavu komponent helikopt´ery a ovl´ adac´ıch tlaˇc´ıtek
3.3.4
Vnitˇ rn´ı kontroln´ı smyˇ cky
U vnitˇrn´ıch smyˇcek m´ a kaˇzd´ y letov´ y m´ od svoje vlastn´ı konstanty (pˇr´ıklad nastaven´ı na obr´azku 3.10). Konstanty se nastavuj´ı zvl´ aˇst’ pro Roll (n´ aklon) a Roll Rate (m´ıra n´aklonu), Pitch (sklon dopˇredu/dozadu) a Pitch Rate (m´ıra sklonu), Yaw (kurz) a v´ yˇsku. U kaˇzd´e t´eto operace je potˇreba vybrat vstupn´ı promˇenou (Input) a promˇenou jej´ıˇz hodnotˇe by se vstup mˇel rovnat (Target) pro proporˇcn´ı, integraˇcn´ı a derivaˇcn´ı sloˇzku smyˇcky. D´ ale se nastavuj´ı offsety jednotliv´ ych promˇenn´ ych, jejich mˇeˇr´ıtka a limitn´ı hodnoty. Nakonec se nastav´ı v´aha t´e kter´e sloˇzky pomoc´ı konstanty gain n´ asob´ıc´ı celou sloˇzku. Jestli je poˇzadov´ano, aby v´ ystup ovlivnila pˇredchoz´ı hodnota dalˇs´ı promˇenn´e ˇci v´ ystupu, je nutn´e nastavit jeˇstˇe vstup Feed forward. Posledn´ım nezbytn´ ym nastaven´ım je na jak´ y v´ ystup odes´ılat vypoˇc´ıtan´e hodnoty. Pˇri manu´aln´ım m´odu (Mode 1) se jako poˇzadovan´e hodnoty vol´ı hodnoty ovl´ adac´ıch p´ ak RC vys´ılaˇcky, pˇri automatick´em reˇzimu (Mode 3) se jako poˇzadovan´e hodnoty vol´ı v´ ystupy vnˇejˇs´ıch kontroln´ı smyˇcek. Vzhledem k nedostatku dokumentace musely b´ yt vˇsechny konstanty ˇr´ıd´ıc´ıch smyˇcek identifikov´ any experiment´ alnˇe. Nastavov´an´ı kaˇzd´e promˇenn´e prob´ıhalo iterativnˇe, kdy se stˇr´ıdaly f´ aze nastaven´ı (vypnout CMCU a SMCU, nastavit, zapsat do flash pamˇeti LinkBoardu, zapnout CMCU a SMCU), a letov´e testy.
14
3.3.5
Vnˇ ejˇ s´ı kontroln´ı smyˇ cky
Nastaven´ı vnˇejˇs´ıch smyˇcek prob´ıh´ a, stejnˇe jako u vnitˇrn´ıch, volbou vstupn´ıch promˇenn´ ych a poˇzadovan´ ych hodnot jednotliv´ ych sloˇzek ovl´ ad´ an´ı polohy. Na rozd´ıl od vnitˇrn´ıch smyˇcek, kde se reguluje pˇr´ımo konkr´etn´ı man´evr (napˇr´ıklad n´ aklon), se zde reguluje pˇr´ımo poloha platformy na vyˇsˇs´ı u ´rovni v r´amci zvolen´e soustavy souˇradnic. V pouˇzit´em nastaven´ı je zvolena kart´ezsk´a soustava souˇradnic s poˇc´atkem v m´ıstˇe, kde byl LinkQuad zapnut, osou Y m´ıˇr´ıc´ı na v´ ychod, osou X smˇeˇruj´ıc´ı na sever a Z smˇeˇruj´ıc´ı kolmo od zemsk´eho povrchu. Pro snazˇs´ı orientaci a v´ ypoˇcty v ˇr´ıd´ıc´ım programu vyˇsˇs´ı u ´rovnˇe jsou vˇsak hodnoty vodorovn´ ych os transformov´ any do souˇradn´e soustavy tˇelesa helikopt´ery, X je osou smˇeˇruj´ıc´ı dopˇredu, Y doprava. Osa Z pˇredstavuj´ıc´ı vertik´ aln´ı vzd´ alenost od nadmoˇrsk´e v´ yˇsky startu d´ ale transformov´ana nen´ı. V´ ystupy tˇechto smyˇcek se pot´e pouˇzij´ı jako c´ıle pro vnitˇrn´ı kontroln´ı smyˇcky. Uk´ azka nastaven´ı je na obr´azku 3.11.
3.3.6
Mixer
Zde se konfiguruje jak´e vstupy budou m´ıt vliv na dan´ y regul´ator motoru. Dalˇs´ım d˚ uleˇzit´ ym nastaven´ım je pˇriˇrazen´ı minim´ aln´ı hodnoty v´ ystupu do motorov´ ych regul´ator˚ u. Tato minim´aln´ı hodnota bude motor˚ um pos´ıl´ ana za kaˇzd´ ych okolnost´ı, coˇz se uk´ azalo jako potˇrebn´e pˇri ladˇen´ı nastaven´ı platformy vzhledem k jej´ı nestabilitˇe pˇri pˇrep´ın´ an´ı m´ od˚ u. Podrobnosti se nach´ az´ı v sekci 8.2.3.
3.3.7
Syst´ em veden´ı z´ aznamu o letu
LinkQuad s´ am o sobˇe disponuje vlastn´ım syst´emem z´aznamu letu. Zaznamen´av´a vˇsechny u ´daje ze senzor˚ u s ˇcetnost´ı 500 z´ aznam˚ u za vteˇrinu. Toto ohromn´e mnoˇzstv´ı dat k z´apisu si vyˇz´adalo v´ yvoj speci´aln´ıho filesyst´emu microSD karty urˇcen´e jen a pouze k logov´ an´ı. Operace ˇcten´ı logu z karty se kv˚ uli tomu mus´ı prov´adˇet pomoc´ı programu LinkGS. Tento zp˚ usob tvorby log˚ u se uk´azal jako vhodn´ y pro ladˇen´ı stability platformy a jistˇe i pˇri jej´ım v´ yvoji. Zpracov´ avat takto velik´ a data vˇsak nen´ı pohodln´e. Proto pro potˇreby z´aznam˚ u delˇs´ıch let˚ u bude vyuˇzito vlastn´ıho syst´emu z vyˇsˇs´ıch ˇr´ıd´ıc´ıch struktur zaznamen´avaj´ıc´ıho vybran´e promˇenn´e.
3.3.8
Start syst´ emu LinkQuad
Pro nastartov´ an´ı syst´emu je potˇreba minimum u ´kon˚ u. Vyˇzadov´ano je pouze zapnut´ı (+ poˇck´an´ı 1 minutu na inicializaci senzor˚ u a boot operaˇcn´ıho syst´emu poˇc´ıtaˇce Gumstix) a aktivace motor˚ u (a pˇr´ıpadn´e zapnut´ı veden´ı logu) povelem z LinkGS. Pot´e je platforma plnˇe pˇripravena k letu. Pˇri v souˇcasnosti uˇzit´e konfiguraci platformy se po aktivaci motor˚ u vrtule ihned roztoˇc´ı na nastavenou minim´aln´ı u ´roveˇ n ot´aˇcek bez ohledu na polohu plynov´e p´ aky vys´ılaˇcky. Pro vypnut´ı motor˚ u a zastaven´ı vrtul´ı po skonˇcen´ı letu je opˇet potˇreba pokyn z ovl´ adac´ıho softwaru, je tedy tˇreba let ukonˇcit v dosahu sign´alu komunikaˇcn´ıho modemu pozemn´ı stanice. Pˇri vyp´ın´ an´ı motor˚ u je nutn´e poˇc´ıtat s prodlevou okolo 10 s neˇz se motory skuteˇcnˇe deaktivuj´ı.
15
3.3.9
Uk´ azky konfigurace autopilotu LinkBoard
Obr´ azek 3.10: Uk´ azka nastaven´ı vnitˇrn´ıch smyˇcek zodpovˇedn´ ych za stabilizaci a ˇr´ızen´ı letu helikopt´ery.
16
Obr´ azek 3.11: Uk´azka nastaven´ı vnˇejˇs´ıch smyˇcek
17
Obr´ azek 3.12: Uk´ azka nastaven´ı mixeru. Vstupy tvoˇr´ı sloupce, regul´atory motor˚ u pˇredstavuj´ı jednotliv´e ˇr´ adky
18
Kapitola 4
N´ avrh architektury vyˇ sˇ s´ı ˇ r´ıd´ıc´ı vrstvy ˇ ıd´ıc´ı platforma Na pozemn´ı stanici bude kromˇe ˇr´ıd´ıc´ıho softwaru LinkGS spuˇstˇena ˇr´ıd´ıc´ı softwarov´a platforma. R´ bude pˇres Wi-Fi spojen´ı komunikovat s vyˇsˇs´ı programovou ˇr´ıd´ıc´ı vrstvou spuˇstˇenou na uˇzivatelsk´em poˇc´ıtaˇci Gumstix na palubˇe helikopt´ery. Od t´eto vrstvy bude softwarov´a platforma dost´avat v pravideln´ ych intervalech u ´daje o poloze a stavu bezpilotn´ıho syst´emu. Simulaˇcn´ı platforma umoˇzn´ı krom vizualizace stavu helikopt´ery tak´e zadat letovou trajektorii pomoc´ı kontroln´ıch bod˚ u. Tyto body budou odesl´any do vyˇsˇs´ı programov´e vrstvy helikopt´ery, kter´ a je zpracuje a n´ aslednˇe podle nich bude zad´avat c´ıle niˇzˇs´ı ˇr´ıd´ıc´ı u ´rovni v podobˇe autopilotu LinkBoard.
Obr´ azek 4.1: Sch´ema architektury vyˇsˇs´ı ˇr´ıd´ıc´ı vrstvy Vyˇsˇs´ı ˇr´ıd´ıc´ı struktura se bude skl´ adat ze dvou komponent. Z komponenty pro spojen´ı s pozemn´ı ˇr´ıd´ıc´ı softwarovou platformou, kter´ a z´ aroveˇ n napl´anuje trajektorii a z ˇr´ıd´ıc´ı struktury, kter´a vyˇcte data ze senzor˚ u ˇ ıd´ıc´ı struktura podle aktu´aln´ı napl´anovan´e trajektorie bude ˇr´ıdit let poskytov´ a pˇred´ a je komponentˇe. R´ an´ım pˇr´ıkaz˚ u autopilotu.
Obr´ azek 4.2: Sch´ema vnitˇrn´ı architektury vyˇsˇs´ı ˇr´ıd´ıc´ı vrstvy
19
Kapitola 5
ˇ ıd´ıc´ı software AgentFly R´ ˇ V t´eto kapitole bude pˇredstaven ˇr´ıd´ıc´ı software AgentFly, vyvinut´ y v Centru Agentn´ıch Technologi´ı FEL CVUT, kter´ y bude pouˇzit pro ˇr´ızen´ı z pozemn´ı stanice.
5.1
AgentFly
AgentFly ([AgentFly–12]) je multi-agentn´ı ˇr´ıd´ıc´ı software a simulaˇcn´ı prostˇred´ı civiln´ı leteck´e dopravy, schopn´e velmi rozs´ ahl´ ych simulac´ı. Syst´em v sobˇe integruje pokroˇcil´e pl´anov´an´ı letov´ ych trajektori´ı, decentralizovan´ y syst´em detekce a zabr´ anˇen´ı koliz´ı (Collision Avoidance) a detailn´ı modely leteck´ ych prostˇredk˚ u a prostˇred´ı s moˇznost´ı 2D i 3D zobrazen´ı. Mise jednotliv´ ych letadel jsou specifikov´any pomoc´ı sady prostorov´ ych souˇradnic, kter´ ymi mus´ı v´est letov´ a trajektorie. Cel´ a operace m˚ uˇze b´ yt bud’ napl´anov´ana na zemi pˇred startem letadla bez u ´vahy o moˇzn´ ych koliz´ıch s ostatn´ımi u ´ˇcastn´ıky letov´eho provozu, nebo dynamicky kdykoli bˇehem letu. Detekce vz´ ajemn´ ych konflikt˚ u pl´ an˚ u prob´ıh´ a aˇz bˇehem letu peer-to-peer zp˚ usobem a u ´st´ı v dynamick´e pˇrepl´ anov´ an´ı trajektorie, dokud nen´ı nalezena trajektorie bez koliz´ı.
5.1.1
Simulace
Simulace se na konceptu´ aln´ı u ´rovni skl´ ad´ a ze synchronn´ı simulace virtu´aln´ıho prostˇred´ı a asynchronn´ıch simulovan´ ych leteck´ ych prostˇredk˚ u. Kaˇzd´ y prostˇredek je separ´atn´ı entita, kter´a m˚ uˇze b´ yt spuˇstˇena na oddˇelen´em poˇc´ıtaˇci. I kdyˇz je virtu´ aln´ı prostˇred´ı v principu samostatnou ucelenou jednotkou, m˚ uˇze b´ yt tak´e distribuov´ ano na v´ıce poˇc´ıtaˇc˚ u, coˇz umoˇzn ˇuje redukovat zat´ıˇzen´ı v´ ypoˇcetn´ı techniky.
5.1.2
Pl´ anov´ an´ı trajektorie
Kaˇzd´e letadlo zastupovan´e v simulaci sv´ ym softwarov´ ym agentem m˚ uˇze kdykoli bˇehem sv´e mise zavolat pl´ anovaˇc trajektorie. Trajektorie generovan´ a pl´ anovaˇcem je vˇzdy spojit´a a skl´ad´a se ze sekvence pˇr´ım´ ych element˚ u a zat´ aˇcek. Trajektorie mus´ı b´ yt napl´ anov´ ana s ohledem na fyzik´aln´ı omezen´ı dopravn´ıho prostˇredku, u letadel napˇr´ıklad minim´ aln´ı moˇzn´ y polomˇer zat´ aˇcky, minim´aln´ı rychlost apod. Pl´anovaˇc trajektori´ı helikopt´er nˇekter´ a omezen´ı, jako je napˇr´ıklad minim´ aln´ı polomˇer zat´aˇcky, nemus´ı br´at v potaz a m˚ uˇze poˇc´ıtat se schopnosti helikopt´er vzn´ aˇset se na m´ıstˇe a svisle stoupat/klesat. Pouˇzit´ ym algoritmem pl´anov´an´ı v souˇcasnosti m˚ uˇze b´ yt Hex-gridov´ y pl´ anovaˇc ([HEX–11]), nebo Accelerated A* ([AAstar–09]), kter´ y bˇehem expanze stavov´eho prostoru urˇcuje d´elku kroku expanze dynamicky, v z´avislosti na vzd´alenosti expandovan´eho stavu od pˇrek´aˇzek.
20
5.1.3
Detekce kolizn´ıch situac´ı
V z´ akladu poskytuje AgentFly nˇekolik metod pro detekci a zabr´anˇen´ı koliz´ı. Kaˇzd´a z nich je implementov´ ana jako oddˇelen´ y plug-in, kter´ y m˚ uˇze b´ yt kdykoli bˇehem letu dle potˇreb aktivov´an a deaktivov´an. Podporov´ an je kooperativn´ı i nekooperativn´ı zp˚ usob. Nekooperativn´ı m´od m˚ uˇze b´ yt nasazen v pˇr´ıpadˇe, ˇze letadlo se kter´ ym nastane potenci´ aln´ı kolizn´ı situace nechce, ˇci nem˚ uˇze komunikovat. Mezi kooperativn´ı zp˚ usoby patˇr´ı peer-to-peer, kdy spolu letadla pˇr´ımo komunikuj´ı po dvojic´ıch, rule-based zaloˇzen´ y na leteck´ ych pravidlech specifikovan´ ych Federal Aviation Administration USA a multi-party collision avoidance pro domluvu ve skupinˇe.
5.1.4
Shrnut´ı vlastnost´ı syst´ emu AgentFly
• distribuovan´ y model leteck´e simulace • pokroˇcil´e pl´ anov´ an´ı trajektori´ı • flexibiln´ı syst´em br´ anˇen´ı koliz´ı • ˇsk´ alovatelnost • pokroˇcil´ a 2D/3D vizualizace Vˇsechna letadla jsou modelov´ ana pomoc´ı autonomn´ıch softwarov´ ych agent˚ u, kdy je kaˇzd´ y agent zodpovˇedn´ y za sv´e operace. Pro bˇeh sv´ ych agent˚ u syst´em AgenFly uˇz´ıv´a multi-agentn´ı platformu AGlobe.
Obr´ azek 5.1: Grafick´a komponenta AgentFly - napl´anovan´a mise
21
Obr´ azek 5.2: Grafick´ a komponenta AgentFly - vizualizace trajektorie letounu
Obr´ azek 5.3: Grafick´a komponenta AgentFly - vizualizace letounu
22
5.2
Multi-agentn´ı platforma AGlobe
AGlobe je multi-agentn´ı platforma pro bˇeh softwarov´ ych agent˚ u napsan´a v jazyce Java. Jej´ımi nejvˇetˇs´ımi pˇrednostmi jsou rychlost, syst´emov´ a nen´ aroˇcnost a moˇznost distribuce simulac´ı na v´ıce poˇc´ıtaˇc˚ u.
5.2.1
Architektura syst´ emu AGlobe
Sch´ema architektury se nach´ az´ı na obr´ azku 5.4.
Obr´ azek 5.4: Architektura syst´emu AGlobe Agent Platform je platforma, kter´ a poskytuje z´akladn´ı prvky pro bˇeh jednoho a v´ıce agentn´ıch kontejner˚ u. Kaˇzd´ a platforma bˇeˇz´ı ve vlastn´ı instanci JVM. Hlavn´ı souˇc´asti agentn´ı platformy jsou Container Manager a modul pro transport zpr´ av Message Transport. Agentn´ı kontejner hostuje softwarov´e agenty a poskytuje jim z´akladn´ı sluˇzby jako napˇr´ıklad management agent˚ u (startov´ an´ı, migraci, ukonˇcov´an´ı) nebo rozhran´ı pro pˇrenos zpr´av. Moˇznost bˇehu v´ıce agentn´ıch kontejner˚ u na jedn´e platformˇe sniˇzuje syst´emovou n´aroˇcnost, protoˇze je potˇreba pouze jedn´e instance JVM. Container Manager zajiˇst’uje startov´an´ı a ukonˇcov´an´ı agentn´ıch kontejner˚ u. Message Transport poskytuje efektivn´ı pos´ıl´an´ı zpr´av (ACL Messages) mezi dvˇema a v´ıce agentn´ımi kontejnery. Agent je z´ akladn´ı autonomn´ı entita bˇeˇz´ıc´ı uvnitˇr agentn´ıho kontejneru. Kaˇzd´ y agent bˇeˇz´ı ve vlastn´ım v´ ypoˇcetn´ım vl´ aknˇe. M˚ uˇze komunikovat s ostatn´ımi agenty pomoc´ı zpr´av ACL Message a informace o simulovan´em svˇetˇe dost´ av´ a pomoc´ı syst´emov´ ych zpr´av Topic˚ u.
23
Kapitola 6
Architektura vyˇ sˇ s´ı ˇ r´ıd´ıc´ı vrstvy V pˇredchoz´ıch kapitol´ ach bylo pˇredstaveno sch´ema vyˇsˇs´ı ˇr´ıd´ıc´ı struktury bezpilotn´ıho syst´emu (sch´ema se nach´ az´ı na obr´ azc´ıch ˇc´ıslo 4.1 a 4.2) a ˇr´ıd´ıc´ı softwarov´a platforma AgentFly. V t´eto kapitole se n´avrh architektury prohloub´ı a konkretizuje. AgentFly bude spouˇstˇen na platformˇe AGlobe a vytvoˇr´ı grafick´e rozhran´ı pro uˇzivatelsk´e zad´av´ an´ı kontroln´ıch bod˚ u trajektorie. D´ ale vytvoˇr´ı a spust´ı simulaˇcn´ı prostˇred´ı, umoˇzn ˇuj´ıc´ı pˇripojen´ı v´ıce bezpilotn´ıch prostˇredk˚ u najednou. Uˇzivatel potom m˚ uˇze specifikovat, kter´emu z nich si pˇreje zadat letov´e pokyny. Bezpilotn´ı prostˇredky nemus´ı b´ yt nutnˇe skuteˇcn´e, mohou existovat pouze v r´amci simulaˇcn´ıho prostˇred´ı. V simulaˇcn´ım syst´emu se vˇsak budou ostatn´ım prostˇredk˚ um jevit jako re´aln´e. Pˇri zapojen´ı simulovan´ ych i skuteˇcn´ ych bezpilotn´ıch prostˇredk˚ u tak vznikne sm´ıˇsen´ a simulace. Kaˇzd´ y bezpilotn´ı prostˇredek je v r´ amci syst´emu reprezentov´an dvˇema agenty, EntityPlaneAgentem a EntityPilotAgentem. Agenti mezi sebou mohou komunikovat prostˇrednictv´ım pos´ıl´an´ı a pˇrij´ım´an´ı zpr´ av, ACL Message. PilotAgent reprezentuje softwarovou ˇc´ast bezpilotn´ıho prostˇredku, kde se zpracov´avaj´ı pˇr´ıchoz´ı kontroln´ı body zadan´e uˇzivatelem pozemn´ı stanice pomoc´ı komponenty pl´anovaˇce. Trajektorie se pl´anovaˇcem zpracov´ avaj´ı s ohledem na fyzick´ a omezen´ı bezpilotn´ıho prostˇredku a bezletov´e z´ony. Bˇehem letu m˚ uˇze doj´ıt k dynamick´emu pˇrepl´ anov´ an´ı vlivem zad´ an´ı nov´ ych bod˚ u ˇci ˇreˇsen´ı kolizn´ı situace. Kaˇzd´ y PilotAgent m´a sv˚ uj vlastn´ı pl´ anovaˇc, kter´ y je vol´ an dle potˇreby. PlaneAgent reprezentuje hardwarovou ˇc´ast entity. Je spojen s modulem EntityBehavior zodpovˇedn´ ym za vlastn´ı reprezentaci prostˇredku v simulaci. Komunikace mezi Behaviorem a PlaneAgentem prob´ıh´a prostˇrednictv´ım syst´emov´ ych zpr´ av AGlobu, Topic˚ u. Ovl´ ad´ an´ı bˇehu simulace maj´ı na starosti agenti SimulationAgent a ScenarioPlayer. ScenarioPlayer je zodpovˇedn´ y za vytvoˇren´ı a pˇr´ıpadn´e odstranˇen´ı bezpilotn´ıch prostˇredk˚ u (nebo tak´e simulaˇcn´ıch entit) ze simulace. Dle konfigurace na zaˇc´ atku bˇehu simulace spust´ı vˇsechny komponenty a agenty, kter´ ymi je entita tvoˇrena. SimulationAgent ovl´ ad´ a simulaci jako takovou. Komunikuje synchronnˇe se vˇsemi Behaviory podle simulaˇcn´ıho ˇcasu, na z´ akladˇe kter´eho Behaviory spoˇc´ıtaj´ı stavy jednotliv´ ych entit v simulovan´em prostˇred´ı.
24
6.1
Realizace entity bezpilotn´ıho syst´ emu LinkQuad
Pro realizaci komunikace pozemn´ı stanice s bezpilotn´ım syst´emem LinkQuad bude na pozemn´ı stanici vytvoˇren samostatn´ y agent, LinkQuadGroundAgent, kter´ y bude prostˇrednictv´ım Wi-Fi s´ıtˇe pˇrij´ımat a odes´ılat zpr´ avy ACL Message. Pˇrij´ımat bude zpr´ avy s aktu´ aln´ım stavem (pozic´ı a n´aklony) helikopt´ery, odes´ılat bude kontroln´ı body trajektorie, kter´e uˇzivatel vybral pomoc´ı grafick´eho rozhran´ı softwaru AgentFly. Data s aktu´aln´ı informac´ı o poloze a stavu helikopt´ery pˇred´ a pomoc´ı asynchronn´ı syst´emov´e zpr´avy (Topicu) do modulu LinkQuadBehavior. Modul LinkQuadBehavior bude zodpovˇedn´ y za reprezentaci entity helikopt´ery v simulaˇcn´ım prostˇred´ı ˇr´ıd´ıc´ıho softwaru AgenFly a bude jako Behaviory vˇsech entit synchronnˇe pˇripojen k SimulationAgentovi. Po obdrˇzen´ı dat dojde k aktualizaci pozice a stavu reprezentace LinkQuadu v simulaˇcn´ım prostˇred´ı. Struktura, kter´ a bude vybudov´ ana na uˇzivatelsk´em poˇc´ıtaˇci Gumstix bude z hlediska nezbytn´ ych komponent AgenFly syst´emu jednoduˇsˇs´ı, neˇz struktura pozemn´ı. V nezbytn´e platformˇe AGlobe budou spuˇstˇeni pouze dva agenti. LinkQuadPlaneAgent a LinkQuadPilotAgent. Komunikace mezi nimi bude prob´ıhat pomoc´ı zpr´ av ACL Message. Oba agenti budou zast´ avat role popsan´e v´ yˇse, tedy LinkQuadPlaneAgent bude ve spojen´ı s niˇzˇs´ı vrstvou pro komunikaci s HW. D´ ale bude pomoc´ı zpr´av ACL Message ve spojen´ı s LinkQuadGroundAgentem a bude mu pˇred´ avat informace o stavu helikopt´ery. Z pozemn´ı stanice LinkQuadPlaneAgent obdrˇz´ı sadu uˇzivatelem zadan´ ych souˇradnic trajektorie a pˇred´a j´ı zpr´avou LinkQuadPilotAgentovi, kter´ y zavol´a pl´ anovaˇc. Po dokonˇcen´ı pl´ anov´ an´ı dojde k pˇred´ an´ı napl´anovan´e trasy zpˇet LinkQuadPlaneAgentovi, kter´ y ji pˇred´ a niˇzˇs´ı ˇr´ıd´ıc´ı vrstvˇe pro komunikaci s HW helikopt´ery. Niˇzˇs´ı vrstvu pro komunikaci s HW a ovl´ ad´an´ı helikopt´ery bude reprezentovat LinkQuadGXsrvr. LinkQuadGXsrvr bude naˇc´ıtat data ze senzor˚ u a v pravideln´ ych intervalech je bude pˇred´avat LinkQuadPlaneAgentovi. V pˇr´ıpadˇe, ˇze obdrˇz´ı sekvenci bod˚ u tvoˇr´ıc´ı trajektorii, vypoˇc´ıt´a pokyny pro autopilota LinkBoard bezpilotn´ıho syst´emu LinkQuad a trajektorii prolet´ı. Sch´ema v´ yˇse popsan´e architektury se nach´az´ı na obr´azku 6.1. Bohuˇzel pro nedostatek ˇcasu, kter´ y vznikl ˇreˇsen´ım probl´em˚ u se stabilitou bezpilotn´ıho syst´emu LinkQuad z˚ ustala v´ yˇse popsan´a struktura pouze konceptem a nebyla naprogramov´ ana a otestov´ ana s v´ yjimkou niˇzˇs´ı vrstvy pro komunikaci a ovl´ad´an´ı HW. LinkQuadGXsrvr byl naprogramov´ an a otestov´ an. Detailnˇeji bude rozebr´an v pˇr´ıˇst´ı kapitole.
25
Obr´ azek 6.1: Sch´ema vyˇsˇs´ı ˇr´ıd´ıc´ı architektury, zobrazuje konfiguraci s helikopt´erou LinkQuad, jedn´ım re´ aln´ ym a jedn´ım simulovan´ ym UAV
26
Kapitola 7
Implementace komunikace a letov´ e ˇ r´ıd´ıc´ı funkce C´ılem t´eto kapitoly je navrhnout a implementovat strukturu pro ˇcten´ı senzorick´ ych dat a ˇr´ızen´ı letu. V´ ysledkem bude program, kter´ y se spust´ı na uˇzivatelsk´em poˇc´ıtaˇci Gumstix, naˇcte data ze senzor˚ u, zpracuje je dle potˇreby a n´ aslednˇe podle nich umoˇzn´ı letˇet na uˇzivatelem urˇcen´ y bod v prostoru. Program se bude pouˇstˇet bud’ samostatnˇe, nebo jako komponenta dˇr´ıve popsan´e ˇr´ıd´ıc´ı struktury. Komunikace s pozemn´ı stanic´ı bude prob´ıhat po 2.4 GHz Wi-Fi ad-hoc s´ıti bud’ pomoc´ı navrˇzen´e struktury, nebo pomoc´ı SSH spojen´ı bud’ prostˇrednictv´ım programu puTTY zn´am´eho z platformy Windows, ˇci pˇr´ıkazem ssh z Linuxov´e pˇr´ıkazov´e ˇr´ adky. Vzhledem k dosahu t´eto s´ıtˇe, kter´ y je do 100 m od pozemn´ı stanice, je potˇreba m´ıt tuto skuteˇcnost na vˇedom´ı a bud’ l´etat ve vymezen´em okruhu, nebo program spouˇstˇet pomoc´ı pˇr´ıkazu screen. 1
7.1
Komunikaˇ cn´ı server LinkQuadGXsrvr
SMCU i CMCU pos´ılaj´ı data ze senzor˚ u na s´eriov´e porty RS232, ke kter´ ym je pˇripojen poˇc´ıtaˇc Gumstix. Angstr¨ om Linux bˇeˇz´ıc´ı na Gumstixu oba porty detekuje a pˇripoj´ı do adres´aˇre /dev/ slouˇz´ıc´ıho jako adres´ aˇr pˇripojen´ ych zaˇr´ızen´ı. V souˇcasnosti je port CMCU mapov´an jako /dev/ttyS0 a port SMCU jako /dev/ttyS2. Oba porty je pˇred pouˇzit´ım nutn´e zkonfigurovat, nastavit baudrate, pˇr´ıstupov´ y m´od atd. Pro pˇripojen´ı a konfiguraci s´eriov´ ych port˚ u se v Javˇe m˚ uˇze kromˇe placen´ ych modul˚ u pouˇz´ıt i opensource knihovna RXTX, ale bˇehem v´ yvoje se uk´ azalo, ˇze nefunguje spolehlivˇe. Proto bude mezi hardwarovou platformu a komunikaˇcn´ı server v Javˇe vloˇzena mezivrstva, server serialComm psan´ y v jazyku C, kter´ y zkonfiguruje porty a umoˇzn´ı ˇcten´ı/z´apis dat. Data naˇcten´ a z obou MCU budou zpracov´ana a vyuˇzita ve funkci ˇr´ızen´ı letu, kter´a vypoˇcte c´ıle pro vnˇejˇs´ı kontroln´ı smyˇcku a pˇred´ a je pomoc´ı z´ apisu uˇzivatelsk´ ych parametr˚ u na port CMCU. Uk´ azky v´ ystupu tohoto programu jsou na obr´azc´ıch 7.4 a 7.5 na konci t´eto kapitoly.
7.2
Z´ akladn´ı struktura programu LinkQuadGXsrvr
N´ asleduj´ıc´ı ˇra´dky budou popisovat obecnou strukturu programu, pot´e budou rozebr´any vybran´e tˇr´ıdy a jejich ˇcinnosti. Program nejprve vytvoˇr´ı dvˇe instance tˇr´ıdy LinkGXConnector (controlPort a sensorPort), jednu pro obsluhu komunikace s portem CMCU a druhou pro obsluhu SMCU. LinkGXConnector je tedy zodpovˇedn´ y za ˇcten´ı a z´ apis na jeden s´eriov´ y port z t´eto vyˇsˇs´ı programov´e u ´rovnˇe. Aby nav´azal spojen´ı, LinkGXConnector nejdˇr´ıve spust´ı serialComm3, C socket server, viz pˇredchoz´ı sekce. D´ ale mus´ı specifikovat, kter´ a data a jak ˇcasto maj´ı b´ yt pos´ıl´ana. Tomu se dˇeje prostˇrednictv´ım sestaven´ı a 1 Pouˇ stˇ et programem screen a pak jej pˇr´ıkazem odpojit od termin´ alu, ˇ c´ımˇ z se program zbav´ı z´ avislosti na SSH spojen´ı a nebude hrozit pozastaven´ı ˇ cinnosti programu pˇri v´ ypadku spojen´ı.
27
odesl´ an´ı poˇzadavku na oba s´eriov´e porty. Poˇzadavek staˇc´ı odeslat pouze jednou na zaˇc´atku spojen´ı. Vyˇz´ adan´ a data jsou potom autopilotem LinkBoard pos´ıl´ana automaticky. Oba connectory pot´e spust´ı kaˇzd´ y sv´e vl´ akno pro ˇcten´ı dat pˇr´ıchoz´ıch ze serialCommu. Komunikace prob´ıh´ a pomoc´ı paket˚ u, je tedy nutn´e jednotliv´e pakety rozkl´adat a sestavovat z nich data. Sestaven´ a data vl´ akna controlPortu i sensorPortu zapisuj´ı do hs_received, instance tˇr´ıdy HeliState, odkud je bˇeˇz´ıc´ı vl´ akno objektu LinkUpdater updater v pravideln´ ych intervalech kop´ıruje do objektu heliState. Dˇeje se tomu tak proto, ˇze do hs_received se zapisuj´ı nov´a data jakmile pˇrijdou a zpracuj´ı se. Mezit´ım jsou vˇsak naˇcten´ a data potˇreba ve zbytku programu, pˇredevˇs´ım ˇr´ıd´ıc´ıch funkc´ıch letu. Tento pˇr´ıstup zm´ırn´ı n´asledky reˇzie synchronizace v´ıcevl´ aknov´eho pˇr´ıstupu k jednomu objektu. Nav´ıc umoˇzn´ı sledovat, jestli nedoˇslo k pˇrepnut´ı letov´eho m´ odu (to kdyˇz se liˇs´ı letov´e m´ ody v hs_received a heliState) a ihned na to zareagovat v hlavn´ı programov´e smyˇcce. Aktu´ aln´ı polohu a dalˇs´ı data zaznamen´av´a do souboru flightlog.txt v nastaviteln´ ych intervalech objekt LinkVarLogger. Ten kv˚ uli sv´e ˇcinnosti ve sv´em vl´aknˇe tak´e mus´ı pˇristupovat k objektu heliState. Hlavn´ı programov´ a smyˇcka je zodpovˇedn´a za obsluhu pˇr´ıkaz˚ u, bud’ zadan´ ych uˇzivatelem pomoc´ı stisku kl´ aves, ˇci m´ odem letu po bodech v prostoru. D´ale zodpov´ıd´a za pravideln´e (vˇzdy po 0.1 s) vol´an´ı ˇr´ıd´ıc´ı funkce letu flyTo() objektu FlightOperator. Ke spr´avn´emu fungov´an´ı t´eto funkce je potˇreba aktu´aln´ı stav helikopt´ery uloˇzen´ y v objektu heliState. Metoda flyTo() vypoˇcte v´ ystupn´ı uˇzivatelsk´e parametry (c´ıle pro vnˇejˇs´ı kontroln´ı smyˇcku CMCU) a pˇred´ a je controlPortu, kter´ y je rozloˇz´ı do paket˚ u a odeˇsle serialCommu, aby je zapsal na s´eriov´ y port CMCU.
Obr´ azek 7.1: Z´ akladn´ı struktura programu LinkQuadGXsrvr
7.3
serialComm3: C socket server
Tento program vytv´ aˇr´ı serverov´ y socket, do kter´eho se pˇripoj´ı Javovsk´ y program. Javovsk´ y program tento server tak´e spouˇst´ı. Slouˇz´ı pouze ke ˇcten´ı/z´apisu dat z/na jeden s´eriov´ y port. Program pˇrij´ım´a dva argumenty, ID portu (textem zadan´ a cesta Linuxov´eho zaˇr´ızen´ı) a ˇc´ıslo portu. Server je dvou-vl´aknov´ y, po zkonfigurov´ an´ı portu spust´ı zapisovac´ı vl´ akno, kter´e ˇcte ze socketu a pˇrijat´a data ihned zap´ıˇse na port. Druh´e vl´akno je ˇctec´ı. To ˇcte pˇr´ıchoz´ı data z portu a ihned je odes´ıl´a na socket. T´ımto zp˚ usobem je umoˇznˇena pln´a komunikace pˇres s´eriov´ y port. Na zaˇc´ atku je port otevˇren pro ˇcten´ı i z´apis, z´apis neblokuje v´ ystup, jedn´a se tedy o asynchronn´ı komunikaci. Pomoc´ı struktury jazyka C termios, kter´a tvoˇr´ı termin´alov´ y interface pro konfiguraci asynchronn´ıch komunikaˇcn´ıch port˚ u, jsou posl´eze nastaveny poˇzadovan´e atributy portu. Vˇsechna moˇzn´a nastaven´ı (a pˇr´ısluˇsn´e konstanty) jsou k nalezen´ı bud’ v dokumentaci jazyka C, nebo v Linuxov´ ych manu´alov´ ych str´ank´ach (pˇr´ıkaz man termios).
28
7.4
Hlavn´ı ˇ r´ıd´ıc´ı funkce
Hlavn´ı ˇr´ıd´ıc´ı funkce startServer() je vstupem do cel´eho programu LinkQuadGXsrvr. Je zodpovˇedn´a za inicializaci vˇsech pomocn´ ych struktur a za ˇr´ızen´ı letu. Vytvoˇr´ı a pˇripoj´ı oba LinkGXConnectory, kter´e prostˇrednictv´ım spuˇstˇen´ı a pˇripojen´ı serialCommu obstaraj´ı komunikaci se s´eriov´ ymi porty. Pˇri inicializaci hlavn´ı funkce ˇcek´ a, dokud ze s´eriov´ ych port˚ u nepˇrijdou prvn´ı validn´ı data (to zabr´an´ı nehod´am pˇri zapnut´ı LinkQuadGXsrvru za letu) a pot´e spust´ı ˇr´ıd´ıc´ı smyˇcku. Na zaˇc´ atku ˇr´ıd´ıc´ı smyˇcky se vˇzdy zkontroluje standardn´ı vstup, jestli uˇzivatel pomoc´ı kl´avesnice nezadal letov´e pokyny (v souˇcasnosti let o konstantn´ı vzd´alenost dopˇredu, dozadu, do stran, nahoru, dol˚ u, zmˇenu kurzu a spuˇstˇen´ı letu po trajektorii zadan´e seznamem bod˚ u). D´ale dojde pomoc´ı porovn´an´ı letov´ ych m´od˚ u v heliState a hs_received k odchycen´ı a obslouˇzen´ı pˇr´ıpadn´e zmˇeny letov´ ych m´od˚ u. V pˇr´ıpadˇe plnˇe ruˇcn´ıho reˇzimu dojde pouze k pˇred´an´ı aktu´aln´ıho stavu helikopt´ery do uˇzivatelsk´ ych parametr˚ u a letov´e pokyny z kl´ avesnice jsou ignorov´any. Pˇri plnˇe automatick´em letu se vyhodnot´ı pˇr´ıpadn´e pokyny od uˇzivatele, dle nich se adekv´atnˇe zmˇen´ı letov´e c´ıle a dojde k inicializaci letu prvn´ım vol´ an´ım funkce flyTo() objektu FlightOperator. Tato funkce vypoˇcte hodnoty uˇzivatelsk´ ych parametr˚ u. V kaˇzd´e dalˇs´ı iteraci ˇr´ıd´ıc´ı funkce se funkce flyTo() vol´a znovu a t´ım ˇr´ıd´ı let po celou dobu bˇehu programu v automatick´em reˇzimu. Funkce flyTo() se z´aroveˇ n star´a o kontrolu, jestli uˇz nebylo dosaˇzeno c´ıle. Pˇrijateln´ a odchylka je nastaven´a na 1 m. V tom pˇr´ıpadˇe dojde k uloˇzen´ı aktu´aln´ı pozice helikopt´ery a vzn´ aˇsen´ı stroje na m´ıstˇe. Pro proletˇen´ı trajektorie (spuˇstˇen´e pˇr´ıkazem CMD_WAYPOINT) se uˇz´ıv´a seznam bod˚ u, mezi kter´ ymi helikopt´era pˇr´ımoˇcaˇre l´et´ a. Od v´ yˇse popsan´eho se prol´et´an´ı trajektorie liˇs´ı v tom, ˇze kdyˇz helikopt´era doraz´ı do c´ıle (jednoho ze zadan´ ych bod˚ u trasy), kontroluje pˇr´ıtomnost dalˇs´ıho zadan´eho bodu. Kdyˇz seznam bod˚ u obsahuje dalˇs´ı bod, iniciuje se automaticky dalˇs´ı let. To ale pouze v pˇr´ıpadˇe, ˇze uˇzivatel mezit´ım nezmˇenil pˇr´ıkaz z CMD_WAYPOINT na jin´ y. Na konci ˇr´ıd´ıc´ı smyˇcky pokaˇzd´e dojde k zaps´an´ı aktu´alnˇe vypoˇcten´ ych uˇzivatelsk´ ych parametr˚ u na port CMCU a pozastaven´ı bˇehu (na 0.1 s) pˇred dalˇs´ı iterac´ı.
7.5
Pˇ rij´ım´ an´ı paket˚ u
Data jsou na s´eriov´e porty autopilotem LinkBoard pos´ıl´ana ve formˇe paket˚ u. Tak´e ˇz´adosti o promˇenn´e musej´ı b´ yt odesl´ any v t´eto podobˇe. Proto bude prvn´ı uk´az´ana skladba paketu po jednotliv´ ych bytech. Sloˇzen´ı paketu bylo odpozorov´ ano z uk´ azky k´ odu poskytnut´e v´ yrobcem zaˇr´ızen´ı. Index zaˇc´ın´a ˇc´ıslem 1. ID1
ID2
len
VER
flagy
SRC
DEST
TYPE
SEQ
data
...
posledn´ı data
CHKSUM
• ID1 a ID2 - identifik´ atory zaˇc´ atku paketu. Maj´ı hodnoty 107, respektive 120, ve znac´ıch ’x’ a ’m’. • len - d´elka paketu bez prvn´ıch 3 byt˚ u, tedy bez ID1, ID2 a t´eto len. • VER - verze komunikaˇcn´ıho protokolu, v souˇcasnosti konst. 0. • flagy - jednotliv´e bity nesou informaci o tom, jestli jsou byty SRC, DEST, TYPE a SEQ nastaveny. • SRC - identifik´ ator zdroje, nen´ı v souˇcasn´e verzi vyuˇzit • DEST - id c´ıle paketu, nen´ı v souˇcasn´e verzi vyuˇzit • TYPE - urˇcuje typ paketu • SEQ - sekvenˇcn´ı ˇc´ıslo, nen´ı v souˇcasn´e verzi vyuˇzito • data - prvn´ı byte obsahuj´ıc´ı skuteˇcn´ a data, m´a index v z´avislosti na d´elce hlaviˇcky 3 + d´elka hlaviˇcky. • posledn´ı data - posledn´ı byte dat, m´a index len + 3 - 1 • CHKSUM - kontroln´ı CRC souˇcet, xoruj´ı se vˇsechny byty kromˇe tohoto. M´a index 3 + len. 29
Hlaviˇcka paketu, to jest byty VER, flagy, SRC, DEST, TYPE a SEQ, m´a promˇenlivou d´elku v z´avislosti na tom, kter´e byty jsou nastaveny (nastaven´ı se vyznaˇc´ı pomoc´ı jednotliv´ ych bit˚ u v bytu flagy). Minim´aln´ı d´elka hlaviˇcky jsou 3 byty - VER, flagy a TYPE. Data od serialCommu jsou v LinkGXConnectoru ˇctena pomoc´ı Javovsk´eho InputStreamu a kop´ırov´ ana do objektu RingBuffer, kruhov´eho bufferu, kter´ y zaruˇcuje, ˇze kdyby byla naˇctena jen ˇc´ast paketu, zbytek se naˇcte pˇri n´ asleduj´ıc´ım ˇcten´ı a bude zaˇrazen hned za prvn´ı ˇc´ast. SMCU i CMCU maj´ı tyto objekty separ´atn´ı Je vidˇet, ˇze v pˇr´ıpadˇe, kdy je u ´loˇzn´ a struktura RingBufferu zcela zaplnˇen´a a pokus´ıme se o vloˇzen´ı nov´eho prvku, dojde k pˇreteˇcen´ı bufferu a pˇreps´ an´ı prvn´ıho uloˇzen´eho prvku. Za norm´aln´ıch okolnost´ı je program dost rychl´ y na to, aby naˇcten´e pakety z bufferu st´ıhal zpracovat a uvolnit m´ısto pro nov´e, naˇcten´e. V pˇr´ıpadˇe ˇze by doˇslo k zahlcen´ı a jeden (ˇci v´ıce) byte by byl pˇreps´an, takto poˇskozen´ y paket by neproˇsel pozdˇejˇs´ı kontrolou a byl z bufferu vymaz´ an. RingBuffer je d´ ale proch´ azen od zaˇc´ atku (tedy od pozice prvn´ıho prvku) a jsou hled´any ID1 a ID2 byty. V pˇr´ıpadˇe n´ alezu se kromˇe vymaz´ an´ı pˇredch´azej´ıc´ıch (nepotˇrebn´ ych) byt˚ u provˇeˇr´ı podle bytu len, jestli buffer obsahuje dostateˇcn´e mnoˇzstv´ı naˇcten´ ych byt˚ u. Kdyˇz ano, nakop´ıruje se u ´sek byt˚ u patˇriˇcn´e d´elky do datov´e struktury objektu Packet. V pˇr´ıpadˇe opaku to znamen´a, ˇze cel´ y paket jeˇstˇe nedorazil a zbytek teprve ˇcek´ a na naˇcten´ı. Pot´e se operac´ı xor na vˇsechny byty paketu kromˇe posledn´ıho spoˇcte kontroln´ı souˇcet a porovn´ a se s posledn´ım bytem paketu. V kaˇzd´em pˇr´ıpadˇe pot´e dojde k uvolnˇen´ı m´ısta vymaz´an´ım nakop´ırovan´ ych byt˚ u z RingBufferu. Pokud hodnota kontroln´ıho souˇctu souhlas´ı s bytem CRC, paket je ˇr´adnˇe naˇcten a m˚ uˇze se pˇristoupit k jeho rozbalen´ı. Rozbalen´ı zaˇcne po kontrole bytu VER, tedy jestli se jedn´a o poˇzadovanou verzi protokolu. Pˇri u ´spˇeˇsn´e kontrole dojde na pˇreˇcten´ı informac´ı z hlaviˇcky paketu a vytvoˇren´ı objektu Metadata obsahuj´ıc´ıho informace o uloˇzen´ ych datech, ze kter´ ych je v souˇcasnosti d˚ uleˇzit´a ta o typu paketu. Podle takto urˇcen´eho typu paketu posl´eze dojde ke sloˇzen´ı dat z paketu. Jak bylo ˇreˇceno v u ´vodu, pˇred zaˇc´atkem komunikace je potˇreba na oba porty poslat paket se ˇz´ adost´ı obsahuj´ıc´ı informace kter´a senzorov´a data (promˇenn´e) jsou poˇzadov´ana a jak ˇcasto se maj´ı pos´ılat. Uˇz na zaˇc´ atku je tedy zn´ amo, co za data od kter´eho portu budou pˇrich´azet a nyn´ı podle t´eto informace staˇc´ı data extrahovat a spr´ avnˇe sloˇzit z datov´e sekce paketu. Promˇenn´e jsou r˚ uzn´eho typu, od float pˇres int po byte a to vˇcetnˇe variant bez znam´enka. Pˇri skl´ad´an´ı promˇenn´ ych se mus´ı kromˇe jejich bytov´ ych d´elek a poˇrad´ı v jak´em jsou v paketu br´ at na zˇretel tzv. endiannes, tzn. ˇze Angstr¨ om Linux a platforma LinkBoard je little endian, zat´ımco Javovsk´ a Virtual Machine je Big Endian. Je tedy nutn´e spr´ avnˇe mˇenit poˇrad´ı byt˚ u promˇenn´ ych. Naˇcten´ a data jsou uloˇzena do pomocn´ ych struktur SCMCUData a SSMCUData, ze kter´ ych jsou po dokonˇcen´ı skl´ ad´ an´ı synchronnˇe zkop´ırov´ana do objektu HeliState.
7.6
ˇ adosti o promˇ Z´ enn´ e a z´ apis uˇ zivatelsk´ ych parametr˚ u
Jak odesl´ an´ı ˇz´ adost´ı, tak uˇzivatelsk´ ych parametr˚ u je implementov´ano tˇr´ıdou Communication, kde se nach´ az´ı statick´e metody jak pro ˇz´ adost u ´daj˚ u z SMCU, tak CMCU a tak´e z´apis uˇzivatelsk´ ych parametr˚ u na port. Promˇenn´ ych v souˇcasn´e verzi LinkBoardu existuje 158 pro CMCU a 67 pro SMCU. Typ, mˇeˇr´ıtko, identifik´ atory a jednotky promˇenn´ ych jsou urˇceny verz´ı LinkBoardu a jsou pops´any pomoc´ı PDF dokumentu dodan´eho v´ yrobcem zaˇr´ızen´ı. Tvorba ˇz´ adost´ı o promˇenn´e je pomˇernˇe pˇr´ımoˇcarou z´aleˇzitost´ı. Do pole jsou uloˇzeny identifik´atory promˇenn´ ych. Protoˇze je toto pole vytv´ aˇreno spolu s inicializac´ı instance objektu SCMCUDataRequestPart s fixn´ı d´elkou rovnou maxim´ aln´ımu poˇctu promˇenn´ ych, je nutn´e uloˇzit i jejich poˇcet. N´aslednˇe dojde k volbˇe ˇcetnosti odes´ıl´ an´ı. Pot´e pˇrijde na ˇradu tvorba Metadat, ale jedin´e, co je v souˇcasn´e verzi protokolu vyuˇzito je typ paketu. Podle zadan´ ych metadat dojde k vytvoˇren´ı hlaviˇcky, d´ale se zap´ıˇse poˇcet a identifik´atory promˇenn´ ych do datov´e ˇc´ asti paketu, paket se uzavˇre vypoˇc´ıt´ an´ım a zaps´an´ım kontroln´ıho souˇctu a pot´e se pˇred´a LinkGXConnectoru aby jej zapsal na s´eriov´ y port. N´ asleduj´ıc´ı ˇr´ adky se budou vˇenovat odesl´an´ı uˇzivatelsk´ ych parametr˚ u na s´eriov´ y port. Uˇzivatelsk´ ych parametr˚ u je v souˇcasnosti v´ıce typ˚ u (float, int, uint8_t ...). Od kaˇzd´eho typu existuje 10 promˇenn´ ych. LinkQuadGXsrvr vyuˇz´ıv´ a vˇsech 10 floatov´ ych uˇzivatelsk´ ych parametr˚ u. Pˇred odesl´an´ım hodnot je nutn´e nastavit pomoc´ı flag˚ u, o kter´e parametry a promˇennou se jedn´a. Pro ˇsetˇren´ı v´ ypoˇcetn´ıho ˇcasu se vzhledem k tomu, ˇze v pr˚ ubˇehu bˇehu programu budou odes´ıl´ any neust´ale ty stejn´e parametry, flagy vytvoˇr´ı pouze jednou na zaˇc´ atku pˇri prvn´ım odesl´ an´ı. Stejnˇe jako je tomu tak pˇri tvorbˇe ˇz´adosti o promˇenn´e, dojde n´aslednˇe k uloˇzen´ı dat do pomocn´e struktury, k jejich rozloˇzen´ı a uloˇzen´ı do datov´e ˇc´asti paketu. D´ale se vytvoˇr´ı hlaviˇcka a kontroln´ı 30
souˇcet a hotov´ y paket se odeˇsle na CMCU port.
7.7 7.7.1
ˇ ıd´ıc´ı funkce letu R´ Funkce letu po pˇ r´ımce
Jak uˇz napov´ıd´ a n´ azev, funkce FlightOperator.flyTo() m´a na starosti ˇr´ızen´ı letu helikopt´ery. Kv˚ uli probl´em˚ um se stabilitou platformy LinkQuad je v souˇcasn´e dobˇe implementov´ana pomˇernˇe jednoduch´ ym zp˚ usobem (o probl´emech v´ıce viz sekce 8.2). Funkce vyjde ze souˇcasn´eho stavu helikopt´ery a kalkuluje v´ ystupn´ı parametry tak, aby helikopt´era letˇela pˇr´ımou ˇcarou k c´ılov´emu bodu. Pˇri letu se stˇr´ıdaj´ı tˇri f´aze. F´aze akcelerace, f´ aze letu pˇri dosaˇzen´ı poˇzadovan´e cestovn´ı rychlosti a f´aze brzdˇen´ı pˇred c´ılem, viz obr´azek 7.2, pˇrejato z [Wzorek–11]. Helikopt´era tedy pˇri dos´ ahnut´ı kaˇzd´eho zadan´eho bodu zastav´ı a zaˇcne akcelerovat k dalˇs´ımu.
Obr´ azek 7.2: Optim´aln´ı v´ yvoj rychlosti
Cestovn´ı rychlost je v souˇcasnosti z bezpeˇcnostn´ıch d˚ uvod˚ u konstantn´ı a nastavena na maximum 4 m/s s pomalou akcelerac´ı. Helikopt´era let´ıc´ı mezi dvˇema body se pohybuje po u ´seˇcce. Tato u ´seˇcka je parametrick´ a, ˇ ıd´ıc´ı funkce tedy vypoˇcte z´ avisl´ a na parametru t. V ˇcase t=0 je ve v´ ychoz´ım bodu, v ˇcase t=1 je v c´ılov´em bodu. R´ aktu´ aln´ı ˇcas, respektive hodnotu parametru relativn´ıho ˇcasov´eho kroku (v programu promˇenn´a tpar), dle nˇej aktu´ aln´ı pˇredpokl´ adan´e hodnoty polohy helikopt´ery na u ´seˇcce (tzv. referenˇcn´ı, ˇci kontroln´ı bod, v programu promˇenn´e refPoint v objektu LineOut) a porovn´a j´ı s hodnotou polohy aktu´aln´ı. Uk´azka na obr´azku 7.3 pˇrejata z [Wzorek–11]. Pˇri odchylk´ ach nastav´ı uˇzivatelsk´e parametry tak, aby se helikopt´era vr´atila na svou trasu. D´ ale akceleruje do dosaˇzen´ı cestovn´ı rychlosti a hl´ıd´a vzd´alenost od c´ılov´eho bodu. V z´avislosti na rychlosti zaˇcne v urˇcit´e vzd´ alenosti od c´ıle brzdit. Vˇsechny tyto letov´e operace jsou omezeny fyzik´aln´ımi vlastnostmi helikopt´ery a zvolenou bezpeˇcnostn´ı rezervou. Nyn´ı bude pops´ ano jak prob´ıh´ a v´ yˇse popsan´ y postup v programov´em k´odu. Pˇri prvn´ım spuˇstˇen´ı (inicializaci) si funkce flyTo() uloˇz´ı v´ ychoz´ı stav helikopt´ery. tpar m´a na zaˇc´atku hodnotu 0. D´ale spust´ı pomocnou funkci line() zodpovˇednou za v´ ypoˇcet vzd´ alenosti c´ılov´eho bodu a hlavnˇe za polohu aktu´aln´ıho referenˇcn´ıho bodu trajektorie v z´ avislosti na hodnotˇe tpar. Tyto hodnoty line() uloˇz´ı do objektu LineOut lnOut. Pˇri dalˇs´ı iteraci hlavn´ı kontroln´ı funkce je funkce flyto() spuˇstˇena znovu a aktualizuje informace o poloze helikopt´ery. N´ aslednˇe opˇet spust´ı line(), kter´ a vypoˇcte nov´ y referenˇcn´ı bod. flyto() pot´e porovn´a aktu´aln´ı polohu s polohou referenˇcn´ıho bodu a na z´ akladnˇe pomˇeru vzd´alenosti tˇechto dvou poloh s celkovou d´elkou trasy vypoˇcte normalizovan´e ∆ tpar, kter´e pot´e pˇriˇcte k souˇcasn´e hodnotˇe parametru a t´ım posune referenˇcn´ı bod pˇr´ıˇst´ı iterace. Sada podm´ınek zajist´ı, aby tpar ∈ <0,1> a aby tpar >= tpar pˇ redchoz´ ı. V t´eto iteraci se nakonec jeˇstˇe nastav´ı v´ ystupn´ı parametry jako objekt FlightToOut out, kam se jako c´ıl polohy uloˇz´ı inici´aln´ı poloha + referenˇcn´ı bod, jako rychlost rychlost spoˇcten´a s ohledem na limity, akceleraci a brzdˇen´ı. Kurz v souˇcasn´e verzi z˚ ustane zachov´ an inici´ aln´ı, ale k´ od je pˇripraven na pˇr´ıpadnou rotaci helikopt´ery do smˇeru letu. Objekt FlightToOut out pot´e hlavn´ı ˇr´ıd´ıc´ı funkce vezme a zap´ıˇse pomoc´ı sloˇzen´eho paketu na s´eriov´ y port. 31
Obr´ azek 7.3: Trajektorie a referenˇcn´ı (kontroln´ı) bod.
7.7.2
Funkce rotace
Tato funkce zajiˇst’uje vzhledem k relativn´ı nestabilitˇe platformy pˇri pˇr´ıliˇs rychl´e zmˇenˇe kurzu pouze to, aby rotace prob´ıhala o stanoven´ y limit ve stupn´ıch a aby se na nov´ y kurz helikopt´era ot´aˇcela kratˇs´ı trasou. Funkce tedy spoˇcte ∆ kurz, poˇcet stupˇ n˚ u, o kter´ y se helikopt´era bˇehem iterace m´a otoˇcit a pˇred´a tuto hodnotu uˇzivatelsk´ ym parametr˚ um. Funkce je spouˇstˇena iterativnˇe hlavn´ı funkc´ı pˇres funkci flyTo() do t´e doby, dokud helikopt´era nen´ı natoˇcena poˇzadovan´ ym smˇerem.
Obr´ azek 7.4: Zobrazen´ı naˇcten´ ych senzorov´ ych veliˇcin pomoc´ı LinkQuadGXsrvru
Obr´ azek 7.5: Uk´ azka v´ ystupu LinkQuadGXsrvru pˇri zad´an´ı pokynu k letu. Tento uk´azkov´ y pokyn byl zad´ an bez sign´ alu GPS, coˇz zp˚ usobilo takto velik´e z´aporn´e hodnoty souˇradnic.
32
Kapitola 8
Experimenty 8.1
V simulaci
Pˇri komunikaci s dodavatelem helikopt´ery LinkQuad byly pˇredstaveny pl´any budouc´ıho rozvoje platformy. Pl´ any poˇc´ıtaly s t´ım, ˇze bude dodavatelem naprogramov´an Datov´ y hub, program, kter´ y by obstaral komunikaci pozemn´ı stanice s platformou. Do tohoto hubu by mˇely b´ yt pˇripojeny vˇsechny ostatn´ı programy a komponenty, jako je napˇr. ˇr´ıd´ıc´ı software AgenFly. Zapojitelnou souˇc´ ast´ı mˇela b´ yt i softwarov´a fyzik´aln´ı simulace helikopt´ery LinkQuad. Bohuˇzel do t´eto chv´ıle dodavatel zaˇr´ızen´ı nedodal ani Datov´ y hub, ani simulaˇcn´ı program. Pr´ace [Jiˇrinec–11], kde se Tom´aˇs Jiˇrinec zab´ yval stabilizac´ı t´eto helikopt´ery a kter´ a vedla k vytvoˇren´ı SimuLinkov´eho modelu t´eto helikopt´ery, nemohla b´ yt pouˇzita pro pˇrechod na novou verzi autopilotu LinkBoard a s t´ım souvisej´ıc´ı zmˇenu charakteristik helikopt´ery.
8.2
Na re´ aln´ em HW
Zˇrejmˇe nejd´ele trvaj´ıc´ı byly experimenty na re´aln´em HW prov´adˇen´e za u ´ˇcelem nalezen´ı vhodn´eho nastaven´ı konstant ˇr´ıd´ıc´ıch smyˇcek autopilotu. Vzhledem k nedostatku dokumentace veˇsker´e ladˇen´ı prob´ıhalo experiment´ alnˇe iterativn´ım zp˚ usobem. Optim´ aln´ı naladˇen´ı si kladlo za c´ıl splnit tyto podm´ınky: • snadn´ a ovladatelnost z vys´ılaˇcky ve venkovn´ım a vnitˇrn´ım prostˇred´ı • stabilita v bezvˇetˇr´ı a ve stˇrednˇe siln´em vˇetru • stabilita bˇehem pˇrep´ın´ an´ı letov´ ych reˇzim˚ u • dostateˇcnˇe siln´ a odezva vnˇejˇs´ıch kontroln´ıch smyˇcek na zmˇenu uˇzivatelsk´ ych parametr˚ u Bˇehem re´ aln´ ych experiment˚ u byly zjiˇstˇeny n´asleduj´ıc´ı probl´emy s ˇr´ıd´ıc´ım firmwarem autopilotu LinkBoard: • Nestabilita pˇ ri zmˇ enˇ e kurzu - pˇri pˇr´ıliˇs rychl´e zmˇenˇe autopilot nen´ı schopen helikopt´eru dostateˇcnˇe rychle stabilizovat a m˚ uˇze doj´ıt k p´ adu. • Nestabilita pˇ ri pˇ rep´ın´ an´ı letov´ ych reˇ zim˚ u - Nestabilita se projevuje v´ ypadkem jednoho (n´ ahodnˇe) motoru a nezastaviteln´ ym p´ adem helikopt´ery. Na odstranˇen´ı t´eto vady firmware spolupracoval v´ yrobce n´ avrhem unifikovat zcela konstanty vnitˇrn´ıch smyˇcek automatick´eho i ruˇcn´ıho reˇzimu a nastavit mixer tak, aby motory neust´ ale bez ohledu na situaci dosahovaly minim´aln´ıch ot´aˇcek. Po aplikaci tˇechto n´ avrh˚ u se situace nezlepˇsila. V´ yrobce zkontroloval uˇzit´ y konfiguraˇcn´ı soubor a sl´ıbil dodat referenˇcn´ı konfiguraˇcn´ı soubor, popˇr´ıpadˇe novou verzi ˇr´ıd´ıc´ıho firmware. Do souˇcasn´e chv´ıle tak neuˇcinil. Podaˇrilo se vˇsak nal´ezt metodu jak toto chov´an´ı eliminovat. Nehody mˇely vˇzdy spojitost s nastaven´ ym v´ ykonem motor˚ u. Standardn´ı pˇrepnut´ı na automatick´ y m´od by mˇelo prob´ıhat ruˇcn´ım letem na poˇzadovanou pozici, zastaven´ım helikopt´ery na m´ıstˇe a upraven´ım v´ ykonu motor˚ u tak, aby se stroj volnˇe vzn´ aˇsel. Pˇri 33
tomto postupu helikopt´era selh´ av´ a. Avˇsak pˇri aplikaci v´ ykonu dostateˇcn´eho pro stoup´an´ı helikopt´ery se stabilita bˇehem pˇrep´ın´ an´ı reˇzim˚ u citelnˇe zlepˇsila. • Nestabilita pˇ ri vˇ etru - V bezvˇetˇr´ı je schopen bezprobl´emov´eho vzn´aˇsen´ı kolem bodu, od kter´eho se pˇr´ıliˇs nevzdaluje (maxim´ alnˇe o polomˇer cca 1 m). Ve vˇetru rychlosti do cca 5 m/s se rozptyl pozice okolo bodu podstatnˇe zv´ yˇs´ı. Pˇri vˇetˇs´ı rychlosti vˇetru nelze automatick´ y let vzhledem k nestabilitˇe doporuˇcit. Bˇehem hled´ an´ı pˇrijateln´eho nastaven´ı bylo pˇristoupeno k experiment˚ um s dosahem komunikace a hlavnˇe k experiment˚ um s automatick´ ym udrˇzov´ an´ım polohy syst´emu LinkQuad. Po odladˇen´ı nalezen´ ych chyb experimenty pokraˇcovaly v podobˇe pokusn´ ych let˚ u ˇr´ızen´ ych pokyny uˇzivatele z kl´avesnice za u ´ˇcelem nalezen´ı chyb v k´ odu letov´e ˇr´ıd´ıc´ı funkce. Posledn´ı testov´an´ı se t´ ykalo automatick´eho pr˚ uletu jednoduch´e trajektorie dan´e fixn´ım seznamem souˇradnic. N´ asleduj´ıc´ı sekce se budou zab´ yvat jednotliv´ ymi experimenty v pr˚ ubˇehu v´ yvoje.
8.2.1
Vnitˇ rn´ı prostˇ red´ı
Prvn´ım c´ılem bylo naj´ıt nastaven´ı, kter´e by dovolilo ovl´adat helikopt´eru ve vnitˇrn´ıch prostor´ach. Ve vnitˇrn´ıch prostor´ ach m´ a smysl uvaˇzovat pouze o ovl´ ad´an´ı z RC vys´ılaˇcky, nebot’ automatick´ y let je z´avisl´ y na GPS. L´etan´ı ve vnitˇrn´ıch prostor´ ach je pro helikopt´eru z hlediska stabilizace snazˇs´ı, protoˇze na let nemaj´ı vliv faktory jako v´ıtr a j´ım produkovan´e turbulence. St´ısnˇen´e prostory vˇsak zvyˇsuj´ı n´aroky na rychlost a citlivost reakce lidsk´eho pilota. Vliv vˇsak maj´ı relativnˇe st´ısnˇen´e prostory, uˇzit´ y bezpeˇcnostn´ı polystyrenov´ y kryt vrtul´ı platformy a pˇri letu v bl´ızkosti zemˇe, ˇci pˇrek´ aˇzek i vzduˇsn´e v´ıry vrtul´ı. Kromˇe nalezen´ı hodnot pro kontroln´ı smyˇcky byla potˇrebn´a u ´prava citlivosti pomoc´ı ˇsk´alov´an´ı mˇeˇr´ıtka ovl´ adac´ıch p´ ak RC vys´ılaˇcky a t´ım omezen´ı maxim´aln´ıch hodnot n´aklon˚ u (pitch a roll) na 20 stupˇ n˚ u. Velk´ a pozornost musela b´ yt vˇenov´ ana nastaven´ı kontroln´ı smyˇcky kurzu, nebot’ LinkQuad vykazoval se zmˇenou kurzu nestabilitu, kterou se zat´ım nepodaˇrilo plnˇe odstranit, pouze redukovat. Jedn´a se o z´aleˇzitost kontroln´ıch mechanizm˚ u jako takov´ ych, ne o z´ aleˇzitost nastaven´ı. Zmˇena kurzu i v souˇcasnosti vyˇzaduje pomal´ y postup. V´ ysledn´ y konfiguraˇcn´ı soubor indoor.xml je um´ıstˇen na CD, viz popis obsahu CD v kapitole ˇc´ıslo 10.
8.2.2
Vnˇ ejˇ s´ı prostˇ red´ı: manu´ aln´ı reˇ zim
Pˇri prvn´ım pokusu o venkovn´ı let byla zjiˇstˇena nevhodnost nalezen´e konfigurace pro tyto u ´ˇcely. Polystyrenov´ y kryt tvoˇril moc velkou plochu, do kter´e mohl v´ıtr tlaˇcit a t´ım velmi destabilizovat platformu. Kromˇe toho kryt omezuje vˇetrn´e kuˇzely tvoˇren´e rotory, kter´e, jak se uk´azalo pozdˇeji, v´ yraznˇe pom´ahaj´ı n´asledky vˇetru pot´ırat. Impulsy zp˚ usoben´e vˇetrem byly vˇsak i po odejmut´ı krytu natolik velik´e, ˇze je nebylo moˇzno plnˇe kompenzovat pokyny z RC vys´ılaˇcky. Muselo tedy doj´ıt k opˇetovn´emu pˇreˇsk´alov´an´ı p´ak vys´ılaˇcky a z´aroveˇ n ke zv´ yˇsen´ı stability platformy pomoc´ı opˇetn´e rekonfigurace konstant vnitˇrn´ıch kontroln´ıch smyˇcek.
8.2.3
Vnˇ ejˇ s´ı prostˇ red´ı: vzn´ aˇ sen´ı a let po pˇ r´ımce
Po nalezen´ı vhodn´ ych konstant vnitˇrn´ıch kontroln´ıch smyˇcek ruˇcn´ıho ovl´ad´an´ı byly tyto konstanty m´ırnˇe upraveny a aplikov´ any i pro ˇr´ıd´ıc´ı smyˇcky automatick´eho letu. U automatick´eho letu vˇsak bylo nutn´e nastavit i konstanty vnˇejˇs´ıch smyˇcek. Jejich optim´ aln´ı hodnoty byly identifikov´any pomoc´ı experiment˚ u se vzn´ aˇsen´ım a n´ aslednˇe upraveny pˇri pokusech s funkc´ı letu po pˇr´ımce. Na CD je um´ıstˇen v´ ysledn´ y konfiguraˇcn´ı soubor outdoor.xml. Dalˇs´ım obsahem je nˇekolik videoz´aznam˚ u letov´ ych pokus˚ u s platformou, viz popis obsahu CD v kapitole ˇc´ıslo 10. V pˇr´ıpadˇe letu po pˇr´ımce m´ a v´ıtr vliv na cestovn´ı rychlost stroje. V´ıtr ˇcasto odvane helikopt´eru z napl´ anovan´e trajektorie a ta to mus´ı kompenzovat n´ avratem, kter´ y j´ı zpomal´ı. Zvolen´e bezpeˇcnostn´ı limity se ukazuj´ı jako moc pˇr´ısn´e pro let ve vˇetru. Jejich lepˇs´ı odhad si vyˇz´ad´a dalˇs´ı experimenty. N´ asleduj´ıc´ı zobrazen´ı trajektori´ı vyuˇz´ıv´a mˇeˇren´ı vzd´alenosti syst´emu LinkQuad od m´ısta, kde byl zapnut a to v souˇradn´em syst´emy kdy osa X smˇeˇruje na v´ ychod a osa Y na sever. N´ asleduj´ıc´ı uk´ azky demonstruj´ı lety po trajektorii zadan´e fixn´ım seznamem souˇradnic za vˇetrn´eho poˇcas´ı. Jak bylo ˇreˇceno v kapitole 7.7.1, helikopt´era zastavuje u kaˇzd´e souˇradnice a pot´e se rozl´et´av´a k dalˇs´ımu. Na pˇriloˇzen´em cd se nach´ az´ı videoz´ aznam pr˚ uletu trajektorie. 34
Obr´ azek 8.1: Fotografie bezpilotn´ıho syst´emu LinkQuad za letu
Obr´ azek 8.2: Uk´ azka rozptylu polohy pˇri automatick´em udrˇzov´an´ı polohy ve vˇetru. Zelenˇe vyznaˇcen poˇc´ ateˇcn´ı bod, ˇcervenˇe koncov´ y.
35
Obr´ azek 8.3: Uk´ azka rozptylu v´ yˇsky pˇri automatick´em udrˇzov´an´ı polohy ve vˇetru.
Obr´ azek 8.4: Z´ aznam pr˚ uletu trajektorie dan´e seznamem souˇradnic. Zelenˇe poˇc´ateˇcn´ı bod, ˇcervenˇe koncov´ y. ˇ e body vyznaˇcuj´ı polohu souˇradnic. Zlut´
36
Obr´ azek 8.5: Z´ aznam v´ yvoje rychlosti. Je vidˇet, ˇze zvolen´ y limit akcelerace je pˇr´ıliˇs pˇr´ısn´ y. Z´aroveˇ n je patrn´e, ˇze pˇri letu na prvn´ı souˇradnice v´ al podstatnˇe slabˇs´ı v´ıtr, neˇz pozdˇeji.
Obr´ azek 8.6: Z´ aznam v´ yvoje nadmoˇrsk´e v´ yˇsky pˇri pr˚ uletu trajektorie.
37
Obr´ azek 8.7: Z´ aznam druh´eho pr˚ uletu trajektorie dan´e seznamem souˇradnic. Zelenˇe poˇc´ateˇcn´ı a z´aroveˇ n koncov´ y ˇ e body vyznaˇcuj´ı polohu souˇradnic. Tˇesnˇe pˇred c´ılem doˇslo k poryvu vˇetru, kter´ bod. Zlut´ y vedl k zastaven´ı helikopt´ery, kter´ a se n´ aslednˇe stabilizovala a navr´atila na trasu.
Obr´ azek 8.8: Z´ aznam v´ yvoje rychlosti pˇri druh´em pr˚ uletu trajektorie.
38
Obr´ azek 8.9: Z´ aznam v´ yvoje nadmoˇrsk´e v´ yˇsky pˇri druh´em pr˚ uletu trajektorie.
39
Kapitola 9
Zhodnocen´ı v´ ysledk˚ u a smˇ ery dalˇ s´ıho v´ yvoje 9.1
Zhodnocen´ı dosaˇ zen´ ych v´ ysledk˚ u
V souladu se zad´ an´ım pr´ ace probˇehlo sezn´ amen´ı s helikopt´erou LinkQuad, jej´ım HW i SW a ˇr´ıd´ıc´ımi principy. V´ yvoj softwaru byl bohuˇzel zdrˇzen pomalou odezvou v´ yrobce zaˇr´ızen´ı a ne´ uplnou dokumentac´ı a zpoˇc´ atku i neaktu´ aln´ı verz´ı seznamu dostupn´ ych promˇenn´ ych. Dlouh´ y ˇcas si vyˇz´adalo experiment´aln´ı ladˇen´ı syst´emu LinkQuad tak, aby byl schopen letu jak na ruˇcn´ı, tak automatick´e ovl´ad´an´ı. Podaˇrilo se vˇsak vyvinout ˇr´ıd´ıc´ı server platformy (LinkQuadGXsrvr) umoˇzn ˇuj´ıc´ı jak naˇc´ıt´an´ı dat ze senzor˚ u a komunikaci s pozemn´ı stanic´ı, tak automatick´e lety po pˇr´ımce zadan´e bud’ uˇzivatelem z pozemn´ı stanice, ˇci celou trajektori´ı bod˚ u. Byly podniknuty experimenty na re´ aln´em bezpilotn´ım prostˇredku LinkQuad, kter´e nastaven´ı a naprogramovan´e ˇc´asti otestovaly. Nepodaˇrilo se vˇsak plnˇe vyvinout a otestovat celou vyˇsˇs´ı ˇr´ıd´ıc´ı strukturu s ˇr´ıd´ıc´ım softwarem AgentFly. Struktura byla navrhnuta pouze na konceptu´ aln´ı u ´rovni a nebyla naprogramov´ana a otestov´ana.
9.2
Smˇ ery dalˇ s´ıho v´ yvoje
Pro snadnˇejˇs´ı pilot´ aˇz a kontrolu platformy pˇri mis´ıch na delˇs´ı vzd´alenost bude vhodn´e zapojen´ı a otestov´ an´ı kamerov´eho syst´emu platformy LinkQuad. D˚ uleˇzit´ ym smˇerem dalˇs´ıho v´ yvoje bude nalezen´ı volnˇejˇs´ıch bezpeˇcnostn´ıch limit˚ u a v´ yvoj algoritmu pro plynul´ y pr˚ ulet trajektorie dan´e sloˇzitˇejˇs´ı kˇrivkou. Takov´e kˇrivky se skl´adaj´ı z v´ıce segment˚ u ohraniˇcen´ ych zadan´ ymi krajn´ımi body, mezi kter´ ymi se kˇrivka matematicky interpoluje napˇr´ıklad pomoc´ı hermitovsk´e (Fergussonovy) kubiky. Takov´ ato interpolace zajist´ı i C2 spojitost (spojitost i prvn´ı a druh´e derivace) tˇechto segment˚ u. D´ ale bude nezbytn´e realizovat vyˇsˇs´ı ˇr´ıd´ıc´ı strukturu, coˇz zahrnuje implementaci architektury navrˇzen´e v kapitole 7 a pˇripraven´ı pl´ anovaˇce upraven´eho pro helikopt´ery pro nasazen´ı dle standardu AgentFly. Protoˇze AgentFly disponuje syst´emem zabr´anˇen´ı koliz´ım (viz. str. 21), dalˇs´ım smˇerem v´ yvoje bude jeho nasazen´ı a hlavnˇe otestov´ an´ı v kooperaci s ostatn´ımi re´aln´ ymi bezpilotn´ımi prostˇredky.
40
Kapitola 10
Obsah pˇ riloˇ zen´ eho CD • Foto - adres´ aˇr s fotografiemi platformy LinkQuad • LinkGS - adres´ aˇr s ˇr´ıd´ıc´ım softwarem LinkGS • LinkQuadGXsrvr - adres´ aˇr s projektem Eclipse, kde je implementov´ana ˇr´ıd´ıc´ı struktura LinkQuadGXsrvr. • Nastaveni LinkBoard - adres´ aˇr s konfiguraˇcn´ımi xml soubory a se screenshoty nastaven´ı ˇr´ıd´ıc´ıch smyˇcek helikopt´ery • PDF - adres´ aˇr obsahuj´ıc´ı tuto bakal´ aˇrskou pr´aci v PDF podobˇe + jej´ı zdrojov´e texov´e k´ody • Video - adres´ aˇr s kr´ atk´ ymi filmeˇcky zachyt´avaj´ıc´ımi let helikopt´ery • obsah.txt- v´ ypis obsahu cel´eho cd ve stromov´e struktuˇre.
41
Literatura ˇ [Jiˇrinec–11] Jiˇrinec, T., Stabilization and control of unmanned quadcopter, Praha CVUT FEL, 2011 [Wzorek–11] Wzorek, M., Selected Aspects of Navigation and Path Planning in Unmanned Aircraft Systems, Link¨ oping Institute of Technology at Link¨oping University, 2011 [Wikipedia–12] Unmanned aerial vehicle, http://en.wikipedia.org/wiki/Unmanned_aerial_vehicle, 2012 ¨ Design of control systems for quadrotor flight vehicles. Mechatronics, Engineering [Kivrak–06] Kıvrak, A., O., Department: Atılım University, 2006 [UASTech–12] Dokumentace LinkBoard, UAS Technologies Sweden, Link¨oping, 2012 ˇ sl´ [AgentFly–12] Siˇ ak,D., Volf, P., Kopˇriva, S., Pechouˇcek,M.: AgentFly: Scalable, High-Fidelity Framework for ˇ Simulation, Planning and Collision Avoidance of Multiple UAVs, Praha CVUT FEL, 2012 ˇ sl´ [AAstar–09] Siˇ ak,D., Volf, P., Pechouˇcek,M., Accelerated A* Trajectory Planning: Grid-based Path Planning ˇ Comparison, Praha CVUT FEL, 2009 [HEX–11] Chrpa, L., Komenda, A., Smoothed Hex-grid Trajectory Planning Using Helicopter Dynamics, Praha ˇ CVUT FEL, 2011 [MAN–12] Linux Manual Pages, http://www.kernel.org/doc/man-pages/, 2012 [JAVA–12] Oracle Corporation, Java SE 7 Documentation, http://docs.oracle.com/javase/7/docs/, 2012
42