• Nebyly nalezeny žádné výsledky

Bakal´ aˇrsk´ a pr´ ace

N/A
N/A
Protected

Academic year: 2022

Podíl "Bakal´ aˇrsk´ a pr´ ace"

Copied!
45
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Pokyny pro vypracování

Proveďte rešerši knihoven pro řízení minidronů Parrot Mambo. Navrhněte a implementujte aplikaci, která bude řídit dron na základě informace z jeho kamer. Vertikální kameru využijte pro navigaci dronu podle objektů nebo značek ležících na podlaze. Horizontální kameru využijte pro vyhýbání se

překážkám v prostoru nebo průletu otvorem. Pro zpracování obrazu použijte knihovnu OpenCV, případně sofistikovanější knihovny například na bázi hlubokých neuronových sítí. Aplikaci implementujte v jazyce Python, případně v kombinaci C/C++. Drony budou řízeny z linuxového počítače přes WiFi nebo BlueTooth. Veškeré programové vybavení řádně zdokumentujte a zdrojové kódy doplňte komentáři tak, aby se z nich dala automaticky generovat dokumentace. Aplikaci otestujte, zhodnoťte přesnost navigace a možnost současné navigace více dronů z jednoho počítače.

Rozsah práce upřesněte po dohodě s vedoucím práce.

Elektronicky schválil/a doc. Ing. Hana Kubátová, CSc. dne 12. února 2021 v Praze.

Zadání bakalářské práce

Název: Aplikace pro navigaci minidronu

Student: Jan Filip

Vedoucí: Ing. Miroslav Skrbek, Ph.D.

Studijní program: Informatika

Obor / specializace: Počítačové inženýrství Katedra: Katedra číslicového návrhu

Platnost zadání: do konce letního semestru 2021/2022

(2)
(3)

Bakal´ aˇrsk´ a pr´ ace

APLIKACE PRO

NAVIGACI MINIDRONU

Jan Filip

Fakulta informaˇcn´ıch technologi´ı ˇCVUT v Praze Katedra ˇc´ıslicov´eho n´avrhu

Vedouc´ı: Ing. Miroslav Skrbek, Ph.D.

13. kvˇetna 2021

(4)

ˇCesk´e vysok´e uˇcen´ı technick´e v Praze Fakulta informaˇcn´ıch technologi´ı

© 2021 Jan Filip. Vˇsechna pr´ava vyhrazena.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na ˇCesk´em vysok´em uˇcen´ı technick´em v Praze, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena pr´avn´ımi pˇredpisy a mezin´arodn´ımi ´umluvami o pr´avu autorsk´em a pr´avech souvisej´ıc´ıch s pr´avem autorsk´ym. K jej´ımu uˇzit´ı, s v´yjimkou bez uplatnˇen´ych z´akonn´ych licenc´ı nad r´amec opr´avnˇen´ı uveden´ych v Prohl´aˇsen´ı, je nezbytn´y souhlas autora.

Odkaz na tuto pr´aci: Jan Filip.Aplikace pro navigaci minidronu. Bakal´aˇrsk´a pr´ace. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze, Fakulta informaˇcn´ıch technologi´ı, 2021.

(5)

Obsah

Prohl´aˇsen´ı vi

Abstrakt vii

Seznam zkratek viii

1 Uvod´ 1

2 Uvod k ovl´´ ad´an´ı dron˚u 3

2.1 Kvadrokopt´ery . . . 3

2.2 N´astroje pro ˇr´ızen´ı dronu Parrot . . . 4

2.2.1 PyParrot . . . 4

2.2.2 RollingSpiderEdu . . . 4

2.2.3 MATLAB® Support Package for Parrot® Drones . . . 4

2.3 Dron Parrot Mambo . . . 4

2.3.1 Senzory . . . 4

2.3.2 Ovl´ad´an´ı a pohyb dronu . . . 4

3 Anal´yza 7 3.1 Autonomn´ı navigace . . . 7

3.1.1 Heuristick´y pˇr´ıstup . . . 8

3.1.2 Optim´aln´ı pˇr´ıstup . . . 8

3.1.3 Kombinace pˇr´ıstup˚u . . . 8

3.2 Pr˚uzkum oblasti . . . 9

3.3 Algoritmy pro navigaci k c´ıli . . . 9

3.3.1 Bug algorithms . . . 9

3.3.2 FGA algoritmus . . . 10

3.3.3 Navigace dle mapy . . . 11

3.4 Zpracov´an´ı obrazu . . . 11

3.4.1 Detekce hran . . . 11

4 N´avrh 13 4.1 Zpracov´an´ı obrazu . . . 13

4.1.1 Detekce pozemn´ıch c´ıl˚u . . . 13

4.1.2 Detekce pˇrek´aˇzek . . . 14

4.2 Pr˚uzkum oblasti . . . 14

4.3 Navigace . . . 15

4.3.1 Anal´yza . . . 15

4.3.2 ˇReˇsen´ı . . . 15

4.3.3 Omezen´ı ˇreˇsen´ı . . . 16

4.4 Aplikace . . . 17

4.4.1 Struktura aplikace . . . 17

4.4.2 Drone modul . . . 17

4.4.3 Navigaˇcn´ı syst´em . . . 18

iii

(6)

iv Obsah

4.4.4 Obsluha horizont´aln´ı kamery a zpracov´an´ı jej´ıho obrazu . . . 18

4.4.5 Obsluha vertik´aln´ı kamery . . . 18

4.4.6 Zpracov´an´ı obrazu z vertik´aln´ı kamery . . . 18

5 Implementace 19 5.1 Dron . . . 19

5.1.1 Pˇripojen´ı dronu . . . 19

5.1.2 Z´asady ovl´ad´an´ı . . . 19

5.1.3 Senzory . . . 19

5.1.4 Pozice dronu . . . 20

5.1.5 Pohyb dronu . . . 20

5.1.6 Vyhnut´ı se pˇrek´aˇzce . . . 21

5.2 Navigace . . . 23

5.2.1 Hled´an´ı cesty . . . 23

5.3 Horizont´aln´ı kamera . . . 24

5.3.1 Staˇzen´ı obr´azku . . . 24

5.3.2 Obsluha horizont´aln´ı kamery . . . 24

5.3.3 Zpracov´an´ı obrazu . . . 25

5.4 Vertik´aln´ı kamera . . . 26

5.4.1 Obsluha vertik´aln´ı kamery . . . 26

5.4.2 Zpracov´an´ı obrazu . . . 26

6 Specifikace aplikace 29 6.1 Instalace . . . 29

6.1.1 Knihovna Pyparrot . . . 29

6.2 Aplikace . . . 30

6.3 Testov´an´ı a funkˇcnost aplikace . . . 30

7 Z´avˇer 31

Obsah pˇriloˇzen´eho m´edia 35

(7)

Seznam obr´azk˚ u

2.1 Rozvrˇzen´ı dronu . . . 3

2.2 Dron Parrot Mambo . . . 5

3.1 Navigace bludiˇstˇem . . . 8

3.2 Bug algoritmusu . . . 9

3.3 FGA algoritmus . . . 10

4.1 Diagram v´yhybu pˇrek´aˇzce . . . 15

4.2 Omezen´ı navigace dronu . . . 16

4.3 Diagram . . . 17

5.1 Optim´aln´ı pr˚uchod mˇr´ıˇzkou . . . 23

5.2 Detekce pozemn´ıch c´ıl˚u . . . 25

5.3 Detekce objekt˚u . . . 27

Seznam tabulek

2.1 Parametry funkce . . . 5

Seznam v´ypis˚ u k´odu

2.1 Funkce pro ovl´ad´an´ı pohybu dronu . . . 5

5.1 Pˇripojen´ı se k dronu . . . 19

5.2 Navigace dronu k c´ıli . . . 22

5.3 Obsluha spodn´ı kamery dronu . . . 24

5.4 Inicializace obsluhy FPV kamery . . . 26

5.5 Inicializace neuronov´e s´ıtˇe Detectron2 . . . 27

6.1 Pˇripojen´ı k dronu pˇres FTP . . . 29

6.2 P˚uvodn´ı cesta k uloˇzen´ı sn´ımk˚u . . . 29

6.3 Nov´a cesta k uloˇzen´ı sn´ımk˚u . . . 29

6.4 Zmˇena frekvence vol´an´ı callback funkce . . . 30

6.5 Zmˇena frekvence vol´an´ı callback funkce . . . 30

v

(8)

Prohl´aˇsen´ı

Prohlaˇsuji, ˇze jsem pˇredloˇzenou pr´aci vypracoval samostatnˇe a ˇze jsem uvedl veˇsker´e pouˇzit´e informaˇcn´ı zdroje v souladu s Metodick´ym pokynem o dodrˇzov´an´ı etick´ych princip˚u pˇripˇr´ıpravˇe vysokoˇskolsk´ych z´avˇereˇcn´ych prac´ı.Beru na vˇedom´ı, ˇze se na moji pr´acivztahuj´ı pr´ava a povin- nosti vypl´yvaj´ıc´ı ze z´akona ˇc.121/2000 Sb., autorsk´eho z´akona, ve znˇen´ı pozdˇejˇs´ıch pˇredpis˚u, zejm´ena skuteˇcnost, ˇze ˇCesk´e vysok´e uˇcen´ı technick´e v Praze m´a pr´avo na uzavˇren´ı licenˇcn´ı smlouvy o uˇzit´ı t´eto pr´ace jako ˇskoln´ıho d´ıla podle § 60 odst. 1 citovan´eho z´akona.

V Praze dne 10. kvˇetna 2020 . . . .

vi

(9)

Abstrakt

Tato pr´ace je zamˇeˇrena na moˇznosti ovl´ad´an´ı minidron˚u Parrot Mambo. C´ılem pr´ace je vytvoˇrit aplikaci schopnou dron samostatnˇe nav´adˇet dle informac´ı z jeho senzor˚u a kamer. Vyh´yb´an´ı se dronu pˇrek´aˇzk´am je dosaˇzeno za pomoc´ı upraven´eho Bug algoritmu. Z´ısk´an´ı informac´ı z obrazu je zajiˇstˇeno pˇredevˇs´ım za pouˇzit´ı knihovny OpenCV a neuronov´e s´ıtˇe Detectron2.

Kl´ıˇcov´a slova dron, autonomn´ınavigace, zpracov´an´ıobrazu, neuronov´e s´ıtˇe, navigace, senzory

Abstract

This thesis is focusing on ways to control minidrone Parrot Mambo. Main goal is to create application able to autonomously navigate dron based on data gained from sensors and camera.

Obstacle avoidance of drone is achieved with modified bug algorithm. Images from cameras are processed with neural network Detectron2 and library OpenCV.

Keywords dron, autonomous navigation, image processing, neural netwroks, navigation, sen- sors

vii

(10)

Seznam zkratek

UAV Unmanned aerial vehicle FGA Flexible geometric algorithm CNN Convolutional neural network R-CNN Region-based CNN

ROI Region of interest

RRT Rapidly-exploring random tree

SLAM Simultaneous localization and mapping

viii

(11)

Kapitola 1

Uvod ´

Autonomn´ı navigace robot˚u se st´ale v´ıce integruje do kaˇzdodenn´ıho ˇzivota a v budoucnu se stane jeho ned´ılnou souˇc´ast´ı. Z poˇc´atku se autonomn´ı navigace vyuˇz´ıvala v syst´emech se kter´ymi bˇeˇzn´y ˇclovˇek nepˇriˇsel do styku. Pˇr´ıkladem m˚uˇzou b´yt autonomn´ı lodˇe uzp˚usoben´e na pˇrist´av´an´ı raketov´ych motor˚u firmy SpaceX. V souˇcasnosti se tyto syst´emy rozˇsiˇruj´ı do bˇeˇzn´eho ˇzivota napˇr´ıklad vozidla firmy Tesla s moˇznost´ı autopilota.

Hlavn´ım c´ılem pr´ace je navrhnout aplikaci pro navigaci dronu, otestovat ji a ˇr´adnˇe zdoku- mentovat. Sekund´arn´ım c´ılem pr´ace je z´ıskat informace o moˇznostech takto ovl´adat v´ıce dron˚u v r´amci aplikace a zhodnotit proveditelnost a efektivitu takov´eho ˇreˇsen´ı.

Pr´ace je rozdˇelena do pˇeti ˇc´ast´ı: Prvn´ı kapitola sezn´am´ı ˇcten´aˇre s dronem Parrot Mambo a na r˚uzn´e metody jeho ovl´ad´an´ı. Mimo jin´e se i pod´ıv´ame na z´akladn´ı informace o moˇzn´ych rozloˇzen´ı kvadrokopt´er a z´akladn´ı principy jejich ovl´ad´an´ı.

Druh´a kapitola se zab´yv´a anal´yzou zadan´e problematiky. Zde se sezn´am´ıme se z´akladn´ımi principy autonomn´ınavigace a r˚uzn´e principy navigace pˇri pr˚uzkumu oblasti. N´aslednˇe se pod´ıv´ame na z´akladn´ı algoritmy pro navigaci dronu k c´ıli vˇcetnˇe vyh´yb´an´ı se pˇrek´aˇzk´am. Nakonec se pod´ıv´ame na z´akladn´ı principy pro zpracov´an´ı obrazu a vytˇeˇzen´ı potˇrebn´ych informac´ı z nˇej.

Tˇret´ı kapitola je vˇenov´ana n´avrhu aplikace a z´akladn´ım princip˚um chov´an´ı jej´ıch jednotliv´ych ˇc´ast´ı.

ˇCtvrt´a kapitola podrobnˇe popisuje implementaci aplikace a zaob´ır´a se do vˇetˇs´ı hloubky ˇreˇsen´ymi probl´emy pˇri n´avrhu aplikace.

P´at´a kapitola poskytuje informace o aplikaci jako celku a popisuje nutn´e kroky pro spr´avn´e spuˇstˇen´ı aplikace.

V posledn´ı kapitole se pod´ıv´ame na dalˇs´ı moˇzn´y rozvoj aplikace, shrneme c´ıle aplikace a poskytneme vyj´adˇren´ı o jejich splnˇen´ı.

1

(12)
(13)

Kapitola 2

Uvod k ovl´ad´an´ı dron˚ ´ u

2.1 Kvadrokopt´ery

Kvadrokopt´era je speci´aln´ı druh helikopt´ery se ˇctyˇrmi rotory. Jejich pouˇzit´ı se rozˇs´ıˇrilo s ko- merˇcn´ım prodejem dron˚u pro rekreaˇcn´ı ´uˇcely ˇci poˇrizov´an´ı leteck´ych z´abˇer˚u pro filmov´e tv˚ure.

Takov´yto dron m´a 4 motory, kaˇzd´y ovl´adaj´ıc´ı vlastn´ı vrtuli, kter´e umoˇzˇnuj´ı pohyb dronu v ˇsesti z´akladn´ıch smˇerech (do stran, dopˇredu, dozadu, nahoru a dolu), kter´e je spolu moˇzno kombinovat. Kvadrokopt´ery maj´ı dvˇe moˇznosti z´akladn´ıho rozloˇzen´ı motor˚u, do tvaru x a +. Hlavn´ı rozd´ıl mezi tˇemito konfiguracemi je rozd´ıl mezi pˇr´ıkazy, kter´e se pos´ılaj´ı r˚uzn´ym motor˚um pro splnˇen´ı stejn´eho typu pohybu.

Nejd˚uleˇzitˇejˇs´ı ˇc´ast konfigurace motor˚u dronu je smˇer rotace. Motory na stejn´e ose se ot´aˇcej´ı stejn´ym smˇerem, ale opaˇcn´ym oproti motor˚um na druh´e ose dronu. Toto rozloˇzen´ı umoˇzˇnuje dronu prov´adˇet z´akladn´ı pohyby (pitch, roll, thrust) nez´avisle na sobˇe.[1]

Obr´azek 2.1 Rozvrˇzen´ı dronu

3

(14)

4 Kapitola 2. Uvod k ovl´´ ad´an´ı dron˚u

2.2 N´astroje pro ˇr´ızen´ı dronu Parrot

Pro minidron Parrot Mambo existuje nˇekolik moˇznost´ı jeho ovl´ad´an´ı. Daly by se rozdˇelit na ovl´ad´an´ı pomoc´ı jazyk˚u Python, C/C++ a Matlab.

2.2.1 PyParrot

Pyparrot je knihovna pro jazyk Python navrˇzen´a a implementovan´a Dr. Amy McGovern. Toto rozhran´ı bylo vytvoˇreno k v´yuce STEM koncept˚u (science, technology, engineering, mathematics) pomoc´ı programov´an´ı dron˚u k samostatn´emu letu.[2]

2.2.2 RollingSpiderEdu

Tato knihovna slouˇz´ı k navrˇzen´ı a simulaci algoritm˚u pro ovl´ad´an´ı dronu v programu MATLAB ˇci Simulink. Pot´e sama generuje k´od v jazyce C urˇcen´y k ovl´ad´an´ı dronu. Vˇsechna data ze senzor˚u jsou v pr˚ubˇehu letu zaznamen´av´ana a je moˇzno je pozdˇeji zobrazit a analyzovat.[3]

2.2.3 MATLAB® Support Package for Parrot® Drones

Tato moˇznost poskytuje v´yvoj´aˇri rozhran´ı po ovl´ad´an´ı dronu z programu MATLAB. Uˇzivateli je poskytnuta moˇznost ovl´ad´an´ı dronu pos´ıl´an´ım pˇr´ıkaz˚u k ovl´ad´an´ı smˇeru, rychlosti a orientace dronu. Uˇzivatel m´a z´aroveˇn moˇznost stahovat data ze senzor˚u, jako napˇr´ıklad v´yˇska, rychlost, orientace a mnoho dalˇs´ıch.

MATLAB z´aroveˇn poskytuje bal´ıˇcek pro simulaci dronu urˇcenou k v´yvoje algoritm˚u pro kontrolu letu dronu. [4]

2.3 Dron Parrot Mambo 2.3.1 Senzory

Dron disponuje nˇekolika senzory. Na spodku dronu nalezneme ultrazvukov´y senzor pomoc´ıkter´eho dok´aˇzeme mˇeˇrit vertik´aln´ı vzd´alenost dronu od povrchu. Senzor vyˇsle zvukovou vlnu a mˇeˇr´ı jak dlouho trv´a neˇz se vlna odraˇzen´a od zemˇe dostane zpˇet k senzoru. Z namˇeˇren´eho ˇcasu lze vypoˇc´ıtat v´yˇsku dronu od zemˇe.

Dalˇs´ım senzorem um´ıstˇen´em tak´e na spodku dronu je kamera, kter´a dok´aˇze sn´ımat obraz ve frekvenci 60 FPS. Tato kamera pouˇz´ıv´a optical flow k odhadnut´ı horizont´aln´ıho rychlosti a pohybu dronu.

Uvnitˇr dronu se nach´az´ı tlakov´y senzor urˇcen´y k mˇeˇren´ı v´yˇsky dronu na z´akladˇe mal´ych zmˇen tlaku vzduchu.

Dron tak´e disponuje IMU jednotkou vybavenou tˇr´ıos´ym akcelerometrem, mˇeˇr´ıc´ı line´arn´ı zrychlen´ı, a tˇr´ıos´ym gyroskopem, mˇeˇr´ıc´ım natoˇcen´ı dronu. D´ıky t´eto jednotce dron um´ı vypoˇc´ıtat dalˇs´ı informace jako je napˇr´ıklad rychlost ot´aˇcen´ı.

ˇZ´adn´y z tˇechto senzor˚uneumoˇzˇnuje mˇeˇrit volnou vzd´alenost pˇred kamerou dronu. Absence to- hoto senzoru n´am velice omez´ımoˇzn´e metody pro navigaci dronu a jeho vyh´yb´an´ıse pˇrek´aˇzk´am.[1]

2.3.2 Ovl´ad´an´ı a pohyb dronu

Knihovna pyparrot poskytuje tˇri z´akladn´ı l´etac´ı m´ody: s vertik´aln´ı a horizont´aln´ı stabilizac´ı, pouze s vertik´aln´ı stabilizac´ı a bez stabilizace. Horizont´aln´ı stabilizace m´a za c´ıl zamezen´ı pohybu dronu vytvoˇren´em pohyby vzduchu.

(15)

2.3. Dron Parrot Mambo 5

Obr´azek 2.2 Dron Parrot Mambo

Samotn´y pohyb dronu je realizov´an pomoc´ı funkc´ıfly_directa turn_degrees. V´ypis k´odu 2.1 Funkce pro ovl´ad´an´ı pohybu dronu

def f l y _ d i r e c t ( self , roll , pitch , yaw , v e r t i c a l _ m o v e m e n t , d u r a t i o n ) def t u r n _ d e g r e e s ( self , d e g r e e s )

Funkcefly_directdost´av´a jako parametry procentu´aln´ı pohyb dronu po jeho os´ach a rotaci kolem osy z. D´ıky spr´avn´emu rozloˇzen´ı motor˚u lze tyto pohyby libovolnˇe kombinovat. Pˇr´ıkaz je opakov´an po celou dobu trv´an´ı. Pokud nen´ı ˇcas pro proveden´ı man´evru specifikov´an pˇr´ıkaz se odeˇsle pouze jednou.

Parametr Popis Oˇcek´avan´a hodnota

roll pohyb po ose y dronu h−1080,1080i pitch pohyb po ose x dronu h−1080,1080i

yaw rotace dronu h−1080,1080i

vertical movement vertik´aln´ı pohyb dronu h−1080,1080i duration doba trv´an´ı pˇr´ıkazu >0 Tabulka 2.1Parametry funkce

Funkceturn_degrees umoˇzˇnuje rotaci dronu na m´ıstˇe o dan´y ´uhel v rozmez´ıh−180,180i. Na rozd´ıl od funkcefly_directrotace pomoc´ı t´eto funkce nelze kombinovat s ostatn´ımi pohyby dronu.[2]

(16)
(17)

Kapitola 3

Anal´yza

Aby se robot mohl spr´avnˇe orientovat ve sv´em okol´ı potˇrebuje o nˇem z´ıskat informace a ty zpracovat do ´udaj˚u, na z´akladˇe kter´ych se bude schopen rozhodovat. Tyto ´udaje z´ısk´av´a ze sv´ych senzor˚u, kter´e rozdˇel´ıme pro naˇse ´uˇcely na dva typy:

senzoru, ud´avaj´ıc´ı informace o robotu senzory, ud´avaj´ıc´ı informace o okol´ı

Prvn´ı skupina senzor˚u ud´av´a informace jako poloha, rotace robota, ˇci rychlost jeho pohybu.

Pro spr´avn´e zpracov´an´ı dat z tˇechto senzor˚u je nutn´e vˇedˇet v jak´em kontextu informace vrac´ı.

Napˇr´ıklad data o poloze m˚uˇzou b´yt ud´av´ana ve tˇrech r˚uzn´ych kontextech: data mohou b´yt vracena v GPS souˇradnic´ıch nebo m˚uˇzou b´yt vracena relativnˇe v˚uˇci bodu zapnut´ı robota nebo napˇr´ıklad u dronu relativnˇe v˚uˇci vzletu ze zemˇe. To sam´e m˚uˇze platit u rotace robotu. Tato skupina senzor˚u bude vracet ´udaje jako poloha, rotace robota, rychlost pohybu ˇci r˚uzn´e informace o stavu robotu.

Pomoc´ı druh´e skupiny senzor˚u lze z´ısk´avat informace o okol´ı. Do t´eto skupiny zaˇrad´ıme senzory jako kamery, ze kter´ych lze z´ıskat informace o objektech v okol´ı a v nˇekter´ych pˇr´ıpadech i vzd´alenost k nim a ultrazvukov´e senzory urˇcuj´ıc´ı vzd´alenost od pˇrek´aˇzky.[5]

3.1 Autonomn´ı navigace

Navigace je postup ˇci ˇcinnost, d´ıky kter´e ˇclovˇek m˚uˇze zjistit svoj´ı polohu a urˇcit cestu k dan´emu c´ıli. Autonomn´ı navigace je postup ˇci ˇcinnost, kterou robot dok´aˇze zjistit svoj´ı pozici a navigovat se ke c´ıli. D˚uleˇzit´e je, ˇze toho doc´ıl´ı s´am bez z´asahu ˇclovˇeka. Zjednoduˇsenˇe ˇreˇceno je to nˇejak´y postup pravidel, kter´ymi se robot ˇr´ıd´ı aby nalezl cestu ke sv´emu c´ıli.

Autonomn´ı navigaci lze rozdˇelit cel´e spektrum dle ´urovn´ı sloˇzitosti. Nejniˇzˇs´ı ´uroveˇn jsou ak- tivn´ı syst´emy pro pomoc ovl´ad´an´ı robota. Jedn´ım z takov´ych pˇr´ıklad˚u by se napˇr´ıklad dala povaˇzovat stabilizace dronu, aby se vzn´aˇsel na stejn´em m´ıstˇe a nenechal se un´aˇset proudy vˇetru.

Na druh´e stranˇe tohoto spektra se nach´azej´ı plnˇe autonomn´ı syst´emy schopn´e samostatn´e navi- gace v prostˇred´ı.[5] Plnˇe autonomn´ı syst´emy, lze nad´ale dˇelit na heuristick´y a optim´aln´ı pˇr´ıstup.

7

(18)

8 Kapitola 3. Anal´yza

3.1.1 Heuristick´y pˇr´ıstup

Heuristick´y pˇr´ıstup je soubor pravidel, kter´ymi se robot ˇr´ıd´ı, aby dos´ahl sv´eho c´ıle. Pˇr´ıkladem tohoto pˇr´ıstupu, m˚uˇze b´yt hled´an´ı c´ıle v bludiˇsti t´ım, ˇze se robot bude drˇzet vˇzdy lev´e stˇeny. Jak m˚uˇzeme vidˇet na obr´azku 3.1 v pˇr´ıpadˇe, ˇze je c´ıl um´ıstˇen na pozici, ke kter´e se dostaneme sle- dov´an´ım stˇeny probl´em takov´yto algoritmus vyˇreˇs´ı. Bude-li se nach´azet c´ıl na ostr˚uvku uprostˇred bludiˇstˇe tento postup c´ıl nikdy nenajde. [5]

Jak je vidˇet z uk´azky, tento postup nen´ı pouˇziteln´y pro obecn´e ˇreˇsen´ı, jelikoˇz nen´ı moˇzn´e pˇri v´yvoji aplikace vymyslet pravidla pro kaˇzdou situaci ve kter´e by se robot mohl ocitnout.

Obr´azek 3.1Navigace bludiˇstˇem

3.1.2 Optim´aln´ı pˇr´ıstup

Optim´aln´ı pˇr´ıstup pro hled´an´ı cesty vyˇzaduje mapu prostˇred´ı ve kter´em se pohybuje. Tuto mapu si robot m˚uˇze s´am vytvoˇrit na z´akladˇe informac´ı ze senzor˚u, nebo dostane jiˇz vytvoˇrenou mapu prostˇred´ı, kterou nad´ale vylepˇsuje. Na z´akladˇe t´eto mapy robot m˚uˇze vyhledat optim´aln´ı cestu prostˇred´ım. D´ıky tomuto pˇr´ıstupu lze nal´ezt lepˇs´ı ˇreˇsen´ı neˇz pomoc´ı heuristick´eho pˇr´ıstupu.

Pˇr´ıkladem tohoto pˇr´ıstupu jsou napˇr´ıklad inteligentn´ı samoˇr´ıd´ıc´ı se vozy. Takov´eto vozy si ne- vystaˇc´ı s jednoduch´ym souborem pravidel proto mus´ı hledat lepˇs´ı metody navigace.[5]

3.1.3 Kombinace pˇr´ıstup˚ u

Optim´aln´ı pˇr´ıstup s´am osobˇe nem˚uˇze vˇzdy fungovat, protoˇze v nˇekter´ych pˇr´ıpadech by vyˇzadoval informace aktu´alnˇe nedostupn´e. Napˇr´ıklad inteligentn´ı vozidlo nem˚uˇze zaruˇcit zda pˇredjet´ı jin´eho vozidla povede k optim´aln´ımu ˇreˇsen´ı pokud nezn´a situaci, kter´a se nach´az´ı pˇred t´ımto vozidlem.

Z tohoto d˚uvodu jsou tyto dva pˇr´ıstupy kombinov´any a hled´an´ı cesty optim´aln´ım pˇr´ıstupem, je doplnˇena heuristick´ymi pravidly. Pˇr´ıkladem u inteligentn´ıch vozidel by mohlo b´yt: pˇredjed’

vozidlo, pokud je bezpeˇcn´e tak udˇelat. N´aslednˇe bezpeˇcn´e pˇredjet´ı by bylo definov´ano dalˇs´ım souborem pravidel.[5]

(19)

3.2. Pr˚uzkum oblasti 9

3.2 Pr˚ uzkum oblasti

K pr˚uzkumu zadan´e oblasti existuj´ı dva hlavn´ı pˇr´ıstupy, kter´e se ˇreˇs´ı v jejich sloˇzitosti na imple- mentaci a efektivitˇe pr˚uzkumu zadan´e oblasti.

N´ahodn´y pr˚uzkum oblasti poskytuje snadnou implementaci, ale nedok´aˇze zaruˇcit pln´e pokryt´ı dan´e oblasti v rozumn´em ˇcase. Jedn´ım z trivi´aln´ıch pˇr´ıstup˚u jak tento probl´em ˇreˇsit by mohla b´yt metoda jeˇz vyuˇz´ıvaj´ı nˇekter´e robotick´e vysavaˇce. Zvol´ıme si n´ahodn´y smˇer a zaˇcneme se pohybovat dopˇredu. Pˇri nalezen´ı pˇrek´aˇzky opˇet zvol´ıme n´ahodn´y smˇer a pokraˇcujeme dokud ne- naraz´ıme na dalˇs´ı pˇrek´aˇzku. Tento algoritmus je jednoduch´y na implementaci, ale nen´ı efektivn´ı.

V ˇcaset−>∞projde celou oblast, ale omezen´ı dronu takov´yto pr˚uzkum nedovol´ı.[5]

3.3 Algoritmy pro navigaci k c´ıli 3.3.1 Bug algorithms

Bug algoritmy jsou jednoduch´e algoritmy, generuj´ıc´ı cestu k c´ıli pokud takov´a existuje. Jejich z´akladn´ı princip vyh´yb´an´ı se pˇrek´aˇzk´am je zaloˇzen vytvoˇren´ı cesty na z´akladˇe pohybu pod´el detekovan´e pˇrek´aˇzky. Tyto algoritmy pˇredpokl´adaj´ı tˇri vˇeci o robotu, kter´y naviguj´ı:

robot je jednoduch´y bod

robot m´a pˇresn´e informace o poloze robot m´a pˇresn´e senzory

Bug1 je nejednoduˇs´ı a nejm´enˇe efektivn´ı algoritmus z t´eto skupiny. Robot se rozjede smˇerem k c´ıli, pokud naraz´ı na pˇrek´aˇzku, zaˇcne se pohybovat okolo pˇrek´aˇzky a z´aroveˇn poˇc´ıtat vzd´alenost jednotliv´ych bod˚u k c´ıli ze startovn´ıho bodu. Robot se zastav´ı na bodu kde p˚uvodnˇe narazil na pˇrek´aˇzku a urˇc´ı bod s nejkratˇs´ı vzd´alenost´ı k c´ıli. N´aslednˇe robot najde tento bod a pˇresune se na nˇej. Z tohoto bodu robot m˚uˇze opustit pˇrek´aˇzku a vydat se k c´ıli.[6]

Bug2 algoritmus je sloˇzitˇejˇs´ı algoritmus neˇz Bug1 a je v´ıce efektivn´ı, jelikoˇz nevyˇzaduje zkon- trolov´an´ı cel´eho obvodu pˇrek´aˇzky. Robot se vyd´a smˇerem k c´ıli. Kdyˇz naraz´ı na pˇrek´aˇzku opˇet se zaˇcne sledovat jej´ı obvod. Jakmile robot naraz´ı na bod pod´el obvod, kter´y je na p˚uvodn´ı spojnici mezi startovn´ım a c´ılov´ym bodem, opust´ı pˇrek´aˇzku a vyd´a se k c´ıli.[6]

Obr´azek 3.2 Bug algoritmusu

Posledn´ı algoritmus je DistBug, kter´y zde nebudeme rozeb´ırat jelikoˇz vyˇzaduje senzory, jeˇz n´aˇs dron neposkytuje.[6]

(20)

10 Kapitola 3. Anal´yza

3.3.2 FGA algoritmus

FGA -Flexible Geometric Algorithm - algoritmus pˇredpokl´ad´a konstantn´ı rychlost UAV a infor- mace o jeho pozici a rychlosti. FGA nejdˇr´ıve z´ısk´a informace o okol´ı UAV ze senzor˚u a rozhodne zda se v nˇem nach´az´ı nˇejak´e pˇrek´aˇzky, kter´e by mohly ohrozit UAV a jsou bl´ıˇz neˇz dan´a dˇel´ıc´ı vzd´alenost. Po detekci potencion´aln´ı pˇrek´aˇzky jsou vytvoˇreny dva 2D v´yseˇce k pˇrek´aˇzce, je- den v horizont´aln´ı a druh´y ve vertik´aln´ı rovinˇe pro v´ypoˇcet nejsnazˇs´ıho ´uhybn´eho man´evru.

FGA n´aslednˇe najde spr´avn´y ´uhybn´y man´evr (statick´a, dynamick´a, jedna nebo v´ıce pˇrek´aˇzek) k ´uspˇeˇsn´emu vyhnut´ı se pˇrek´aˇzce. Na z´akladˇe man´evru a informac´ı s n´ım spojen´y FGA vypoˇcte optim´aln´ı ˇcasovou funkci pro zapoˇcet´ı ´uhybn´eho man´evru. Kdyˇz UAV dos´ahne kritick´eho ˇcasu k proveden´ı vyhnut´ı se, FGA spust´ı man´evr a umoˇzn´ı UAV pohyb mimo cestu k c´ıli dokud nen´ı dosaˇzena bezpeˇcn´a vzd´alenost od pˇrek´aˇzky. N´aslednˇe se UAV opˇet vr´at´ı na bod p˚uvodn´ı cesty k c´ıli.

Obr´azek 3.3FGA algoritmus

Aktivace ´uhybn´eho man´evru pˇri bl´ızk´e vzd´alenosti k pˇrek´aˇzce spolu s n´avratem UAV na p˚uvodn´ı dr´ahu drasticky sniˇzuje dr´ahu, kter´a je tˇreba pˇrepoˇc´ıtat pˇri pouˇzit´ı path-planning algo- ritm˚u a t´ım sniˇzuje v´ypoˇcetn´ı dobu oproti napˇr´ıklad v˚uˇci metodˇe optim´aln´ı cesty, kter´a vˇetˇsinou vyˇzaduje pˇrepoˇc´ıt´an´ı celou cestu k c´ıli.[7]

(21)

3.4. Zpracov´an´ı obrazu 11

3.3.3 Navigace dle mapy

Pˇredchoz´ı algoritmy se nestaraj´ı o pl´anov´an´ı cesty k vyhnut´ı se pˇrek´aˇzk´am na kter´e robot naraz´ı.

Existuj´ı metody pl´anov´an´ı, kter´e maj´ı za ´ukol pl´anovat cesty pro vyhnut´ı se statick´ym pˇrek´aˇzk´am za pomoc´ı mapy prostˇred´ı.

3.3.3.1 Tvorba mapy

Pro vytvoˇren´ı mapy prostˇred´ı potˇrebuje robot moˇznost mˇeˇrit vzd´alenost od pˇrek´aˇzek. Robot zaˇcne proch´azet zadanou oblast a z´ısk´avat ´udaje ze sv´ych senzor˚u o sv´em okol´ı. Na z´akladˇe

´udaj˚u o prostˇred´ı a svoj´ı poloze se n´aslednˇe vytvoˇr´ı mapa prostˇred´ı. Tato mapa bude ovˇsem nepˇresn´a, jelikoˇz nedok´aˇzeme zaruˇcit neomyln´e ´udaje o pozici robota. Pro vytvoˇren´ı spr´avn´e mapy z takov´ychto ´udaj˚u se pouˇz´ıv´a metoda SLAM[slam].

´Uˇcelem t´eto metody porovn´av´an´ı jednotliv´ych mˇeˇren´ı identifikaci jejich spoleˇcn´ych prvk˚u.

Algoritmus je takto schopen eliminovat chyby pohybov´e senzoru a vytvoˇrit korektn´ımapu dan´eho prostˇred´ı.

3.3.3.2 Algoritmy pro navigaci dle mapy

Pro navigaci robota na z´akladˇe vytvoˇren´e mapy se pouˇz´ıvaj´ı algoritmy pracuj´ıc´ı na z´akladˇe hled´an´ı cesty v grafu. Nejzn´amˇejˇs´ı takov´eto algoritmy jsou A*[8], RRT[8] a RRT*[9].

Hlavn´ı myˇslenka algoritmy RRT je n´ahodn´e pˇrid´av´an´ı bod˚u v prostoru do grafu pomoc´ı kter´eho n´aslednˇe hled´ame cestu k c´ıli. Nov´y bod vˇzdy pˇripoj´ıme jako vˇetev jiˇz k existuj´ıc´ımu grafu v nejbliˇzˇs´ım bodˇe.

Algoritmus RRT* je rozˇs´ıˇren´ım tohoto algoritmu. Rozd´ıl mezi tˇemito dvˇema je v technice pˇripojov´an´ı nov´ych bod˚u k existuj´ıc´ımu grafu. Algoritmus pˇri pˇripojov´an´ı nov´eho vrcholu pro- zkoum´a jeho oblast a v r´amci n´ı bod pˇripoj´ı tak, aby nov´a cesta v nˇem vznikl´a byla co nejkratˇs´ı.

D´ıky tomuto faktoru se se zvˇetˇsov´an´ım poˇctu vrchol˚u v grafu optimalizuje cesta k c´ıli.

3.4 Zpracov´an´ı obrazu

Zpracov´an´ı obrazu se v dneˇsn´ı dobˇe st´av´a ned´ılnou souˇc´ast´ı autonomn´ıch robot˚u. Z´ısk´an´ı infor- mac´ı z obrazu kamer je nutn´e pro spr´avn´e urˇcen´ı prostˇred´ı robota a jeho navigaci.

Existuje mnoho metod pro zpracov´an´ı obrazu k nalezen´ı informac´ı. V komplexn´ıch syst´emech, jako chytr´a auta, se pouˇz´ıvaj´ı neuronov´e s´ıtˇe k anal´yze okol´ı. Tyto metody se pouˇz´ıvaj´ı vzhle- dem k moˇznostem vytr´enovat si neuronov´e s´ıtˇe na specifick´e potˇreby, kter´e robot vyˇzaduje, s n´ızkou chybovost´ı pˇri detekci. Tyto metody jsou ovˇsem velice n´aroˇcn´e na v´ypoˇcetn´ı s´ılu pro jejich aplikaci. Z tohoto d˚uvodu je nelze pouˇz´ıt ve vˇsech situac´ı.

3.4.1 Detekce hran

Detekce hran (edge detection) je jedna z nez´akladnˇejˇs´ıch metod zpracov´an´ı obrazu. Tato metoda zv´yrazˇnuje hrany mezi dvˇema oblastmi s r˚uzn´ymi hodnoty jasu, lze j´ı napˇr´ıklad pouˇz´ıt pro identifikaci popˇred´ı a pozad´ı obrazu. Tato metoda se pouˇz´ıv´a jako z´akladn´ı krok pro dalˇs´ı metody zpracov´an´ı obrazy, jako napˇr´ıklad: image segmentation, shape features ˇci texture features. [10]

3.4.1.1 R-CNN

C´ılem R-CNN k detekci objekt˚u je sn´ıˇzit poˇcet moˇzn´ych kandid´at˚u pro v´yskyt objekt˚u v obraze nez´avisle na ostatn´ıch takov´ychto oblastech. Na R-CNN stav´ı dalˇs´ı neuronov´e s´ıtˇe jako tˇreba Faster R-CNN pro sn´ıˇzen´ı ˇcasu nutn´eho k detekci objekt˚u.R-CNN samostatnˇe jiˇz nen´ı pˇr´ıliˇs pouˇz´ıv´ana z d˚uvodu pomal´eho tr´enov´an´ı model˚u a zpracov´an´ı obrazu.[11]

(22)

12 Kapitola 3. Anal´yza

3.4.1.2 Faster R-CNN

Faster R-CNN se skl´ad´a ze dvou hlavn´ı ˇc´asti, RPN (region proposal network) a Fast R-CNN.

RPN je s´ıt’ jeˇz navrhuje moˇzn´e oblasti v´yskytu objekt˚u. Fast R-CNN vych´az´ı z R-CNN a jej´ım

´uˇcelem je identifikace objekt˚u v navrhovan´ych oblast´ı. [11]

Pro zrychlen´ı v´ypoˇctu Faster R-CNN umoˇzˇnuje sd´ılen´ı informac´ı mezi jej´ımi dvˇema ˇc´astmi pro zrychlen´ı v´ypoˇctu. V´ystupem t´eto s´ıtˇe jsou informace o oblastech, kter´e obsahuj´ı detekovan´e objekty a popisky pro jejich identifikaci.[11]

3.4.1.3 Mask R-CNN

Mask R-CNN vyuˇz´ıv´a stejnou dvou f´azovou strukturu s prvn´ı identickou f´az´ı, RPN. Ve druh´e f´azi bˇeˇz´ı paralelnˇe dva procesy, Fast R-CNN k identifikace objekt˚u a Mask R-CNN pro nalezen´ı masek v´yskytu jednotliv´ych objekt˚u. [11]

(23)

Kapitola 4

N´avrh

Naˇs´ım ´ukolem je implementovat aplikaci, kter´a bude vyhled´avat pozemn´ı znaˇcky a vyh´ybat se pˇrek´aˇzk´am. Implementaci lze rozdˇelit na tˇri logick´e celky.

1. zpracov´an´ı obrazu

2. vyhled´an´ı cesty pro pr˚uzkum zadan´e oblasti 3. navigace k jednotliv´ym bod˚um pr˚uzkumu

4.1 Zpracov´an´ı obrazu

Aplikace bude zpracov´avat obraz ze dvou kamer, horizont´aln´ı a vertik´aln´ı. Obraz z tˇechto kamer mus´ı b´yt zpracov´an pro potˇrebn´e informace k navigaci dronu.

Obraz z horizont´aln´ı kamery je tˇreba zpracovat pro nalezen´ı pˇredem zn´am´eho typu objek- tu/c´ıle. Z tohoto d˚uvodu nemus´ıme pro zpracov´an´ı obrazu pouˇz´ıt hlubok´e neuronov´e s´ıtˇe, ale vystaˇc´ıme si s funkcemi poskytuj´ıc´ı napˇr´ıklad knihovny OpenCV[12].

Z´aznam vertik´aln´ı kamery na druhou stranu poskytuje obraz na kter´em se budou vyskytovat objekty o jejichˇz typu nem´ame ˇz´adn´e informace. Z tohoto d˚uvodu je tˇreba pro jejich zpracov´an´ı vyuˇz´ıt hlubok´e neuronov´e s´ıtˇe. Tyto s´ıtˇe by se dali pouˇz´ıt i pro zpracov´an´ı horizont´aln´ı kamery, ale z d˚uvodu vysok´e v´ypoˇcetn´ı s´ıly pro jejich pouˇzit´ı zvol´ıme jednoduˇs´ı prostˇredky pro detekci pozemn´ıch c´ıl˚u.

4.1.1 Detekce pozemn´ıch c´ıl˚ u

D´ıky jednoduchosti vyhled´avan´ych c´ıl˚u lze pro jejich detekci vyuˇz´ıt jednoduˇsˇs´ıch princip˚u zpra- cov´an´ı obrazu, a nen´ı nutno obraz zpracov´avat pomoc´ı neuronov´ych s´ıt´ı.

Pro spr´avn´e proveden´ı detekce hran, mus´ıme sn´ımek pˇrev´ezt do grayscale, n´aslednˇe rozma- zat obr´azek pomoc´ı Gaussovsk´eho filtru a pouˇz´ıt Canny oper´ator pro samotnou detekci hran.

N´aslednˇe mus´ıme naj´ıt zp˚usob, kter´ym pˇrevedeme tyto hrany do datov´e formy ve kter´e budeme schopni detekovat tvary hran a rozhodnou, zda se jedn´a o n´ami hledan´y c´ıl.

Jelikoˇz zn´ame re´alnou velikost tˇechto c´ıl˚u m˚uˇzeme pomˇernˇe pˇresnˇe odhadnout jejich vzd´alenost od dronu pomoc´ı pˇreveden´ı pixel˚u na re´alnou vzd´alenost, d´ıky znalosti velikosti re´aln´ych c´ıl˚u.

13

(24)

14 Kapitola 4. N´avrh

4.1.2 Detekce pˇrek´aˇzek

Pro zpracov´an´ı sn´ımk˚u z kamery je pouˇzita hlubok´a neuronov´a s´ıt’ Detectron2. Kv˚uli vysok´e v´ypoˇcetn´ı sloˇzitosti je tato ˇc´ast aplikace nasazena na serveru speci´alnˇe vybaven´em ke zpracov´an´ı obrazu.

Aplikace na obsluhu vertik´aln´ı kamery pˇred´a sn´ımek aplikaci, kter´a komunikuje se serverem pˇres otevˇren´y socket na specifick´em portu. Server po pˇrijet´ı cel´eho obr´azku aplikuje obr´azek jako vstup neuronov´e s´ıtˇe a v´ysledn´e informace o ˇctvercov´ych obrysech objekt˚u na obrazu odeˇsle zpˇet dronu pro zpracov´an´ı.

4.2 Pr˚ uzkum oblasti

Pro zajiˇstˇen´ı detekce vˇsech c´ıl˚u na zadan´em ´uzem´ı mus´ıme zvolit algoritmus, kter´y bude schopn´y pokr´yt celou oblast. Jelikoˇz dron m´a relativnˇe kr´atkou v´ydrˇz baterie (8 minut), nelze se spol´ehat na naivn´ı n´ahodn´e ˇreˇsen´ı.

Pro nalezen´ı cesty pro optim´aln´ı pokryt´ı nejdˇr´ıve mus´ıme zjistit orientaˇcn´ı z´abˇer horizont´aln´ı kamery. Pˇri poˇc´ıt´an´ı optim´aln´ıho pokryt´ı cesty mus´ıme poˇc´ıtat s menˇs´ım z´abˇerem neˇz kamera m´a. D˚uvodem je moˇznost v´yskytu c´ıl˚u na hranici z´abˇeru jenˇz n´aˇs algoritmus nedetekuje. Nˇekter´e oblasti tud´ıˇz budou pokryty dvakr´at pro zaruˇcen´ı spolehliv´e detekce vˇsech c´ıl˚u.[13]

(25)

4.3. Navigace 15

4.3 Navigace 4.3.1 Anal´yza

Pro navrˇzen´ı spr´avn´e metody pro navigaci dronu k zadan´emu c´ıli mus´ıme spr´avnˇe porozumˇet omezen´ım vypl´yvaj´ıc´ı z hardwarov´eho vybaven´ı modelu dronu se kter´ym pracujeme. Z popisu dronu v kapitole 2 zn´ame senzory, kter´ymi je dron vybaven a jak´a data z nich m˚uˇzeme z´ıskat.

Pro z´ısk´an´ı informac´ı o prostˇred´ı ve kter´em se dron vyskytuje lze pouˇz´ıt ultrazvukov´y senzor pro zjiˇstˇen´ı vzd´alenosti od zemˇe, horizont´aln´ı a vertik´aln´ı kameru. Ani jedna z tˇechto moˇznost´ı n´am neumoˇzˇnuje z´ıskat informace o vzd´alenosti pˇrek´aˇzek od dronu. Z tohoto d˚uvodu naˇse aplikace nem˚uˇze vytv´aˇret mapu prostˇred´ı, podle kter´e by byla schopn´a navigovat dron k c´ıli.

Dron tedy nem˚uˇze pˇredem pl´anovat bezkolizn´ı let a mus´ı reagovat na pˇrek´aˇzky po jejich detekci pˇredn´ı kamerou. Ze stejn´eho d˚uvodu, z nˇehoˇz nem˚uˇzeme pl´anovat cestu, dron nem˚uˇzeme vyuˇz´ıvat ani algoritmus FGA k pl´anov´an´ı ´uhybn´ych man´evr˚u, jelikoˇz nem˚uˇze vypoˇc´ıtat optim´aln´ı dobu pro vyhnut´ı se.

4.3.2 Reˇsen´ı ˇ

Jelikoˇz dron nem˚uˇze detekovat vzd´alenost k pˇrek´aˇzce mus´ıme pˇredpokl´adat, ˇze se pˇrek´aˇzka m˚uˇze vyskytovat kdekoliv v dan´em smˇeru detekovan´eho objektu jak je vidno z obr´azky 4.1. Z tohoto d˚uvodu bereme cel´y tento prostor jako pˇrek´aˇzku.

Jakmile dron takovouto pˇrek´aˇzku detekuje vypoˇc´ıt´a si levnˇejˇs´ı ´uhybn´y man´evr. To je takov´y man´evr, kter´y vyˇzaduje nejmenˇs´ı ´uhyb z p˚uvodn´ı kurzu k c´ıli. T´ımto nov´ym smˇerem dron po- kraˇcuje zadanou dobu. Po dokonˇcen´ı tohoto man´evru se dron otoˇc´ı tak, aby jeho nov´a dr´aha letu byla rovnobˇeˇzn´a s jeho p˚uvodn´ı dr´ahou pˇred zah´ajen´ım ´uhybu. Po t´eto dr´aze pokraˇcuje dokud se jeho vzd´alenost k c´ıli zmenˇsuje, nebo nenaraz´ı na novou pˇrek´aˇzku. Jakmile se vzd´alenost od c´ıle zaˇcne vzdalovat dron se otoˇc´ı k c´ıli a pokraˇcuje dokud se k nˇemu nedostane k dostateˇcn´e vzd´alenosti.

Obr´azek 4.1 Diagram v´yhybu pˇrek´aˇzce

(26)

16 Kapitola 4. N´avrh

4.3.3 Omezen´ı ˇreˇsen´ı

Postup pro navigaci dronu nen´ı dokonal´y a existuj´ı situace, ve kter´ych se nedok´aˇze dostat k c´ıli i pˇresto, ˇze cesta k nˇemu existuje. Napˇr´ıklad na obr´azku 4.2 lze vidˇet dvˇe situace ve kter´ych dron nenajde cestu k c´ıli.

Obr´azek 4.2Omezen´ı navigace dronu

Toto omezen´ı vypl´yv´a z nemoˇznosti detekovat vzd´alenost k pˇrek´aˇzce. Tato situace by nebyla vyˇreˇsena ani pˇri vytv´aˇren´ı mapy okol´ı, jelikoˇz dron by detekoval pˇrek´aˇzku ve vˇsech moˇzn´ych

´uhlech sn´ım´an´ı a tud´ıˇz by detekoval c´ıl jako nepˇr´ıstupn´y.

Naˇse ˇreˇsen´ı ovˇsem tuto situaci neoznaˇc´ı jako nepˇr´ıstupn´y c´ıl, ale bude se k nˇemu neust´ale pokouˇset pˇribl´ıˇzit.

(27)

4.4. Aplikace 17

4.4 Aplikace

4.4.1 Struktura aplikace

TCP Server

Camera Vision

Navigation Drone

Ground Cam Vision

Obr´azek 4.3 Diagram

Z diagramu jde vidˇet, ˇze aplikace je rozdˇelena na 5 z´akladn´ıch modul˚u:

Syst´em pro navigaci dronu

Ovl´ad´an´ı pohybu dronu a z´ısk´av´an´ı dat ze senzor˚u Obsluha vertik´aln´ı kamery

Obsluha horizont´aln´ı kamery a zpracov´an´ı jej´ıho obrazu Zpracov´an´ı obrazu z vertik´aln´ı kamery

Tyto moduly jsou vytvoˇren´e jako samostatn´e ˇc´asti programu a v pˇr´ıpadˇe potˇreby je pˇri dodrˇzen´ıdefinovan´eho rozhran´ımoˇzno je ´uplnˇe nahradit. Aplikace je tvoˇrena modul´arnˇe pˇredevˇs´ım pro potˇreby vymˇenˇen´ı modul˚u pro zpracov´an´ı obrazu z kamer, jeˇz kaˇzd´y bˇeˇz´ı na separ´atn´ım vl´aknˇe pro snadn´e periodick´e z´ısk´av´an´ı sn´ımk˚u z kamer.

4.4.2 Drone modul

Tento modul slouˇz´ı pˇredevˇs´ım jako wrapper nad knihovnou Pyparrot pro usnadnˇen´ı ovl´ad´an´ı dronu a zpracov´an´ı potˇrebn´ych dat ze senzor˚u. Tˇr´ıda Drone inicializuje Mambo objekt, zkon- troluje spr´avn´e pˇripojen´ı a provede potˇrebn´a nastaven´ı pro spr´avn´e fungov´an´ı dronu. Hlavn´ım

(28)

18 Kapitola 4. N´avrh

´uˇcelem tohoto obalu je zaruˇcen´ı spr´avn´e vol´an´ı funkc´ıch s dostateˇcn´ym ˇcasem pro jejich prove- den´ı.

4.4.3 Navigaˇcn´ı syst´em

Tento modul m´a za ´uˇcel vypoˇc´ıtat body pro optim´aln´ı pr˚uzkum zadan´e oblasti na z´akladˇe za- dan´eho z´abˇeru spodn´ı kamery. Z´aroveˇn z´ısk´av´a informace o pozemn´ıch c´ılech z ˇc´asti aplikace Ground Cam Vision a filtruje je pro vylouˇcen´ı faleˇsn´ych c´ıl˚u. Faleˇsn´y c´ıl je takov´y, kter´y je v bezprostˇredn´ı bl´ızkosti jin´eho c´ıle, kter´y je jiˇz detekov´an. Vznik faleˇsn´ych c´ıl˚u je zp˚usoben nedokonal´ymi senzory sn´ımaj´ıc´ı polohu dronu.

4.4.4 Obsluha horizont´aln´ı kamery a zpracov´an´ı jej´ıho ob- razu

Tento modul slouˇz´ı k automatick´emu periodick´emu poˇrizov´an´ı sn´ımk˚u z horizont´aln´ı kamery, jeho zpracov´an´ı a pˇreposl´an´ı informac´ı z´ıskan´ych z obrazu dalˇs´ım ˇc´ast´ı aplikace.

Pyparrot knihovna poskytuje pouze funkci pro poˇr´ızen´ı obr´azku, z´ısk´an´ı n´azvu sn´ımk˚u, staˇzen´ı obr´azku z dronu a jeho smaz´an´ı. Z´asadn´ı probl´em horizont´aln´ı kamery je prodleva mezi poˇr´ızen´ım sn´ımku a jeho uloˇzen´ı v pamˇeti dronu (1.5-2.5s). Z tohoto d˚uvodu mus´ıme vˇzdy pˇri poˇr´ızen´ı fotky uloˇzit aktu´aln´ı pozici dronu pro zpˇetn´e vypoˇc´ıt´an´ı pˇresn´e polohy pˇr´ıpadn´eho c´ıle na obr´azku.

Pro zpracov´an´ı obrazu z horizont´aln´ı kamery jsou vyuˇzity z´akladn´ı metody edge detection pomoc´ı canny oper´atoru[10]. Pro odstranˇen´ı ˇsumu z obrazu je pouˇzit medi´anov´y filtr. Pot´e na sn´ımku najdeme kruhy a d´ıky fixn´ı velikosti c´ıle zn´ame od uˇzivatele, pomoc´ı pixel-per-metric metody, z´ısk´ame vzd´alenost c´ıle od dronu.

4.4.5 Obsluha vertik´aln´ı kamery

Obsluha vertik´aln´ı kamery je pˇr´ımo zabudovan´a v Pyparrot knihovnˇe. Po z´akladn´ı incializaci dronu staˇc´ı vytvoˇrit objekt spravuj´ıc´ı kameru a nastavit pˇr´ısluˇsnou callback funkci, kter´e bude zavol´ana pˇri poˇr´ızen´ı kaˇzd´eho nov´eho sn´ımku kamery. Uvnitˇr callback funkce n´aslednˇe z´ısk´ame posledn´ı validn´ı sn´ımek a ten n´aslednˇe m˚uˇzeme uloˇzit/pˇredat ke zpracov´an´ı.

Tento modul slouˇz´ı jako obal pro vl´akno pro obsluhu kamery. Kaˇzd´y poˇr´ızen´y sn´ımek je odesl´an na server pˇrizp˚usoben´y pro zpracov´an´ı obrazu. Server poˇsle zpˇet r´amce nalezen´ych ob- jekt˚u a modul je nad´ale pˇrepoˇsle dalˇs´ım ˇc´ast´ı aplikace pro zpracov´an´ı jiˇz z´ıskan´ych dat.

4.4.6 Zpracov´an´ı obrazu z vertik´aln´ı kamery

K detekci jednotliv´ych objekt˚u je pouˇzita s´ıt’ Detectron2[14], kter´a se zakl´ad´a na Mask R-CNN.

Zpracov´an´ı pomoc´ı neuronov´ych s´ıt´ı je vysoce n´aroˇcn´e na v´ypoˇcetn´ı s´ılu. Z tohoto d˚uvodu tato ˇc´ast aplikace pobˇeˇz´ı na specializovan´em serveru, uzp˚usoben´emu ke zpracov´an´ı obrazu.

(29)

Kapitola 5

Implementace

5.1 Dron

5.1.1 Pˇripojen´ı dronu

Dron Parrot Mambo nab´ız´ı pˇripojen´ı pˇres Wi-fi a pˇres bluetooth. Jelikoˇz pˇripojen´ı pˇres blueto- oth neposkytuje dostateˇcnˇe rychl´e stahov´an´ı obr´azk˚u z dronu pouˇzijeme v naˇs´ı aplikaci Wi-Fi pro pˇripojen´ı k dronu. Pˇripojen´ı k dronu obstar´av´a tˇr´ıda Mambo, kter´a dˇed´ı z tˇr´ıdy Minidrone spr´avnou komunikaci aplikace s dronem.

V´ypis k´odu 5.1 Pˇripojen´ı se k dronu m a m b o A d d r =" 1 2 : 3 4 : 5 6 : AB : CD : EF "

m a m b o = M a m b o ( a d d r e s s = m a m b o A d d r , u s e _ w i f i = T r u e ) s u c c e s s = m a m b o . c o n n e c t ( n u m _ r e t r i e s =3)

Objekt jde inicializovat dvˇema parametry, address a use wifi. Parametr address poskytuje MAC adresu pro pˇripojen´ı dronu pomoc´ı bluetooth. Druh´y parametruse wifi specifikuje zda se m´a aplikace pˇripojit k dronu pomoc´ı Wi-Fi nebo bluetooth. Pˇripojen´ı pˇres Wi-Fi funguje pouze pokud je ke dronu pˇripojena FPV kamera a poˇc´ıtaˇc je pˇripojen k s´ıti dronu (n´azev s´ıtˇe odpov´ıd´a n´azvu Mamboˇc´ıslo dronu). Promnˇen´a sucess ud´av´a zda pˇripojen´ı k dronu probˇehlo ´uspˇeˇsnˇe a je moˇzn´e pokraˇcovat v programu.

V uk´azce k´odu 5.1 je pˇred´ana objektu ,Mambo, pˇri jeho inicializaci, MAC adresa dronu. Tato adresa je nutn´a pouze pˇri pˇripojov´an´ı se k dronu pˇres bluetooth.

5.1.2 Z´asady ovl´ad´an´ı 5.1.3 Senzory

Objekt Mambo obsahuje instanci tˇr´ıdy MinidroneSensors, kter´a obsahuje zpracov´an´ı dat do- stupn´ych ze senzor˚u, prov´ad´ı dodateˇcn´e v´ypoˇcty a vol´a callback funkci pˇri obnoven´ı dat ze senzor˚u, je-li specifikovan´a uˇzivatelem.

V souboru commandsandsensors/minidrone.xml v knihovnˇe Pyparrot lze naj´ıt informace o senzorech, a jak´a data odes´ılaj´ı. V tˇr´ıdˇe MinidroneSensorsje mal´a ˇc´ast dat ukl´adan´a v sa- mostatn´ych ˇclensk´ych promˇenn´ych. Zbytek nespecifikovan´ych ´udaj˚u je zachycen v promˇenn´e sensors_dict, kde lze z´ıskat pˇr´ısluˇsn´a data dle adresace jejich jm´ena.

19

(30)

20 Kapitola 5. Implementace

Aplikace pracuje pˇredevˇs´ım s ´udaji o poloze a rotaci dronu, pro urˇcen´ı dalˇs´ıho pohybu dronu.

Dron umoˇzˇnuje z´ısk´an´ı informac´ı o souˇradnic´ıch dronu v˚uˇci bodu vzletu, spolu s rotac´ı dronu a timestamp, ˚udajem o ubˇehnut´em ˇcasu od posledn´ıho pˇrijmut´ı dat.

5.1.4 Pozice dronu

Dron odes´ıl´a ˇradu informac´ıze sv´ych senzor˚u. Jejich cel´y seznam lze vyˇc´ıst ze souboruminidrone.xml v Pyparrot knihovnˇe. Nejd˚uleˇzitˇejˇs´ı informac´ı, kterou potˇrebujeme o dronu zn´at je informace o jeho pohybu ˇci jeho pˇresnou polohu. Tyto informace poskytuje poloˇzkaNavigationDataState ve v´yˇse zm´ınˇen´em souboru.

1. DronePosition 2. DroneSpeed 3. DroneAltitude 4. DroneQuaternion

Nejd˚uleˇzitˇejˇs´ı poloˇzkou pro n´as budeDronePosition. Senzory t´eto kategorie poskytuj´ı infor- mace o pozici dronu a jeho rotaci vzhledem k bodu startu (nikoli bodu kde byl dron zapnut).

Pˇri bˇehu programu dron poskytuje informace o poloze dronu. Senzory by mˇeli vracet i hodnotu rotace dronu v˚uˇci startovn´ı pozici, senzor bohuˇzel vrac´ı nulovou hodnotu. Informace o rotaci dronu dok´aˇzeme nahradit d´ıky senzor˚um zDroneQuaternion. Knihovna Pyparrot sama obsahuje funkci get_estimated_z_orientation, kter´a na z´akladˇe ´udaj˚u z jin´ych senzor˚u vrac´ı odhado- vanou rotaci dronu. Hlavn´ım probl´emem nefunkˇcnosti tohoto senzoru pˇredstavuje orientace dat o pozici dronu. Kv˚uli nedostupn´e informaci o orientaci dronu pˇri vzletu, jsou data o pozici dronu orientov´ana vzhledem k zapnut´ı dronu. Z tohoto d˚uvodu mus´ı b´yt dron zap´ın´an jiˇz spr´avnˇe orientov´an pro spr´avnou funkˇcnost aplikace.

5.1.5 Pohyb dronu

Jelikoˇz detekce pˇrek´aˇzek dronu je moˇzn´a jen pomoc´ı FPV kamery, sn´ımaj´ıc´ı okol´ı pˇred dronem, pohyb dronu mus´ıb´yt vˇzdy dopˇredu. Kdyˇz budeme pohybovat s dronem do jin´e strany s vzhledem k jeho aktu´aln´ı rotaci, riskujeme sr´aˇzku s pˇrek´aˇzkou, jeˇz jsme nedetekovali.

Omezen´ı pohybu pouze dopˇredu n´am sniˇzuje poˇcet parametr˚u ovlivˇnuj´ıc´ı rychlost a d´elku tohoto pohybu.

parametrpitchve funkcifly_direct parametrdurationve funkcifly_direct hodnota maxim´aln´ıho n´aklonu dronu

Tyto tˇri parametry maj´ı hlavn´ı vliv na charakteristiku pohybu. Parametr pitch je pro- centu´aln´ı hodnota maxim´aln´ıho dronu. Tato hodnota ovlivˇnuje rychlost, kterou se dron vyd´a. Pa- rametrdurationovlivˇnuje dobu po kterou je pˇr´ıkaz k letu opakov´an, tedy pˇr´ımo ovlivˇnuje d´elku tohoto pohybu. Velikost maxim´aln´ıho n´aklonu dronu je nastavena pomoc´ı funkceset_max_tilt. Tato hodnota spolu s parametrypitcharoll ovlivˇnuje rychlost pohybu dronu.

Tyto tˇri parametry dohromady ovlivˇnuj´ı pohyb dronu dopˇredu a jejich spr´avn´a konfigurace je potˇrebn´a pro spr´avn´e fungov´an´ı aplikace.

(31)

5.1. Dron 21

5.1.6 Vyhnut´ı se pˇrek´aˇzce

Navigace k c´ıli je implementov´ana ve tˇr´ıde Drone pomoc´ı funkci moveTo. Za pomoc´ı tˇr´ı po- mocn´ych funkc´ı:calculateDistance,turnadecideManouvertato funkce naviguje dron k c´ıli.

FunkcecalculateDistance vypoˇc´ıt´a Euklidovskou vzd´alenost mezi aktu´aln´ı pozic´ı dronu a c´ılem.

5.1.6.1 Funkce turn

Tato funkce implementuje otoˇcen´ı dronu na zadan´y c´ıl ˇci na zadan´y ´uhel ve virtu´aln´ı mˇr´ıˇzce v˚uˇci dronu. K implementaci otoˇcen´ı nen´ı vyuˇzita funkcefly_direct, jelikoˇz parametr ud´avaj´ıc´ı otoˇcen´ı je zad´av´an jako procentu´aln´ı zrychlen´ı rotace dronu, nikoli pˇresn´y poˇcet stupˇn˚u k otoˇcen´ı.

M´ısto toho je uˇzita funkce knihovny turn_degrees, kter´a bere jako parametr ´uhel v intervalu h−180,180io kter´y se m´a otoˇcit.

V pˇr´ıpadˇe zad´an´ı ´uhlu na kter´y se m´a dron otoˇcit, staˇc´ı spoˇc´ıtat rozd´ıl ´uhlu mezi osou x dronu a ´uhlem k otoˇcen´ı. N´aslednˇe staˇc´ı jednoduˇse ovˇeˇrit zda je ´uhel v intervalu h−180,180i. Pokud nen´ı pˇrevedeme ´uhel do poˇzadovan´eho intervalu a m˚uˇzeme zavolat funkciturn_degrees. V pˇr´ıpadˇe ot´aˇcen´ı se na zadan´y ´uhel nedoch´az´ı k nepˇresnostem v´ypoˇctu, jelikoˇz pracujeme s ´uhly jako cel´ymi ˇc´ısly a doch´az´ı pouze k jejich sˇc´ıt´an´ı a odˇc´ıt´an´ı.

Pˇri ot´aˇcen´ı dronu na c´ıl mus´ıme vypoˇc´ıtat ´uhel k c´ıli bud’to pomoc´ı Sinovy, Cosinovy nebo Pythagorovy vˇety, tud´ıˇz m˚uˇze doch´azet k nepˇresnostem ve v´ypoˇctu, kter´e se mus´ıme snaˇzit minimalizovat.

Nejdˇr´ıve vypoˇc´ıt´ame ´uhel, kter´y sv´ır´a osa x a pozice dronu s c´ılem. Pot´e vypoˇc´ıt´ame rozd´ıl mezi t´ımto ´uhlem a ´uhlem natoˇcen´ı dronu a na z´avˇer ovˇeˇr´ıme zda se v´ysledn´y ´uhel k otoˇcen´ı nach´az´ı v intervaluh−180,180i.

Pro v´ypoˇcet ´uhlu α na obr´azku si vytvoˇr´ıme troj´uheln´ık jehoˇz vrcholy jsou C, P a P+10 (bod se souˇradnicemi [Px+ 10, Py]). ´Uhelαpot´e vypoˇc´ıt´ame pomoc´ı Cosinovy vˇety a n´aslednˇe pˇrevedeme ´uhel otoˇcen´ı tak aby spadal do intervaluh−180,180i.

5.1.6.2 Funkce decideManouver

´Uˇcelem t´eto funkce je analyzovat informace o detekovan´ych pˇrek´aˇzk´ach a urˇcit dalˇs´ıpohyb dronu.

Naˇse metoda navigace dronu vych´az´ı z algoritm˚u FGA a BUG. Algoritmus FGA prov´ad´ı ´uhybn´e man´evry na dvou rovin´ach, horizont´aln´ı a vertik´aln´ı. Z d˚uvodu fixn´ıho nastaven´ı z´abˇeru spodn´ı kamery pro detekci optim´aln´ı cesty pro prozkoum´an´ı zadan´e oblasti, nelze mˇenit v´yˇsku letu dronu, tud´ıˇz ´uhybn´e man´evry budou prov´adˇeny pouze v horizont´aln´ı rovinˇe, nikoliv vertik´aln´ı.

Ke spoˇc´ıt´an´ı man´evru funkce vyuˇz´ıv´a informace o bounding box detekovan´ych objekt˚u. De- tekce je provedena pomoc´ı Mask R-CNN, kter´a poskytuje pˇr´ımo masku objektu. Kv˚uli nasazen´ı zpracov´an´ı obrazu na serveru, pouˇz´ıv´ame pouze boundig box nikoliv masku objektu, jelikoˇz je tato informace mnohem snazˇs´ı na odesl´an´ı ze serveru a pˇrijet´ı.

Na z´akladˇe tˇechto informac´ı funkcedecideManouver zjist´ı zda se nˇejak´y objekt vyskytuje v dr´aze dronu a pˇr´ıpadnˇe zjist´ı, kter´a strana pˇri vyh´yb´an´ı se objektu, kter´y blokuje cestu, zp˚usob´ı menˇs´ı vych´ylen´ı z p˚uvodn´ı dr´ahy.

Je nutno br´at v potaz, ˇze objekty se mohou pˇrekr´yvat a pˇri poˇc´ıt´an´ı menˇs´ı v´ychylky se mus´ı br´at v potaz vˇsechny objekty, nejen objekt blokuj´ıc´ı cestu.

(32)

22 Kapitola 5. Implementace

5.1.6.3 Funkce moveTo

Dron se otoˇc´ı na c´ıltargetspecifikovan´y parametrem funkce za pouˇzit´ı funkceturn. Toto otoˇcen´ı je provedeno na m´ıstˇe, nen´ı kombinov´ano s jin´ym pohybem dronu. N´aslednˇe se zaˇcne pohybovat k c´ıli.

Pokud m´a dron informace o pˇrek´aˇzk´ach detekovan´ych FPV kamerou, zjist´ı zda mu nˇejak´a pˇrek´aˇz´ı v cestˇe dopˇredu. Pokud m´a volnou cestu pokraˇcuje v pohybu dopˇredu dokud se ne- dostane k dostateˇcn´e vzd´alenosti od c´ıle. V pˇr´ıpadˇe detekce pˇrek´aˇzky pˇred dronem, funkce decideManouver zjist´ı, do jak´e strany by se mˇel vyhnout a vr´at´ı pˇr´ısluˇsnou hodnotu pohybu pro funkcifly_direct. Smˇer vyhnut´ı se bere jako nejlevnˇejˇs´ı man´evr, tedy man´evr pˇri kter´em dojde k otoˇcen´ı o nejmenˇs´ı moˇzn´y ´uhel.

´Uhybn´y man´evr je prov´adˇen po dobu dvou sekund pro zajiˇstˇen´ı pr˚uletu dronu od potenci´aln´ı pˇrek´aˇzky. Po skonˇcen´ı ´uhybn´eho man´evru, dron zmˇen´ı svoj´ı rotaci takov´ym zp˚usobem, ˇze nov´a dr´aha je rovnobˇeˇzn´a s pˇr´ımou dr´ahou mezi startovn´ım bodem a c´ılem. Pokud dron naraz´ı na dalˇs´ı pˇrek´aˇzku provede vyhnut´ı obdobn´ym zp˚usbem.

Jakmile se dron zaˇcne vzdalovat od sv´eho c´ıle aniˇz by zrovna prov´adˇel ´uhybn´y man´evr, otoˇc´ı se zpˇet na c´ıl pomoc´ı funkceturn.

V´ypis k´odu 5.2 Navigace dronu k c´ıli def m o v e T o ( self , t a r g e t ):

roll , pitch , yaw , v e r t i c a l = 0 , 20 , 0 , 0 t a r g e t A n g l e = s e l f . t u r n ( t a r g e t = t a r g e t ) mTs = 0

d = con . c a l c u l a t e D i s t a n c e ( target , s e l f . m _ p o s i t i o n . g e t P o s i t i o n ()) w h i l e 0.3 < d :

d = con . c a l c u l a t e D i s t a n c e ( target ,

s e l f . m _ p o s i t i o n . g e t P o s i t i o n ()) v e r t i c a l , yaw = s e l f . m a k e M a n o u v e r ()

if v e r t i c a l + yaw != 0:

s e l f . a v o i d i n g = T r u e e l s e:

s e l f . a v o i d i n g = F a l s e

if s e l f . l a s t D i s t a n c e < d and s e l f . a v o i d i n g == F a l s e : s e l f . t u r n ( t a r g e t )

s e l f . l a s t D i s t a n c e = d if s e l f . a v o i d i n g == F a l s e :

if 2 < t i m e . t i m e () - mTs : s e l f . t u r n ( t a r g e t A n g l e ) mTs = t i m e . t i m e ()

s e l f . m _ d r o n e . f l y _ d i r e c t ( roll , pitch , yaw , v e r t i c a l , 0 . 5 ) s e l f . m _ d r o n e . s m a r t _ s l e e p (1)

(33)

5.2. Navigace 23

5.2 Navigace

Pro nalezen´ı optim´aln´ı cesty pro pr˚uzkum zadan´e oblasti mus´ıme vz´ıt v potaz ˇs´ıˇrku z´abˇeru spodn´ı kamery. Pro spr´avn´e urˇcen´ı t´eto cesty si mus´ıme ovˇsem uvˇedomit rozd´ıl mezi skuteˇcn´ym z´abˇerem kamery a z´abˇerem kamery, ve kter´em jsme schopn´ı detekovat pozemn´ı c´ıle.

Jelikoˇz je detekce pozemn´ıch c´ıl˚u prov´adˇena pomoc´ı knihovny OpenCV[12] a nikoliv neuro- nov´ych s´ıt´ı, nedok´aˇzeme detekovat ˇc´asti c´ıl˚u, kter´e se mohou vyskytovat na hran´ach sn´ımk˚u ka- mer. Pˇrekr´yv´an´ı z´abˇeru je tak´e nutn´e vzhledem k nedokonal´emu letu dronu. Nem˚uˇzeme spol´ehat na rovn´y pohyb dronu, jelikoˇz m˚uˇze doch´azet k nepˇresnostem napˇr´ıklad pˇri ot´aˇcen´ı.

Z pˇrekr´yv´an´ı z´abˇeru kamer ovˇsem vznik´a probl´em duplicitn´ı detekce c´ıl˚u. Z tohoto d˚uvodu je tˇreba filtrovat c´ıle a urˇcit nˇejakou mezn´ı vzd´alenost mez´ı c´ıli, pˇri kter´e se dva c´ıle budou povaˇzovat za totoˇzn´e.

5.2.1 Hled´an´ı cesty

Hled´an´ı cesty v zadan´e oblasti funguje na principu jej´ıho rozdˇelen´ı do mˇr´ıˇzky. Oblast rozdˇel´ım do mˇr´ıˇzky, kde je jedna dlaˇzdice t´eto mˇr´ıˇzky rovna velikosti efektivn´ıho z´abˇeru kamery. Z´ısk´ame si stˇredy jednotliv´ych dlaˇzdic a rozdˇel´ıme si je dle sloupc˚u.

Pro vytvoˇren´ı cesty z tˇechto bod˚u n´am staˇc´ı seˇradit body v kaˇzd´em sloupci. A postupnˇe odeb´ırat jednotliv´e body.

Sloupce rozdˇel´ıme do skupin dle stejn´e souˇradnice x. Tyto skupiny seˇrad´ıme dle souˇradnice x. N´aslednˇe kaˇzd´y sud´y sloupec seˇrad´ıme vzestupnˇe dle souˇradnice y a lich´e sloupce seˇrad´ıme sestupnˇe. Takov´ato metoda n´am vytvoˇr´ı optim´aln´ı pr˚uchod mˇr´ıˇzkou jak je vidˇet na obr´azku 5.1

Obr´azek 5.1 Optim´aln´ı pr˚uchod mˇr´ıˇzkou

(34)

24 Kapitola 5. Implementace

5.3 Horizont´aln´ı kamera 5.3.1 Staˇzen´ı obr´azku

Poˇr´ızen´ı sn´ımku pomoc´ı horizont´aln´ı kamery je implementov´ano metodou take_pictue tˇr´ıdy Minidrone. Pokud je dron pˇripojen pˇres Wi-Fi, tato funkce zkontroluje zda v dronu je uloˇzeno m´enˇe jak 35 sn´ımk˚u z kamery. Pˇri pˇrekroˇcen´ı tohoto poˇctu smaˇze vˇsechny sn´ımky, jelikoˇz pˇri pˇrekroˇcen´ı poˇctu 40 sn´ımk˚u v pamˇeti dron ignoruje dalˇs´ı sn´ımky.

Staˇzen´ı obr´azku je realizov´ano tˇr´ıdouMamboGroundcam. Instance t´eto tˇr´ıdy je vytvoˇrena pˇri inicializaci tˇr´ıdyMinidrone, pouze v pˇr´ıpadˇe pˇripojen´ı dronu pˇres Wi-Fi. Tato tˇr´ıda inicializuje FTP pˇripojen´ı na adrese 192.168.99.3. Tato moˇznost nefunguje pro nejnovˇejˇs´ı verzi firmwaru 3.0.26, proto pro spr´avn´e fungov´an´ı aplikace je nutn´e, aby verze firmwaru dronu byla3.0.17.

Metodaget_groundcam_picture, vyˇzaduje n´azev souboru v souborov´em syst´emu dronu, pro staˇzen´ı sn´ımku do poˇc´ıtaˇce. Pomoc´ı metodyget_groundcam_pictures_nameslze z´ıskat seznam sn´ımk˚u uloˇzen´ych v dronu. Nem˚uˇzeme se spol´ehat na stahov´an´ı obr´azku dle n´azvu, tud´ıˇz mus´ıme porovnat seznam sn´ımk˚u pˇred a po poˇr´ızen´ı sn´ımku nebo na zaˇc´atku aplikace pamˇet’ dronu vyˇcistit a vˇzdy po staˇzen´ı sn´ımku ho z dronu vymazat.

5.3.2 Obsluha horizont´aln´ı kamery

Jelikoˇz sn´ımek se nejdˇr´ıve mus´ı zapsat do souborov´eho syst´emu dronu nast´av´a prodleva mezi odesl´an´ım pˇr´ıkazu k poˇr´ızen´ı sn´ımku a moˇznost´ı jeho staˇzen´ı. Tato prodleva se pohybuje v rozmez´ı 1.5-2.5 sekundy. Z tohoto d˚uvodu nem˚uˇzeme implementovat ˇreˇsen´ı, kter´e by detekovalo c´ıle bˇehem letu a okamˇzitˇe na nˇe reagovalo. Syst´em pro detekci pozemn´ıch c´ıl˚u mus´ıme navrhnout takov´ym zp˚usobem, aby byl schopn´y poˇrizovat sn´ımky bˇehem letu a n´aslednˇe je stahoval se zpoˇzdˇen´ım. Pro n´asledn´e detekov´an´ı c´ıl˚u a zjiˇstˇen´ı jejich pozice je tud´ıˇz nutn´e, aby tento modul uchov´aval informace o pozici a rotaci dronu v dobˇe poˇr´ızen´ı sn´ımku.

Tento mechanismus je implementov´an v tˇr´ıdˇegroundCamHandler. Pˇri zavol´an´ı metodystart se vytvoˇr´ı nov´e vl´akno programu, kter´e se star´a o stahov´an´ı sn´ımk˚u z dronu.

V´ypis k´odu 5.3 Obsluha spodn´ı kamery dronu w h i l e s e l f . r u n n i n g is T r u e :

pos , rot = s e l f . g e t D r o n e I n f o () s e l f . d r o n e . g e t P i c t u r e ()

t i m e . s l e e p ( 1 . 5 )

l i s t = s e l f . d r o n e . m _ d r o n e . g r o u n d c a m . g e t _ g r o u n d c a m _ p i c t u r e s _ n a m e s () if len(l i s t) == 1:

pic = s e l f . d r o n e . d o w n l o a d P i c t u r e (l i s t[ 0 ] ) s e l f . c a l l b a c k ( pic , pos , rot )

e l s e:

s e l f . d r o n e . d e l e t e P i c t u r e s ()

Vl´akno si nejdˇr´ıve uloˇz´ı informace o pozici a rotaci dronu, pot´e odeˇsle pˇr´ıkaz pro poˇr´ızen´ı sn´ımku a po ˇcasov´e prodlevˇe si st´ahne seznam soubor˚u v dronu. Pokud tento seznam obsahuje v´ıce neˇz jednu poloˇzku, nem˚uˇzeme stahovat sn´ımek a hledat c´ıle, jelikoˇz nedok´aˇzeme urˇcit, ke kter´emu sn´ımku pˇriˇradit naˇse informace o pozici a rotaci dronu. Z tohoto d˚uvodu jsou vˇsechny sn´ımky z dronu pˇred spuˇstˇen´ım vl´akna smaz´any. Pokud je v seznamu jen jedna poloˇzka, m˚uˇzeme st´ahnout sn´ımek a zavolat funkci pro zpracov´an´ı obrazu, zadanou pˇri inicializacigroundCamHandler. Po- kud jsou ve sn´ımku detekov´any nˇejak´e c´ıle, vl´akno zavol´a vˇsechny callback funkce, kter´e se zad´avaj´ı pomoc´ı metodysetCallback.

(35)

5.3. Horizont´aln´ı kamera 25

5.3.3 Zpracov´an´ı obrazu

Jelikoˇz hledan´e c´ıle jsou vˇsechny stejn´e a vˇsechny sn´ımky jsou foceny t´emˇeˇr ze stejn´eho ´uhlu, pouˇzijeme k jejich detekci knihovnu OpenCV[12] m´ısto zpracov´an´ı pomoc´ı neuronov´ych s´ıt´ı. Pro nalezen´ı c´ıl˚u pouˇzijeme jednoduchou metodu detekce hran pomoc´ı Canny oper´atoru.

Pro spr´avnou detekci hran mus´ıme nejdˇr´ıve pˇrev´est sn´ımek do greyscale podoby pomoc´ı funkcecv2.cvtColor. N´aslednˇe je obraz tˇreba rozmazat funkc´ıcv2.GaussianBlurpro spr´avnou detekci hran pomoc´ı cv2.Canny. Nyn´ı m´ame zv´yraznˇen´e hrany. Pro zjiˇstˇen´ı a popis obrys˚u pro n´asledn´e zpracov´an´ı provedeme pomoc´ı funkce cv2.findContours. Nen´ı projdeme vˇsechny obrysy a zjist´ıme, kter´e jsou kruhovit´eho tvaru. Na z´akladˇe informac´ı u velikosti kruhu v pixelech a velikosti re´aln´eho c´ıle v cm, m˚uˇzeme vypoˇc´ıtat re´alnou vzd´alenost c´ıle od stˇredu obrazu.

T´ımto nez´ısk´ame pˇresn´y vzd´alenost, jelikoˇz sn´ımek nen´ı pˇresn´a prezentace plochy, ale p˚usob´ı na nˇej zkreslen´ı kamery. Kamera m´a ovˇsem mal´y z´abˇer, tud´ıˇz takto vznikl´a nepˇresnost bude zanedbateln´a (v ˇr´adech milimetr˚u). Nepˇresnost v ˇr´adech milimetr˚u ˇci jednotk´ach centimetr˚u je zanedbateln´a v˚uˇci nepˇresnosti informac´ı o poloze dronu.

Obr´azek 5.2 Detekce pozemn´ıch c´ıl˚u

(36)

26 Kapitola 5. Implementace

5.4 Vertik´aln´ı kamera

5.4.1 Obsluha vertik´aln´ı kamery

Obsluha FPV kamery je implementov´ana v Pyparrot knihovnˇe pomoc´ı tˇr´ıdyDroneVision. Tato tˇr´ıda inicializuje pˇripojen´ı k FPV kameˇre, stahov´an´ı a ukl´ad´an´ı sn´ımk˚u z kamery. Metoda t´eto tˇr´ıdy, open_video, spust´ı nov´y proces obstar´avaj´ıc´ı staˇzen´ı a ukl´ad´an´ı sn´ımk˚u z kamery do poˇc´ıtaˇce. Pro okamˇzit´e zpracov´an´ı obr´azk˚u pˇri jejich uloˇzen´ı do fronty lze pouˇz´ıt metodu set_user_callback_function. Tato metoda uloˇz´ı callback funkci jako nov´e vl´akno.

V´ypis k´odu 5.4 Inicializace obsluhy FPV kamery def _ _ i n i t _ _ ( self , d r o n e ):

s e l f . v i s i o n = D r o n e V i s i o n ( drone , False , b u f f e r _ s i z e = 3 0 ) s e l f . v i s i o n . s e t _ u s e r _ c a l l b a c k _ f u n c t i o n ( s e l f . p r o c e s s I m a g e ,

u s e r _ c a l l b a c k _ a r g s = N o n e )

5.4.2 Zpracov´an´ı obrazu

Zpracov´an´ı obrazu z FPV kamery je provedeno pomoc´ı neuronov´e s´ıtˇe Detectron2. Pouˇzit´ı neu- ronov´e s´ıtˇe je nutnost´ı, jelikoˇz nedok´aˇzeme pˇredv´ıdat ˇz´adn´e informace o objektech, kter´e by se mohli vyskytovat v cestˇe dronu. I s pˇredem dan´ym typem pˇrek´aˇzek by jejich detekce bez pouˇzit´ı neuronov´ych s´ıt´ı byla obt´ıˇzn´a.

Neuronov´a s´ıt’ Detectron2 mus´ı bˇeˇzet na specializovan´em serveru. Kv˚uli prodlevˇe nutn´e pro inicializaci s´ıtˇe Detectron2 nen´ımoˇzn´e kop´ırovat sn´ımek pomoc´ıscpna server a vzd´alenˇe spouˇstˇet skript, kter´y by ho zpracoval. Na serveru tud´ıˇz mus´ı bˇeˇzet ˇc´ast aplikace, kter´a bude komunikovat s klientem pˇres otevˇren´y socket. Tato ˇc´ast nakonfiguruje s´ıt’ Detectron2 a poˇck´a na pˇripojen´ı klienta. Klient n´aslednˇe odes´ıl´a sn´ımky z kamery, kter´e server zpracuje a zpˇet odeˇsle informace o bounding box detekovan´ych objekt˚u.

Komunikace ze strany klienta je implementov´ana v tˇr´ıdˇe Client. Tato tˇr´ıda inicializuje pˇripojen´ı na server10.10.48.91. Pomoc´ı metodysendm˚uˇzeme odes´ılat sn´ımky dronu na server, n´aslednˇe z´ısk´ame informace o objektech v poli, kter´e je vr´aceno touto metodou.

Toto pole m´a dimenzi [2,2, n], kdenje pˇrirozen´e ˇc´ıslo. Kaˇzd´a poloˇzka v tomto poli signalizuje dvojici bod˚u, kter´e oznaˇcuj´ı lev´y horn´ı a prav´y doln´ı roh boundig box objektu.

5.4.2.1 Detectron2

Detectron2 je knihovna nov´e generace v´yzkumu AI od firmy Facebook. Knihovna poskytuje mo- dern´ı algoritmy pro segmentaci a detekci objekt˚u. Tato s´ıt’ vych´az´ı z jej´ıho pˇredch˚udce Detectron a projektu Mask R-CNN benchamrk.

(37)

5.4. Vertik´aln´ı kamera 27

V´ypis k´odu 5.5 Inicializace neuronov´e s´ıtˇe Detectron2

cfg = g e t _ c f g ()

cfg . m e r g e _ f r o m _ f i l e ( m o d e l _ z o o . g e t _ c o n f i g _ f i l e (

" COCO - I n s t a n c e S e g m e n t a t i o n / m a s k _ r c n n _ R _ 5 0 _ F P N _ 3 x . y a m l ")) cfg . M O D E L . R O I _ H E A D S . S C O R E _ T H R E S H _ T E S T = 0.5

cfg . M O D E L . W E I G H T S = m o d e l _ z o o . g e t _ c h e c k p o i n t _ u r l (

" COCO - I n s t a n c e S e g m e n t a t i o n / m a s k _ r c n n _ R _ 5 0 _ F P N _ 3 x . y a m l ") cfg . f r e e z e ()

p r e d i c t o r = D e f a u l t P r e d i c t o r ( cfg )

Pro detekci objekt˚u Detectron2[14] vyuˇz´ıv´a model zoo. Ten obsahuje tr´enovan´e modely pro r˚uzn´e ´ukoly jako detekce objekt˚u ˇci s´emantickou segmentaci.

Obr´azek 5.3 Detekce objekt˚u

(38)
(39)

Kapitola 6

Specifikace aplikace

6.1 Instalace

6.1.1 Knihovna Pyparrot

Aplikace vyˇzaduje nˇekolik ´uprav knihovny Pyparrot pro spr´avn´e fungov´an´ı. Nejnovˇejˇs´ı firmware 3.0.26 dronu Mambo nepodporuje stahov´an´ı obr´azk˚u z horizont´aln´ı kamery dronu a pˇripojen´ı k dronu pˇres FTP je vypnuto. Pro povolen´ı moˇznosti pˇripojen´ı je nutno upravit ˇc´ast k´odu v souboruMinidrone.pyna ˇr´adc´ıch 237-243 na n´asleduj´ıc´ı:

V´ypis k´odu 6.1 Pˇripojen´ı k dronu pˇres FTP try:

s e l f . ftp = FTP (’ 1 9 2 . 1 6 8 . 9 9 . 3 ’) # IP - A d d r e s s of the d r o n e i t s e l f l o g i n = s e l f . ftp . l o g i n ()

p r i n t(" FTP l o g i n s u c c e s s is % s " % l o g i n ) e x c e p t:

p r i n t(" E R R O R : ftp l o g i n is d i s a b l e d by p a r r o t f i r m w a r e 3 . 0 . 2 5 and 26. G r o u n d c a m w i l l not w o r k . ")

s e l f . ftp = N o n e

N´aslednˇe je nutn´e zmˇenit hodnotu promnˇen´efullpathv souborechMinidrone.pyna ˇr´adku 246 a v souboruDroneVisionna ˇr´adku 95.

V´ypis k´odu 6.2 P˚uvodn´ı cesta k uloˇzen´ı sn´ımk˚u f u l l P a t h = i n s p e c t . g e t f i l e ( M a m b o )

Hodnota t´eto promnˇen´e je tˇreba zmˇenit na n´asleduj´ıc´ı hodnotu.

V´ypis k´odu 6.3 Nov´a cesta k uloˇzen´ı sn´ımk˚u f u l l P a t h = os . g e t c w d ()

Tato zmˇena umoˇzn´ı ukl´ad´an´ı staˇzen´ych obr´azk˚u do podsloˇzky images v aktu´aln´ı pracovn´ı cestˇe na m´ısto vytvoˇren´ı t´eto podsloˇzky v cestˇe knihovny Pyparrot, tud´ıˇz spuˇstˇen´ı aplikace nebude vyˇzadovat pr´ava superuˇzivatele/administr´atora pro z´apis obr´azk˚u.

Dalˇs´ı nutn´a zmˇena pro spr´avn´e fungov´an´ı aplikace je tˇreba zmˇenit frekvenci vol´an´ı callback funkce specifikovan´e uˇzivatelem ke zpracov´an´ı sn´ımk˚u z FPV kamery. Na ˇr´adku 208 ve funkci _user_callbackje nutno zmˇenit dobu usp´an´ı na ˇcas odpov´ıdaj´ıc´ı rychlosti zpracov´an´ı obrazu.

V pˇr´ıpadˇe t´eto aplikace je doba k usp´an´ı nastaven´a na 1 sekundu.

29

(40)

30 Kapitola 6. Specifikace aplikace

V´ypis k´odu 6.4 Zmˇena frekvence vol´an´ı callback funkce t i m e . s l e e p ( 1 . 0 / ( 3 . 0 * s e l f . fps ))

N´aslednˇe je tˇreba v metodˇeupdatetˇr´ıdyMinidroneSensorsdodat ukl´ad´an´ı dat ze senzor˚u do vlastn´ıch promˇenn´ych. Naˇse aplikace k tˇemto dat˚um pˇristupuje rovnou jako k samostatn´ym ˇclensk´ym promˇenn´ym nikoliv pˇres seznam dat ze senzor˚u, sensor_dict, jeˇz sb´ır´a ostatn´ı data jeˇz nebyli specifikov´ana.

V´ypis k´odu 6.5 Zmˇena frekvence vol´an´ı callback funkce

if ( n a m e == " D r o n e P o s i t i o n _ p o s x "):

s e l f . p o s i t i o n _ x = v a l u e

e l i f ( n a m e == " D r o n e P o s i t i o n _ p o s y "):

s e l f . p o s i t i o n _ y = v a l u e

e l i f ( n a m e == " D r o n e P o s i t i o n _ p o s z "):

s e l f . p o s i t i o n _ z = v a l u e

e l i f ( n a m e == " D r o n e P o s i t i o n _ t s "):

s e l f . p o s i t i o n _ t s = v a l u e

e l i f ( n a m e == " D r o n e P o s i t i o n _ p s i "):

s e l f . p o s i t i o n _ p s i = v a l u e

6.2 Aplikace

Aplikace je rozdˇelena na dvˇe hlavn´ı ˇc´asti: ˇc´ast aplikace bˇeˇz´ıc´ı na serveru a ˇc´ast bˇeˇz´ıc´ı na poˇc´ıtaˇci.

ˇC´ast aplikace nasazen´a na serveru vyˇzaduje soubory uloˇzen´e ve sloˇzce server a spouˇst´ı se pomoc´ı souborytcp_client.py.

Druh´a ˇc´ast aplikace bˇeˇz´ıc´ı na serveru je uloˇzena ve sloˇzcelocala je spuˇstˇena pomoc´ı souboru main.py.

6.3 Testov´an´ı a funkˇcnost aplikace

Aplikace jako celek bohuˇzel nebyla otestov´ana kv˚uli probl´em˚um t´ykaj´ıc´ıch se modelu dronu.

Dron zas´ıl´a mnoho dat o sobˇe a o sv´em okol´ı. Dva typy informac´ı n´am mohou pomoci s urˇcen´ım jeho polohy v prostoru a to jsou: data o poloze a ´udaje o rychlosti dronu. ´Udaje o rychlosti jsou dronem aktualizov´any s frekvenc´ı 1 Hz a jsou vraceny v kontextu aktu´aln´ı rotace dronu. Kv˚uli pomal´emu obnovov´an´ı dat nen´ı moˇzn´e tyto informace vyuˇz´ıt k v´ypoˇctu pozice pˇri dlouhodob´em letu. Probl´emem na st´av´a pˇri zrychlov´an´ı a zpomalov´an´ı dronu. Rychlost z tohoto okamˇziku je mnohem vyˇsˇs´ı neˇz rychlost, kterou dron let´ı zbytek letu a zan´aˇsej´ı velikou nepˇresnost do v´ypoˇctu pozice. Data o pozici dronu jsou tak´e vracena s vysokou nepˇresnost´ı.

Bez relativnˇe spolehliv´ych informac´ıch o pozici dronu nen´ı moˇzn´e implementovat syst´em pro navigaci dronu, jelikoˇz nelze implementovat spolehliv´y pr˚uchod zadanou oblast´ı a ani nen´ı moˇzn´e spolehlivˇe dopoˇc´ıtat jednotlivˇe detekovan´e pozemn´ı c´ıle.

Odkazy

Související dokumenty

Druh´ a kapitola obsahuje pˇrehled vyuˇ zit´ı L-syst´ em˚ u a tˇret´ı kapitola je vˇ enov´ ana programu, kter´ y je souˇ c´ ast´ı bakal´ aˇrsk´ e pr´ ace, jeho popisu a

Diplomov´a pr´ace, oproti bˇeˇzn´y zvyklostem, neobsahuje typickou reˇserˇsn´ı ˇc´ast, kde by se diplomant mohl zab´yvat reˇserˇs´ı r˚uzn´ych metod dˇelen´ı

Na z´akladˇe anal´yzy implementuje v druh´e ˇc´asti pr´ace ˇreˇsen´ı detekce a sledov´an´ı vozidel pomoc´ı modelu DETR, kter´y je absolutn´ı novinka mezi modely pro

Teˇ ziˇstˇ em bakal´ aˇrsk´ e pr´ ace je implementace origin´ aln´ı aplikace pro tvorbu animac´ı, jej´ıˇ z hlavn´ı konkurenˇ cn´ı v´ yhodou je podpora pro automatick´

Pˇredloˇ zen´ a bakal´ aˇrsk´ a pr´ ace se zab´ yv´ a odhadov´ an´ım geometrie dvou kamer z korespondenc´ı, za situac´ı kdy se vyskytuje v´ yznamn´ e mnoˇ zstv´ı

Pˇredmˇ etem t´ eto bakal´ aˇrsk´ e pr´ ace je odvozen´ı diferenci´ aln´ıch rovnic obecn´ e teorie relativity vhodn´ ych pro jejich numerick´ e ˇreˇsen´ı.

Jedn´ım ze z´ akladn´ıch c´ıl˚ u t´ eto pr´ ace bylo pr´ avˇ e vytvoˇren´ı hledaˇ cky dis- ponuj´ıc´ı displejem, na kter´ em by bylo moˇ zn´ e zobrazit vˇ etˇs´ı ˇ

C´ılem t´ eto pr´ ace bylo nal´ ezt moˇ znost, jak zprovoznit nadˇ razen´ y ˇ r´ıdic´ı syst´ em, kter´ y uˇ zivateli umoˇ zn´ı programov´ an´ı robotu v relativn´ım