You are on page 1of 71

EESTI INFOTEHNOLOOGIA KOLLED

Erik Kaju
REAALAJA VIDEOTTLUSE JUDLUSE PARENDAMINE EESTI INFOTEHNOLOOGIA KOLLEDI ROBOOTIKAKLUBI BOTMASTER PLATVORMI BAASIL

Diplomit

INFOTEHNOLOOGIA SSTEEMIDE ARENDAMISE PPEKAVA

Juhendaja: Valdur Kaldvee

Tallinn/Stockholm 2013

AUTORIDEKLARATSIOON

Deklareerin, et kesolev diplomit, mis on minu iseseisva t tulemus, on esitatud Eesti Infotehnoloogia Kolledile lpudiplomi taotlemiseks Infossteemide arendamise erialal. Diplomit alusel ei ole varem eriala lpudiplomit taotletud.

Autor E. Kaju .............................. (allkiri ja kuupev)

T vastab kehtivatele nuetele Juhendaja V. Kaldvee ................................ (allkiri ja kuupev)

Sisukord
Lhendite ja mistete loetelu.....................................................................................................6 Sissejuhatus..............................................................................................................................10 1 Anals................................................................................................................................13 1.1 Botmaster platvormi tehniline spetsifikatsioon............................................................13 1.1.1 Tarkvara................................................................................................................13 1.1.2 Riistvara................................................................................................................13 1.2 Videottlus ning selle alamprotsessid........................................................................14 1.2.1 Botmasteri videottluses kasutatavad vrviruumid............................................14 1.2.1.1 YUV..............................................................................................................14 1.2.1.2 RGB(BGR)...................................................................................................15 1.2.1.3 HSL...............................................................................................................16 1.2.1.4 hekanaliline binaarne pilt...........................................................................16 1.2.2 Videottluse elutskkel.......................................................................................17 1.2.3 Initsialiseerimine..................................................................................................18 1.2.3.1 HSL vrviruumi otsingutabeli genereerimine ning pikslite konverteerimine RGB ja HSL vrviruumide vahel...............................................................................18 1.2.3.2 Videohaaramise struktuuri sidumine kaameraga .........................................19 1.2.3.3 Videohaaramise struktuuri seadistamine.......................................................20 1.2.3.3.1 V4L seadistuste rakendamine................................................................20 1.2.3.4 Andmeladu masinngemise saaduste hoiustamiseks....................................21 1.2.4 Kaadri ttlemine.................................................................................................21 1.2.4.1 Kaadri hankimine..........................................................................................21 1.2.4.2 ROI (Region of Interest) mramine............................................................22 1.2.4.3 Videottlusel kasutatavad pildiobjektid ja nende vrtustamine ..............22 1.2.4.3.1 IplImage iseloom...................................................................................23 1.2.4.3.2 Img........................................................................................................24 3

1.2.4.3.3 Work......................................................................................................24 1.2.4.3.4 Binary....................................................................................................24 1.2.4.4 Gaussi filtri rakendamine..............................................................................24 1.2.4.5 Objektide tuvastamine..................................................................................26 1.2.4.5.1 Golfipalli nide.....................................................................................26 1.2.4.5.2 Objektide tuvastamise protsessi kirjeldavad joonised..........................27 2 Praktiline teostus..................................................................................................................30 2.1 Videottluse judluse mtmise vahendi ning metoodika vljattamine ...............30 2.1.1 Nuded.................................................................................................................30 2.1.2 Ajatemplite salvestamine......................................................................................31 2.1.3 Lahenduse disain..................................................................................................32 2.1.4 Triista ning selle rakendusliidese kasutamine..................................................33 2.2 Mtmise teostamine esialgse platvormi videottluse komponendi judlusele........35 2.2.1 Tulemused.............................................................................................................36 2.2.2 Hinnang tulemustele ning prioriteetide seadmine................................................40 2.3 Platvormi videottluse judluse parenduse vimalike metoodikate ja lhenemiste anals.................................................................................................................................41 2.3.1 ldine ..................................................................................................................41 2.3.2 Hpotees - Kaadri hankimine...............................................................................42 2.3.3 Hpotees - Objektide tuvastus..............................................................................43 2.3.4 Hpotees - Kujutise kuvamine.............................................................................43 2.4 Lahenduste realiseerimine............................................................................................43 2.4.1 Mitmelimeliste lahenduste realiseerimise vimalused Botmaster platvormis. . .43 2.4.2 Kaadri hankimine mitmelimeline lahendus.....................................................46 2.4.2.1 Eesmrk........................................................................................................46 2.4.2.2 Kontseptuaalne lahendus..............................................................................47 2.4.2.2.1 levaade................................................................................................48 2.4.2.2.2 Takistused..............................................................................................48 2.4.2.3 Teostus Realiseeritud lahendus..................................................................49 2.4.2.3.1 Phimte ning iseloomustus.................................................................50 2.4.2.3.2 Lahenduse tehnilised tunnusjooned......................................................51 2.4.2.3.3 Lahenduse vljattamine, silumine ning testimine.............................51 2.4.2.3.4 Lahendusega kaasnevad krvalmjud ssteemile.................................52 2.4.2.3.5 Anals platvormi parendatud videottluse komponendi judlusele mitmelimeline lahendus......................................................................................53 2.4.3 Kujutise kuvamine ssteemi paremaks judluseks optimeeritud lahendus ......56 2.4.3.1.1 Anals platvormi parendatud videottluse komponendi judlusele optimeeritud kuvamise lahendus (+mitmelimeline lah.)....................................57 3 Edaspidised vljavaated.......................................................................................................60 3.1 Objektide tuvastus - binaarpiltide vrtustamise optimeeritud lahendus.....................61 3.2 Objektide tuvastus mitmelimeline lahendus...........................................................63 4

4 Lput tulemus..................................................................................................................64 5 Kokkuvte............................................................................................................................65 6 Enhancement of real-time video processing performance based on EIK robotics club "Botmaster" platform...............................................................................................................67 7 Kasutatud allikad.................................................................................................................70 8 Lisad.....................................................................................................................................72

Lhendite ja mistete loetelu


Ajatempel Amdahli seadus Smbolite jada (timestamp), mis thistab kuupeva ja/vi aega, mis on seotud mingi kindla sndmusega. [1] (Amdahl's Law) Matemaatiline arvutusviis, mille abil on vimalik vlja selgitada maksimaalne eeldatav programmi judluse tus, kui tiustatakse ainult teatud osa ssteemist. Rakendusliides, programmiliides, API-liides. Arvuti operatsioonissteemiga vi rakendusprogrammiga mratud reeglistik, mille alusel rakendusprogramm kasutab operatsioonissteemi vi teise rakendusprogrammi teenuseid.[2] Atmel firma poolt toodetav mikrokontrollerite seeria .[1] Multimeedia konteineri formaat. Avi fail vib sisaldada nii audio kui video andmeid ning vimaldab snkroonset audio+video taasesitlust. vt. Kahendkodeeritud kujutis EIK Robootikaklubi roboti pildittlemise- ning juhtimisplatvorm. Komaeraldusega vrtused. Failivorming, kus andmebaasikirjed on ksteisest eraldatud komadega. [2] Eesti Infotehnoloogia Kolled. 2002 aastal asutatud EIK lipilaste organisatsioon, mille ks peamisi eesmrke on osaleda Robotex vistlustel ja abistada vistluste korraldamisel. [1]

API

ATmega (Atmel megaAVR) AVI (Audi Video Interleaved) Binaarpilt Botmaster CSV EIK EIK Robootikaklubi

FireWire (IEEE1394) Jadasiini phimttel ttav kiire isokroonne andmeside liides, mis vimaldab andmete edastamist reaalajas. [1] 6

Fps Gaussi filter

Tele- vi videopildi kaadrisageduse mthik - kaadrit sekundis. [2] Gaussi filter on ribapsfilter, millel on kellukakujuline sagedustunnusjoon. Gaussi filtri rakendamisel digitaalsele kujutisele htlustatakse lheduses olevate pikslite vrtused. GNU kompilaator, millega on vimalik kompileerida C, C++, Objective-C, Fortran, Java, Ada, Go ja mitmetes teistes programmeerimiskeeltes loodud programme. [1] 1984. aastal algatatud projekt, mille eesmrgiks oli luua UNIXlaadne operatsioonissteem, mis sisaldab ainult vaba tarkvara (GNU ei ole UNIX). [1] General Public License - on enim levinud vaba tarkvara litsents, mis loodi GNU projekti jaoks. [1] Vrviruum, kus vrvid on defineeritud vrvitooni, kllastatuse ja heleduse jrgi. [1] Intel-i poolt toodetud madala voolutarbega protsessorite tootemargi nimi. Intel Atom protsessorid on kasutuses vikest mtu mobiilsetes nutiseadmetes, mis vajavad krget arvutusvimsust. OpenCV eelkija - Intel-i arhitektuuri jaoks optimeeritud C teek, mis vimaldas teostada tpilisi pildittluse operatsioone. OpenCV C teegi programmiliides on jtkuvalt osaliselt identne IIPL-iga. [3] Objekti vi mooduli initsialiseerimine teostatakse alles siis, kui seda vajatakse esimest korda. Esineb ka lazy initialization nime all. Igale USB jadasiini vi teise arvuti porti hendatud kaamerale omistatakse OpenCV teegisisene jrjekorranumber, mille abil mratakse, millisest kaamerast pilti/videovoogu lugeda. Kujutise kahendkodeerimine (image binarization) on masinngemise protsess, mille abil kujutise pildimaatriksi andmed kahandatakse kahe vimaliku vrtuseni 1 ja 0. (must ja valge) [4] Kosteaeg (latency) on aeg, mis kulub info judmiseks sisendist vljundisse (andurite lugemise, planeerimine). [1] PAL-laadsete televisioonistandardite vrvisignaali kodeerimismudelitele iseloomulik kanal, mis mrab kujutise vrvi. PAL-laadsete televisioonistandardite vrvisignaali kodeerimismudelitele iseloomulik kanal, mis mrab kujutise heleduse. Vt. Otsingutabel Utiliit, mis tidab Makefile failis kirjeldatud reeglite alusel erinavaid tegevusi. Kasutatakse tarkvara kompileerimise korralduste 7

Gcc

GNU projekt

GPL (litsents) HSL Intel Atom

Intel Image Processing Library (IIPL) Just-in-time initsialiseerimine Kaamera indeks

Kahendkodeeritud kujutis Kosteaeg Krominantsus Luminents

LUT (Lookup-table) Make

automatiseerimiseks ja lihtsustamiseks. [1] Makefile Masinngemine Spetsiaalse formaadiga fail, mis koos make utiliidiga aitab kompileerida ja hallata projekte. [1] MV(Machine vision) - krgtehnoloogia, mille eesmrgiks on masinale vahendada analoogselt elusolendi silmaga vliskeskkonna objekte, analsida nende objektide olemust ja kujundada masina otstarbekat tegevust nende objektide suhtes. Laialdane tarkvaravahendite kogum, mis on meldud masinngemise, kujutiste analsi ja meditsiinilise pildittluse tarkvara arendamiseks. Teegid toetavad C, C++, C# ja VisualBasic programmeerimiskeeli. [5]

Matrox Imaging Library (MIL)

Monotoonne loendur Taimerites ning ajatembeldamiseks kasutatav loendur, mille nit kasvab vaid monotoonselt ning ei vhene iialgi. Loenduri vrtust ei saa ka muuta. [6] OpenCV Otsingutabel Open Source Computer Vision (OpenCV) on vabatarkvaraline reaalajas videottlemiseks meldud teek. (lookup-table, LUT) on andmete tabel arvutiteaduses, kuhu on salvestatud mingi funktsiooni vrtused, et asendada jooksvalt nende arvutamine [4]. Linuxi driver, mis toetab PS3 Eye USB kaamerat. Nimetus tuleneb Omnivision OV534 USB-siinikiibist, mida kasutavad paljud veebikaamerad. Faasivaheldusega liin (Phase Alternation Line) - on ks kolmest maailmas enamlevinud televisoonistandardist. [2] Tuletis snadest "picture" ja "element" - vikseim digitaalse kujutise element (punkt). Pikslitele iseloomulik vimalike vrtuste amplituud. Niteks 8bitine pikslisgavus thendab, et pikslil vib olla 2^8=256 erinevat vrtust. Kujutise andmete (pikslite vrtused) esitamine andmemaatriksina.

Ov534

PAL piksel(px) Pikslisgavus

Pildimaatriks

PlayStation Eye (PS3 Sony Playstation 3 mngukonsoolile loodud veebikaamera. [1] Eye) POSIX Portable Operating System Interface Unix operatsioonissteemi liides, mis kirjeldab ra, programmide ja operatsioonissteemide omavahelise suhtluse. [1] Programm, mis automatiseerib Makefile loomise. [1] Platvormilene tarkvaraarenduse raamistik, mis phineb C++ programmeerimiskeelel. Avatud lhtekoodiga reaalaja videov ttlemise platvorm. 8

Qmake Qt Qt-OpenCV-

Multithreaded Raalngemine RGB (BRG) Ring aquisition

Realiseeritud projekt phineb Qt4, ja OpenCV C++ teekidel. Vt. Masinngemine Vrviruum, kus kik vrvid tulevad kolme vrvikanali (punane, roheline, sinine) liitmisel. [1] Masinngemises kasutatav tarkvara disainimuster, mille kohaselt ldjuhul on kasutuses mitu vahepuhvrit kaadrite hoiustamiseks ning pidev tskliline kaadrite hankimine kaamerast on eraldatud lejnud ssteemist. Alates 2001. aastast toimuv rahvusvaheline robotite vistlus, mida korraldavad Tallinna Tehnikalikool, Tartu likool ning Eesti Infotehnoloogia Kolled. ROI mrab, millist ala video kaadri peal tdeldakse. Mluga jadavrvid (Sequential Couleur Avec Memoire) vrvitelevisiooni standard Paralleelprogrammeerimises nimetatakse semaforiks kaitstud muutujat (abstraktandmetpi), mida kasutatakse multiprotsessorkeskkonnas juurdepsu piiramiseks jaosmlule. [2] Tarkvara disainimuster, mille kohaselt klassi kuuluva(te) objekti(de) arv on rangelt piiratud hele ning on ainult ks globaalne ligipsupunkt. [7] Apache Subversion vaba platvormilene versioonihaldustarkvara. Vt. Masinngemine 1969. aastal loodud hargttlusega, mitut kasutajat toetav, raudvarast sltumatu operatsioonissteem. Universaalne jrjestiksiin (Universal Serial Bus) on levinud arvuti vlissiini standard. Video salvestamise programmiliides Linux keskkonnale. Toetab laia valikut riistvaralisi seadmeid. Abstraktne matemaatiline mudel, mis kirjeldab vrvide esitamist aritmeetiliste korteeide abil. Enamasti on kolm vi neli vrtust vi vrvikomponenti. Vorming video- ja audioinformatsiooni salvestamiseks. Sellele vormingule vastavad failid on varustatud laiendiga *.AVI. [2] Televisioonis PAL-ssteemi juures kasutatav video vrvisignaali kodeerimismudel (vrvusruum). Y on heledus, U ja V on vrvsussignaalid. [2]

Robotex

ROI SECAM Semafor

Singleton

SVN Tehisngemine UNIX USB V4L, V4L2 (Video For Linux) Vrviruum (vrvimudel) Video for Windows (VFW) YUV

Sissejuhatus
Eesti Infotehnoloogia Kolledi Robootikaklubi (EIK Robootikaklubi) on Eesti Infotehnoloogia Kolledi (EIK) lipilaste organisatsioon, mis tegutseb aastast 2002 [8]. Klubi missiooniks on robootika ning teaduse populariseerimine. Philine fookus on robotite ehitamisel. EIK Robootikaklubi osaleb aktiivselt rahvusvahelistel robotivistlustel. Traditsiooniliselt on ks nendest iga-aastaselt Eestis toimuv rahvusvaheline roboti vistlus Robotex [9]. Robotite ehitus ning vistluseks ettevalmistamine on tudengite jaoks mitmeklgselt arendav tegevus, sest protsessi kigus pivad lipilased oma matemaatika-, fsika-, mehhaanika-, programmeerimise- ja elektroonikaalaseid teoreetilisi teadmisi praktikas rakendama. Robotite ehitamine on meeskondlik tegevus, kus efektiivse t eelduseks on tihe koost ning teadmiste jagamine. Meeskonna liikmetel kujunevad vlja kindlad rollid, spetsialiseerumine ning kohustused. EIK Robootikaklubi on aastate jooksul arendanud ainulaadset roboti juhtimisplatvormi Botmaster [10], mis on kasutusel enamusel EIK Robootikaklubi krgema taseme robotitel. Platvorm on vga paindlik ning vimaldab juhtida ksteisest tielikult erineva mehaanika ja funktsionaalsusega roboteid. Platvormi tuum jb samaks, kuid juhtloogika kohandamise teel on vimalik lahendada erinevaid lesandeid. Botmasteri platvormil phinevad robotid on

10

titnud erilaadseid eesmrke nagu niteks toa koristamine, linnamaastikul navigeerimine vi vrkpalli ja jalgpalli mngimine [8]. EIK Robootikaklubi Botmaster juhtimisplatvormiga robotid on saavutanud silmapaistvaid tulemusi rahvusvahelistel robotivistlusel ning on lbi aegade olnud favoriidid roboti vistlusel Robotex [8]. Konkurentide tase on vga krge ning platvormi edu jtkamine eeldab arendajate phendumust, jtkuvat tiustamist ning edasiarendust. Prioriteetsemad eesmrgid on teha platvorm kiiremaks ja tkindlamaks. Tnaseks on saavutatud olukord, kus robotites kasutatavad mehaanilised komponendid ning elektroonika vimaldaksid lesandeid lahendada oluliselt kiiremini. Samas Botmaster platvormi masinngemise komponent on olulisel mral roboti summaarset judlust piirav tegur. Kesolevas diplomits lahendatav probleem Videottlus on arvutusmahukas ning ajakulukas protsess ning mobiilsete robotite arvutusvimsus on limiteeritud. On tarvis leida lahendusi, mis vimaldavad olemasoleva arvutusvimsuse juures saavutada krgemat efektiivsust video ttlemisel. Robotite liikumiskiirus on piiratud Botmaster platvormi masinngemise komponendi kosteaja poolt. Botmasteri videottluse komponent on kriitilise thtsusega ning reaalajas tdeldav videovoog on roboti puhul thtsaimaks sisendiks mbritseva keskkonna kohta. Robot vtab kaamerast pildi, ttleb seda ning analsib tuvastatud objekte. Juhtloogika tasandil vetakse analsi tulemuste phjal vastu otsuseid, kuidas konkreetses situatsioonis kituda. he videokaadri ttlemiseks kuluva aja vhendamine vimaldab saavutada mrgatavalt kiiremat roboti reageerimisvimet, suuremaid sidukiiruseid, sujuvamaid ning optimaalseid liigutusi. Kesoleva diplomit eesmrgid Analsitakse ning realiseeritakse meetodid "Botmaster" platvormi masinngemise komponendi judluse tstmiseks.

11

Autori eesmrgiks on viia lbi phjalik uuring Botmasteri videotuvastuse komponendile ning pakkuda vlja vimalusi ssteemi kosteaja vhendamiseks. Kaalutleda erinevaid realiseeritavaid lahendusi ning valida neist vlja sobivaimad. Kavas on realiseerida valitud lahendus ja seada edasised plaanid platvormi masinngemise komponendi arenduseks. Kesoleva diplomit tulemus on suunatud eelkige Botmaster platvormi kasutajatele ehk roboteid arendatavatele EIK Robootikaklubi liikmetele, kes osalevad robootika vistlustel. Soovi korral saavad lput tulemusi ra kasutada ka teised, kes tegelevad reaalaja videotuvastuse/ttluse efektiivsusega ning analoogsete kosteaegade vhendamisega. Botmaster tarkvara on traditsiooniliselt olnud avatud lhtekoodiga ning EIK Robootikaklubi jagab soovijatele programmide algtekste. Diplomits sisalduvad peatkid Sissejuhatusele jrgnevas analsi osas annab autor levaate masinngemise ja reaalaja videottluse ldistest phimtetest. Tehakse levaade EIK Robootikaklubi Botmaster platvormi lesehitusest, tehnilistest iserasustest ning funktsionaalsusest. Keskendutakse platvormi videottluse komponendile. Lugejal tekib ettekujutus kogu tehisngemise protsessist alates geomeetrilisest optikast ning kujutise kandumisest kaamera maatrikssensorile ja lpetades digitaalselt pildilt fsiliste objektide tuvastamiseks kasutatavate algoritmidega raalngemise rakenduses. Autor analsib potentsiaalseid lahendusi eelnevalt pstitatud probleemile. Uurib analoogseid lahendusi mujalt maailmast. Autor annab hinnangud ning prioriseerib erinevad vimalikud lahendused ja otsustab sobivaimate kasuks. Realiseerimise osa kajastab diplomit praktilist poolt. Autor tutvustab Botmaster platvormi masinngemise mooduli judlustestimiseks loodud metoodikat, annab levaate arendusprotsessist ning vtab kokku tehtud t. Samuti pannakse paika tulevikuplaanid Botmaster platvormi videottluse komponendi edasiseks arendamiseks. Kokkuvttes antakse levaade tehtud analsist, tst ja tulemustest.

12

1 Anals
1.1 Botmaster platvormi tehniline spetsifikatsioon 1.1.1

Tarkvara
Platvormi tarkvara arendamiseks kasutatavad programmeerimiskeeled: C++, C Vlised teegid: OpenCV 2.0 C, Qt 4 C++ Haldamine: svn, make, qmake ja gcc OS: UNIXi-laadsed operatsioonissteemid (Linux Ubuntu 10.04)

1.1.2

Riistvara
Platvormi tarkvara hilduvus riistvaraga: Juhtarvuti: moodsate arvutite seas piirangud puuduvad (Intel Atom D525) Mikrokontroller: paljud 8-bitised mikrokontrollerid. (ATmega seeria kontrollerid) Kaamera: kik OpenCV poolt toetatud (Playstation Eye USB 2.0 + ov534 driver) Titurid: lai valik servo- ning alalisvoolumootoreid ning muud elektrooniliselt juhitavad komponendid. Andurid: lai valik analoog- ning digitaalandureid

NB! Sulgudes on mrgitud antud diplomit arendamisel ning testimisel kasutatud komponendid. Edaspidi meldakse Botmaster platvormi all vaid tarkvara.

13

1.2 Videottlus ning selle alamprotsessid


Ssteemi parendamiseks on kigepealt vaja anda levaade tarkvara komponentidest ja lesehitusest. Antud peatkk annab lugejale ettekujutuse tpilistest phimtetest, mida kasutatakse tehisngemise funktsionaalsuste loomisel.

1.2.1
1.2.1.1 YUV

Botmasteri videottluses kasutatavad vrviruumid

Sony Playstation Eye USB-kaamera vljastab videovoogu YUV vrviruumis [11]. Selle formaadi ajalugu ulatub aegadesse, mil sndis vrviline televisioon. Algne YUV kodeering oli loodud eesmrgiga olla hilduv nii mustvalgete teleritega kui ka vrviliste analoogidega. YUV mudeli esimene kanal Y, mida nimetatakse luminentsiks sisaldab endas infot pildipunktide heleduse kohta [13]. Minimaalne vrtus on must ja maksimaalne valge. Eraldades videovoost ainult selle kanali on tulemuseks mustvalge kujutis. Kaks lejnud kanalit UV (krominantsus) sisaldavad infot pildipunktide vrvitooni kohta [14].

Joonis 1: YUV vrviruumi illustreeriv pilt. 1 - YUV/RGB kujutis 2 - Y kanal (luminents) 3,4 UV kanalid (krominantsus) [12] YUV on iseloomulik PAL ja SECAM analoogtelevisiooni standarditele ning laialdaselt kasutatav ka digitaalsetes ssteemides. YUV vrvimudeliga kujutise kodeerimine vi dekodeerimine RGB vrviruumi on suhteliselt lihtne ja selle tttu on mlemad standardid tnapeval laialdaselt kasutusel. Botmasteri tasandil toimub YUV-ist RGB-sse teisendamine OpenCV teegi poolt automaatselt [11]. Konversioon RGB-sse toimub kohe peale kaadri kaamerast lugemist. Botmasteri algoritm seda protsessi ise ei kontrolli. Koheselt saadakse ktte RGB vrviruumis pilt, kuid on teada, et kaamera ning OpenCV teegi madalamates kihtides toimub automaatne YUV-RGB konversioon. Vajame edaspidiseks opereerimiseks RGB pilti. 14

1.2.1.2 RGB(BGR)

RGB on tnapeval tuntuim ning enim kasutatav vrviruum. Selle kasutamine on levinud arvutimonitorides, projektorites, televiisorites ning enamuses teistes seadmetes, mis kuvavad inimsilmaga nhtavat pildikujutist. RGB vrviruum thendab, et iga vrvilist pildipunkti (pikslit) kirjeldatakse kolme vrvikanali abil punane (Red), roheline (Green) ja sinine (Blue) [14]. Iga inimsilmaga eristatavat vrvi kirjeldatakse nende kolme vrvi kombinatsiooniga. Seetttu on RGB pilt silmale nhtav vrvilisena.

Joonis 2: Lihtne illustratsioon sellest, kuidas kolme vrvi abil (Punane, Roheline, Sinine) saadakse muid vrvispektri toone [15] Olenevalt vrvisgavusest on igal vrvikanalil kindel arv astet, mis kirjeldavad vastava vrvi intensiivsust. Botmasteri platvormi puhul saadakse RGB vrviruumis pilt OpenCV masinngemise teegi vahendusel pildi laadimisel kaamerast. Botmasteri puhul on kasutatava RGB vrviruumi vrvisgavus kaheksa bitine, ehk he piksli hele vrvikanalile vastab 256 (0-255) vimalikku tisarvu (2^8=256) [14]. Kolmekanalilises ja kaheksa bitise pikslisgavusega RGB vrviruumis on 256256256=16777216 erinevat vrvitooni [14].

15

1.2.1.3 HSL

HSL vrviruumi peetakse inimmistusele kige enam arusaadavamaks. Levinud standardi jrgi mrab esimene kanal H (Hue) vrvitooni. Toon mratakse vahemikus 0-359 [17]. Teine kanal S (Saturation) mrab vrvi intensiivsuse vahemikus 0-100% - 0 thendab mustvalget varjundit ning 100 kige eredamat [17]. Kolmas kanal L (Lightness) mrab heledust ning samuti vahemikus 0-100% - 0 thendab tiesti musta vrvi ning 100 valget [17]. Botmasteris on HSLi puhul kasutusel 8-bitine Joonis 3: HSL vrviruumi iseloomustav vrvisgavus. See thendab, et iga piksli H, S ning joonis [16] L vrtusele vastab number vahemikus 0-255 [17].
1.2.1.4 hekanaliline binaarne pilt

Objektide tuvastamisel on kasutusel ka lihtne hekanaliline vrviruum. Tarkvaras kasutatava OpenCV teegi iserasustest tulenevalt ning lejnud vrviruumidega (RGB ja HSL) hildumise eesmrgil on ka siin pikslisgavuseks 8 bitti, kuid tegelikkuses on programmi ts kasutatavad pikslite vrtused vaid vahemikus 0-1. Botmasteris kasutatav binaarne pilt on kahendkodeeritud representatsioon HSL vrviruumis olevast kujutisest (image Joonis 4: Illustreeriv binarization) [4]. Tegemist on eriotstarbelise vrviruumiga, lihtsustatud joonis binaarsest vrviruumist. Iga tabeli ruut mille abil on mugav mrkida tuvastatud alasid vi huvi illustreerib hte pikslit. pakkuvaid regioone [4]. Mrgitud aladel on pikslite vrtuseks hed, muudel aladel on nullid.

16

1.2.2

Videottluse elutskkel

Joonis 5: Botmasteri kivitamise alguses teostatakse mitmed hekordsed operatsioonid

Joonis 6: Iga kaadri kohta teostatakse rida korduvaid operatsioone, seejrel kuvatakse tulemus. 17

1.2.3
1.2.3.1 HSL

Initsialiseerimine
vrviruumi otsingutabeli genereerimine ning pikslite

konverteerimine RGB ja HSL vrviruumide vahel

Botmasteri objektide tuvastamiseks kasutatakse kujutist HSL vrviruumis. Vrvitooni vrtuse, vrvi erksuse ning heleduse phjal on kige mugavam tuvastada lihtsamaid erivrvilisi figuure. Algne RGB vrvimudeliga pilt tuleb konverteerida HSL-i ning seda vimaldab OpenCV teegi funktsionaalsus. Funktsioon cvCvtColor toetab konverteerimist mitmete erinevate vrviruumide vahel [11]. Judluse seisukohast on paraku oluliseks probleemiks antud protseduuri suur arvutusmahukus. RGB -> HSL konverteerimisel Botmasteris kasutatavate 8-bitiste pikslisgavuste puhul R, G ja B vrtused konverteeritakse ujukoma kujule ning skaleeritakse vahemikku 0 kuni 1. Konverteerimisel teostatavad arvutused [17]:

Juhul, kui ,

, siis .

. Vljundvrtuste kuju:

Seejrel vrtused konverteeritakse 8-bitisele pikslisgavusele iseloomulikule kujule: (vrtuste vahemik 0-255) OpenCV vahendite kasutamine ei ole kindlasti ainus vimalik viis. Botmasteri loojad on katsetanud ka konversiooni, kus arvutused teostati tisarvudega ning judlus oli mrgatavalt parem.

18

Samas moodsate protsessorite jaoks ei ole ra kirjeldatud ujukomaarvutus sugugi suur vljakutse. Judluse kadu on seotud sellega, et niteks digitaalse pildi puhul resolutsiooniga 640x480 pikslit, tuleb BGR->HSL konverteerimisel sooritada arvutustehted iga piksli kohta eraldi, ehk 307 200 korda jrjest. Judluse tstmiseks kasutatakse Botmasteris spetsiaalset otsingutabelit [4]. Otsingutabel (lookup-table, edaspidi LUT) on andmete tabel arvutiteaduses, kuhu on salvestatud mingi funktsiooni vrtused, et asendada jooksvalt nende arvutamine [4]. Antud kontekstis on tegu tabeliga, mis sisaldab samale vrvitoonile vastavate BGR ja HSL vrtuste kombinatsioone. Programmi tajas on otsingutabeli kasutamisest tulenev sstmine vga suur, sest mlust andmete lugemine on kordades kiirem, kui seda on BGR->HSL arvutustehe. Otsingutabeli vrtuste paarid arvutatakse programmi initsialiseerimise hetkel, mistttu on programmi kivitamine mnevrra aeglasem. Tabel salvestatakse operatiivmllu ning hoitakse seal kuni programmi t lpuni. Tabeli maht on ligikaudu 50 megabaiti. Otsingutabelis on 16777216 kombinatsiooni, ehk kaetud on absoluutselt kik vimalikud 8bit pikslisgavusega RGB toonid. Seega RGB tabelist.
1.2.3.2 Videohaaramise struktuuri sidumine kaameraga

pildiobjekti konverteerimisel HSL-i, Botmaster programmi t kigus

arvutustehteid ei teostata, vaid vetakse soovitud HSL piksli vrtus suurest eelarvutatud

OpenCV C teegi videohaaramise (video capture) funktsioonid kasutavad struktuuri CvCapture, millel ei ole avalikku liidest ning on kasutusel OpenCV funktsioonides parameetrina [11]. Defineeritud CvCapture struktuur vrtustatakse OpenCV funktsiooniga cvCaptureFromCAM [18], mis nuab programmeerijalt teadmist, mis indeksiga kaamerat tuleb kasutada. Juhul, kui arvutiga on hendatud ainult ks kaamera, siis tavaprases olukorras on kaamera indeksiks 0. CV_CAP_ANY[11] vi lihtsalt -1 vrtusega atribuut vimaldab valida esimese ettejuhtuva kaamera indeksi. CvCaptureFromCAM funktsioon eraldab mlu ning initsialiseerib CvCapture struktuuri kindla kaamera videovoo lugemiseks. OpenCV C teek toetab nelja erinevat kaameraliidest: Video for Windows (VFW), Matrox Imaging Library (MIL) Windows keskkonnas ning V4L (Video For Linux) ja FireWire (IEEE1394) [18]. Hetkel kasutatakse V4L vimalusi. 19

1.2.3.3 Videohaaramise struktuuri seadistamine 1.2.3.3.1 V4L seadistuste rakendamine

Videohaaramise funktsioonide hiseltkasutataval CvCapture [11] struktuuril on lai valik seadistamise vimalusi. Seadistamine toimub cvSetCaptureProperty [11] funktsiooni abil, mis OpenCV teegi tasemel thendab objekti omaduste muutmist, mis omakorda mjutab seda, kuidas riistvaralisel tasemel juhitakse kaamera registreid. See vib thendada seda, et kik OpenCV teegi poolt pakutavad vimalused ei pruugi igal kaameral edukalt rakenduda ning tvimeliste seadistuste valik on piiratud kaamera draiveri vimalustega. Botmasteri ja PS3 Eye kaamera puhul see vljendub selles, et seadistame edukalt kaamerast saadava pildi mtmeid, kuid puudub vimalus OpenCV vahenditega juhtida kaamera kaadrisagedust. Pildi mtmete seadistamiseks kasutame argumente CV_CAP_PROP_FRAME_WIDTH (kaadri laius) ning CV_CAP_PROP_FRAME_HEIGHT (kaadri krgus) [18]. Thtis on kasutada vaid selliseid vrtuseid, mis on aktsepteeritavad kaamera ning draiveri poolt. PS3 Eye kaamera on vimeline ttama kahe erineva resolutsiooniga 320x240 ning 640x480 [19]. Teistsuguste vrtuste kasutamine ei rakendu.
1.2.3.3.1.1 Kaamera ov534 draiveri tiendus

Sony Playstation Eye USB kaamera kasutamiseks Linux keskkonnas on vaja spetsiaalset draiverit ov534 [19]. See on GNU GPL litsentsiga levitatav draiver, mille lhtekood on avalik. Kaamera ning draiver toetavad kaadrisagedust vahemikus 15-60fps resolutsiooniga 640x480px ning 30-125fps resolutsiooniga 320x240px. OpenCV vahenditega ei olnud vimalik Botmaster rakendusest sttida kaamera videovoo kaadrisagedust (V4L stestus) ning resolutsiooni mramisel rakendus vaikimisi sagedus 30fps. ks vimalik lahendus oli tiendada ov534 draiverit selliselt, et see toetaks ainult meile vajalikku reiimi 640x480 ning 60fps. (Maksimaalne vimalik kaadrisagedus suurima resolutsiooniga) Sellise muudatuse teostamine osutus vga lihtsaks. Nimelt ov534 draiveri lhtekoodis on videovoo reiimid kahes massiivis koos vajalike registrite vrtustega. Ebavajalike reiimide vljakommenteerimine piirab draiveri funktsionaalsust nii nagu Botmasteris vaja oleks. Ainsaks vimalikuks kaadrisageduseks 640x480p resolutsiooni juures on nd 60 fps ning kadus vajadus rakendada seadistusi V2L vahendite abil. 20

1.2.3.4 Andmeladu masinngemise saaduste hoiustamiseks

Videopildil leiduvate esemete tuvastamisel luuakse erinevaid objekte, mida hiljem kasutatakse roboti juhtloogikas otsuste langetamiseks. Need on erinevad OpenCV objektid nagu cvSequence, cvContour, cvGraph jne [11][18]. Kuna kaadri puhul ei ole vimalik ette ennustada, mis mahus kasulikku infot pildilt hangitakse, siis tuleb arvestada, et salvestatavad andmestruktuurid on dnaamiliselt kasvavad. Mainitud OpenCV andmestruktuuride salvestamiseks on teegis realiseeritud spetsiaalne objekt cvMemStorage [11]. CvMemStorage kujutab endast sarnase suurusega mluplokkide kogumit. Struktuur CvMemStorage sisaldab endas infot alumise ning lemise mluploki kohta. Samuti infot he ploki suurusest ja lemise ploki vaba mlu kogust baitides. Alumine mluplokk thistab andmekogumi algust ning lemine thistab hetkel kasutatavat, kuid tenoliselt mitte viimast andmekogumis. Kiki mluplokke alumisest lemiseni peetakse tielikult hivatuks ning lemist poolikult hivatuks. Juhul kui mluplokid saavad otsa, siis reserveeritakse dnaamiliselt mlu uue ploki jaoks vi laenatakse mluplokk teiselt CvMemStorage struktuurilt, mida pritakse. See info ei ole programmeerijale ldjuhul vajalik, sest OpenCV teek teostab mluhaldust automaatselt. Sellest hoolimata vib rakenduse judluse mjutamise eesmrgil printsiibi tundmisest kasu olla, sest CvMemStorage konteineri defineerimisel on vimalik mrata he mluploki andmemaht. See mjutab otseselt seda, kuidas hakkab toimima dnaamiline mluhaldus. Botmasteris defineeritakse CvMemStorage objekt vaikimisi ploki suurusega 64K. Konteineri defineerimiseks kasutatakse funktsiooni cvCreateMemStorage [11].

1.2.4

Kaadri ttlemine

1.2.4.1 Kaadri hankimine

Roboti tehisngemise elutskkel algab sellega, et USB kaamerast loetakse uus pildikaader. See operatsioon teostatakse OpenCV C teegi funktsionaalsusega cvQueryFrame, mis on tegelikult omakorda kombinatsioon funktsioonidest cvGrabFrame ja cvRetrieveFrame [11]. Esimene on kiire ja optimeeritud viis kaadri eraldamiseks kaamera puhvrist vi AVI videost. Selle funktsiooni eesmrgiks on maksimaalne vimalik kiirus. Hangitud kaader hoiustatakse teegisiseselt ning see ei ole programmeerijale kttesaadav. Saadud kaader vib olla (olenevalt

21

kaamera/draiveri iseloomust) tihendatud (compressed). CvRetrieveFrame vimaldab cvGrabFrame funktsiooniga haaratud kaadrile ligi pseda ning see funktsioon tagastab mluviite kaadri objektile. Seega cvQueryFrame oli loodud programmeerija t lihtsustamiseks ning koodiloetavuse parandamiseks, sest he funktsiooniga tidetakse kaks eraldiseisvat lesannet [18]. he kaameraga opereerimisel, nagu Botmasteri puhul, need kaks ksklust ongi enamasti jrjestikuselt teostatavad. Eraldi kasutatakse neid keeruliste algoritmide puhul snkroniseerimiseks juhul, kui videokaadreid loetakse samaaegselt mitmest kaamerast. Botmasteris hetkel selle jrgi vajadust ei ole.
1.2.4.2 ROI (Region of Interest) mramine

ROI mrab selle, millist ala video kaadri peal tdeldakse [17][4]. ROI seadistamiseks on OpenCVs funktsioon cvSetImageROI [18][11]. ROI rakendatakse pildiobjektile ning ala mtmed mratakse nelja koordinaadiga, ehk mratav tdeldav pind on ristklikukujuline. Keerulisemate ROI kujundite mramiseks on vimalik kasutada kombinatsioone erinevatest ristklikutest. Enamus OpenCV pildittluse funktsioone arvestavad seadistatud ROI-ga, niteks kik pikslikoordinaadid pildi ttlemisel arvutatakse ROI ristkliku lemisest vasakust nurgast, mitte kaadri enda omast. ROI seadistust on vimalik muuta rakenduse t kigus niteks saab erineval ajahetkel kasutada erisugust ROI vrtust vi mrata individuaalne ROI erinevate objektide tuvastamiseks. ROI kasutamisega on vimalik tsta videottluse judlust, sest pildikaadrite osaline ttlemine thendab viksemat tdeldavate pikslite arvu.
1.2.4.3 Videottlusel kasutatavad pildiobjektid ja nende vrtustamine

Selleks, et tdelda pilti programmiliselt, on olemas spetsiaalsed struktuurid/objektid, mille abil saab igat videovoo pilti ksitleda iseseisva instantsina. OpenCV C teegis, mida kasutab Botmaster, on selleks struktuuriks IplImage [11][18]. Erinevalt enamusest OpenCV terminitest ei alga see cv lhendiga. Phjus seisneb selles, et IplImage prineb teegist, mis oli OpenCV eelkija Intel Image Processing Library[3][18]. OpenCV uuem alternatiiv on CvMat [11], mis on vga sarnane, kuid veel ei eksisteerinud ajahetkel, mil arendati esimest Botmasteri prototpi.

22

1.2.4.3.1

IplImage iseloom

IplImage ise on vaid pis pildi kuvandi fsilistele andmetele. See koosneb kahest osast mluviide pildile ning meta-andmed, mis iseloomustavad kaadrit [18]. ImageData Kige thtsam struktuuri koostisosa on imageData, mis on char tpi viit pildi pikslite telistele vrtustele. meta-andmed Struktuuris on 21 erinevat parameetrit, mis iseloomustavad kujutise (imageData) tehnilisi nitajaid. Botmasteri arendaja seisukohast on thtsamad neist: Pikslisgavus (depth). Niteks kasutades parameetrit IPL_DEPTH_8U, mis mrab vahemikuks 8-bitise unsigned integeri, on he piksli vrtuse vimalik amplituud 0 ja 255 vahel. See on vikseim vimalik vahemik. Alternatiiviks on signed ja unsigned tpi kuni 32-bitised integerid vi koguni 64-bitine double-precision floating point. Botmasteris on kasutusel pikslite vrtused vahemikus 0 kuni 255. Kanalite arv (nChannels). Pildi kanalite arv. ldjuhul mrab see vrviruumile iseloomulikud kanalid, niteks RGB vrviruumi puhul on kolm kanalit punane, roheline, sinine. Enamus OpenCV funktsioone on loodud opereerimiseks kuni neljakanaliste piltidega. Kanalite jrjestus (dataOrder). Parameeter mrab selle, mis mustri jrgi hoiustatakse infot pildi pikslite kohta. Vaikimisi on andmete paigutus sektsioneeritud kindlas jrjekorras jadamisi, see neb vlja nii: kanalite ksteisest eraldamine. Algupra (origin). Parameeter mrab, kust alustatakse piksli-koordinaatide arvestamist vasak lemine serv vi vasak alumine. Viimane on saanud nimeks Windows bitmap style ning seletab ra oma pritolu. Laius (width) Pildi laius pikslites. Krgus (heigth) pildi krgus pikslites. ROI Region of interest koordinaadid. NULL vrtus thendab, et ROI on kogu pildi ulatuses. . Alternatiiviks on

23

1.2.4.3.2

Img

Botmasteris kasutatav IplImage kujutise objekti viit on kasutusel kogu teostatava videottluse elutskli vltel. See vrtustatakse viitega pildile, kui kaamerast vetakse kaader. Sisuliselt on tegemist RGB vrviruumis kaadri toorikuga, mis on lhtematerjal pildi ttlemiseks genereeritavate muude pildimaatriksite loomisel - work ja binary. Samuti kasutatakse seda objekti pildi kuvamiseks tskli lppfaasis. Kik lisainformatsioon, mis Botmasteris kaadrile juurde joonistatakse (vravate piirid, pallide asukohad, statistiline tekst judluse kohta jms) rakendatakse just sellele IplImage objektile.
1.2.4.3.3 Work

Pildimaatriks work on samuti IplImage objekti viit. See on koopia Img maatriksist, kuid on eelpool mainitud LUT otsingutabeli abil konverteeritud kolmekanalilisse HSL vrviruumi. Pikslite vrvitooni, heleduse ja vrvikllastuse alusel tuvastatakse selle pildimaatriksi pealt otsitavad objektid. Leitud objektide asukohad salvestatakse lal mainitud spetsiaalsesse andmelattu ning Img maatriksile joonistatakse vajadusel info objektide asukoha kohta.
1.2.4.3.4 Binary

binary on lihtne hekanalilise vrviruumiga pildimaatriks, mille ainsad vimalikud kasutatavad pikslite vrtused on kas nullid vi hed. See on meldud work pildiobjekti abistamiseks. Kui HSL vrviruumi abil tuvastatakse objektide asukohad, siis binaarsele maatriksile need mrgitakse. Nullid mravad selle ala, kus otsitavat objekti ei ole ning hed mravad selle ala, kus on tuvastatud objekt.
1.2.4.4 Gaussi filtri rakendamine

Robotitel laialdaselt kasutatava PS3 Eye USB-kaamera videopildil esineb tihti teralisust ehk mra. See on tingitud sellest, et siseruumides jaotub valgus ebahtlaselt, kaamera sensor on mtmetelt vike ning kaamera sriaeg on lhike. Samuti phjustavad pildil mra roboti elektroonilised komponendid, mis tekitavad sensorile elektrilisi laenguid. Kujutise teralisus takistab pildi ttlemisel objektide tuvastamist. Lihtsalt eldes mra tttu tuvastusalgoritmid leiavad kujutiselt palju vikeseid objekte, mida tegelikult ei eksisteeri. Masinngemises kasutatakse teralisuse vhendamiseks udustamist [17][4].

24

Botmasteris rakendatakse pildile gaussi filter, mis on arvutusmahult sobivaim viis mrast vabanemiseks. Gaussi filtriga silutakse pildimaatriks Work, sest see on edaspidi sisendiks teiste maatriksite genereerimisel. Gaussi filter rakendatakse OpenCV vahendite abil.

Joonis 7: Mra samasugusel kujutisel erineva sensori valgustundlikkuse (ISO) puhul[20] [20][21]

Joonis 8: Gaussi filtri rakendamine offset tehnoloogiaga trkitud mustvalgele pildile[21] 25

1.2.4.5 Objektide tuvastamine

Olenevalt robotivistluse lesannetest, muutub igal korral ka raalngemise funktsionaalsus, eriti just objektide tuvastamise poolel. Erinevat tpi objektide leidmiseks on eraldi algoritmid, kuid ldised kasutatavad printsiibid on sarnased. Tuvastamiseks kasutatakse OpenCV masinngemise funktsioone. Objektide ra tundmiseks kasutatavad parameetrid on HSL vrviruumis pikslitele iserased tunnused - vrvi toon, kllastus ja heledus [4]. Vrvi alusel kindlaks tehtud kontuurid sorteeritakse vlja pindala ning kuju alusel. Botmasteri programmi tasandil kasutatakse vrvi tuvastamiseks lal mainitud pildimaatriksit work. Operatsioonideks leitud kontuuridega ja nende fsiliste omaduste ttlemiseks kasutatakse pildimaatriksit binary.
1.2.4.5.1 Golfipalli nide

Golfipalli tuvastamisel on vrvuse tasandil tegemist konkreetse orani vrvitooniga, millele lisanduvad kindel sobiv kllastus ja erksus. Vliskeskkonna valgustus on HSL-i kanalite puhul kige enam mjuv tegur. Seetttu ei kasutata masinngemiseks staatilisi vrtuseid, vaid on kindlad vahemikke, mis vivad sobida. Sobiva vrvusega kontuuridest lhtuvalt, on golfipalli tuvastamise algoritmis realiseeritud vaid marate objektide aktsepteerimine. Pindala poolest on vimalikul pallil konkreetne vrtuste vahemik. Liiga suur tuvastatud oran pall on tenoliselt mingi viga, liiga vike vib olla lihtsalt mra. Pildi moonutuste tttu tohib nhtav pall olla ka ovaalse kujuga. Realiseeritud on ka piir, mis mrab, kus ovaalsus lheb le sirgjooneks. Algoritm aktsepteerib ka poolringikujulisi objekte, sest pall vib olla niteks osaliselt kaadrist vljas vi paista vlja mne muu objekti, niteks vastasroboti tagant.

26

1.2.4.5.2

Objektide tuvastamise protsessi kirjeldavad joonised

Joonis 9: #1 Kaamerast saadud RGB vrviruumis kujutis kirjutati Img" objekti

Joonis 10: #2 "Img" objekti pikslite andmed konverteeriti HSL vrviruumi ning kirjutati objekti "Work"

27

Joonis 11: #3 HSL vrviruumis objekti kik pikslid kiakse lbi ning algoritm valib vlja potentsiaalselt sobivad pikslid. Sobivad pikslid vrtustatakse objektis "Binary" htedega, lejnud nullidega.

Joonis 12: #4 Objektide tuvastamise algoritmid analsivad leitud kontuure ning nende vastavust riloogikaga paika pandud nuetele. (Kuju, laius, pikkus, pindala jms.) Sobivad kontuurid salvestatakse objektis CvMemStorage.

28

Joonis 13: #5 RGB vrviruumis objektil "Img" mrgistatakse leitud objektid. Mrgistamiseks kiakse lbi tuvastatud objektid andmekogumis "CvMemStorage". Vastavalt tuvastatud objekti tbile valitakse mrgistamise viis - niteks golfipallidele joonistatakse mber kollane ring. Seejrel rakendus Botmaster kuvab "Img" objekti kujutise koos mrgistatud objektidega.

29

2 Praktiline teostus
2.1 Videottluse judluse mtmise vahendi ning metoodika vljattamine
Masinngemise komponendi judluse parendamisele suunatud produktiivne arendust eeldab mugavat ning kiiret viisi hinnata videottluse hetkelist efektiivsust. Autor leidis, et esimese sammuna videottlluse judluse parendamisel on vaja luua mugav triist, mis vimaldaks tehisgemise efektiivsust hinnata ning mille mtmistulemused oleksid omavahel vrreldavad.

2.1.1

Nuded

Visiooni kohaselt olid seatud kindlad eesmrgid: Ssteemi judlus on kiiresti mdetav prast igat koodimuudatust Automatiseeritud judlustest on seadistatav Automatiseeritud judlustest on kasutusklblik ka muudes sarnaste kosteaegadega reaalajassteemides Automatiseeritud test on kivitatav mne vajutusega Automatiseeritud judlustestimise vahendi implementatsioon on limeturvaline

30

Aktiivses ega passiivses olekus mtmisvahend ei avalda tajutavat mju testitava ssteemi judlusele (ei koorma lisaks omakorda protsessorit), pigem on aktsepteeritav ka suuremahuline operatiivmlu hivamine. Testimisvahendi rakendusliides (API) on lihtsalt loetav/arusaadav ning vimaldab mrgistada mdetavaid protsesse piiramata koguses Testitulemused on salvestatavad ning tdeldavad levinud andmettlustarkvaradega nagu LibreOffice vi MS Excel Testitulemused on mugavalt loetavad Testitulemuste mtmishikuteks on millisekundid, nanosekundid ning kaadrite arv sekundis

Botmasteri arendajad on varasemalt samuti tegelenud platvormi kosteaegade mtmisega, kuid kasutatud vahendid ei vastanud lput autori soovidele. Eelkige: testitulemuste loetavuse seisukohast testide paindlikkuse ning seadistatavuse osas varasema mtmisvahendi tphimtte kohaselt teostati tulemuste arvutused mdetava ssteemi t ajal, mis vib avaldada mju testitulemustele Siiski oli Botmasteri arendajate varasem kogemus kosteaegade mtmisel vga heaks sisendiks parendatud mtmisvahendi loomisel.

2.1.2

Ajatemplite salvestamine

Arvutisiseste sndmuste ajalise kestvuse mtmiseks kasutatakse loendureid ajatempleid. Loendurite kasutamiseks mratakse kaks hetke, mille vahel soovitakse mta ajakulu. See protsess sarnaneb autode kiiruse mtmisele kiirteedel, kus teatud teelikude alguses ning lpus fikseeritakse siduki sisenemise ja vljumise ajahetk ning kahe ajatempli vrdlemisel tuletatakse masina keskmine sidukiirus mdetava sidudistantsi lbimisel. Botmasteris on heaks niteks kaamera pildi lugemine juhtarvuti mllu, kus esimeseks sndmuseks on kaamerale pildi laadimise kskluse saatmine ja teiseks sndmuseks pildi juhtarvuti mllu judmine. Vahetult enne esimest ning prast teist sndmust fikseeritakse ajatempel.

31

Varasematele EIK Robootikaklubi kogemustele toetudes sai ajatemplite fikseerimise tarbeks valitud ka varem kasutusel olnud POSIX [6] programmiliidese funktsionaalsus. Tpsemalt funktsioon clock_gettime (formaat: time_t, long nanosec), mille parameetriks kasutatakse monotoonset kella (CLOCK_MONOTONIC [6]). Antud POSIX programmiliidese funktsionaalsus on vga sobilik Botmasteri testimiseks, kuna kik EIK Robootikaklubi robotid kasutavad Botmaster platvormi jooksutamiseks UNIX ssteemil phinevaid operatsioonissteeme ning clock_gettime [6] tagab vga head nitajad: Krge efektiivsus vga vike ldkulu ehk ajatempli vrtuse lugemiseks kuluv aeg. Vrtus saadakse loetud protsessori taktide jooksul, mis on mrkimisvrselt kiire. Tulemused esitatakse vga suure tpsusega - tpsusskaalaks on nanosekundid. ks nanosekund on 1/1000000000 sekundit. Monotoonne loendur thendab mtmistulemuste usaldusvrtust, kuna loenduri nit kasvab vaid monotoonselt ning ei vhene iialgi. Loenduri vrtust ei saa ka muuta. Valitud funktsionaalsuse ainsaks piiranguks on see, et ei ole teostatav protsesside mtmine, mis kestavad le he sekundi. See piirang ei ole Botmasteri masinngemise mooduli judluse mtmisel aktuaalne, kuna kik mdetavad protsessid kestavad vaid sekundi murdosa.

2.1.3

Lahenduse disain

Triista loomisel on kasutatud singleton tarkvara disainimustrit, mille kohaselt [7]: Klassi kuuluva(te) objekti(de) arv on rangelt piiratud hele ning on ainult ks ligipsupunkt - on vlistatud olukord, et judlust mdab samaaegselt mitu mtmisvahendi instantsi. "Global point of access" - globaalselt ligipsetav kikjal rakenduses. Ei ole piiranguid, mis komponente ning millal mta. Just-in-time initsialiseerimine Mrgitud iserasuste saavutamiseks on kasutusel privaatne konstruktor ning pointer staatilisele objekti instantsile [7]. Instantsi tagastav funktsioon on avalik ning esmasel vljakutsumisel algul luuakse objekt ja seejrel tagastatakse. Jrgnevatel kordadel toimub lihtsalt olemasoleva objekti tagastamine.

32

ldiselt ei soovitata andmeid ja objekte kasutada globaalse kehtivusega, kuid sellel disainimustril on oma kindel ni. Niteks logimise tarkvarad on taolise lesehitusega. Samuti soovitatakse rakendada antud mustrit niteks andmebaasisessioone ksitletavate moodulite puhul, kui on vaja kindlasti vltida paralleelseid hendusi. Ning hetkelgi Botmasteris judluse mtmiseks see vastas tielikult nudmistele. Testi jooksutamise elutskkel jaguneb kolmeks faasiks: Mtmise teostamine Tulemuste arvutamine, salvestamine Tulemuste ning analsi kuvamine

Mtmine Testitav ssteem kivitatakse (toimub tavaline Botmasteri t test-reiimis ehk ttab ainult videottlemine) ning samaaegselt rakendub paika seatud ajatemplite vrtuste salvestamine operatiivmllu. Tulemuste salvestamisel ei teostata htegi muud operatsiooni kahe ajatempli jdvustamine vtab alla 2000ns, mis thendab, et triist vimaldab salvestada unikaalsete sndmuste ajalisi kestvusi sagedusega pool miljonit korda sekundis. Tulemuste ttlemine Testitava ssteemi mdetav t peatatakse. Seejrel loetakse operatiivmlust kogutud ajatemplid ning algoritm rehkendab koondtulemused. Saadud tulemused analsitakse ning nende phjal genereeritakse statistilised andmed nagu niteks iga mdetava protsessi esinemise sagedus vi kige aeglasem protsess. Tulemustest kompileeritakse struktureeritud csv fail, mis salvestatakse juhtarvuti kvakettale. Tulemuste ning analsi kuvamine Viimase sammuna toimub csv faili automaatne avamine, mis kuvab struktureeritud ning mugavalt loetava tabeli koos tulemustega. Olenevalt seadistusest vib automaatselt avanevaks redaktoriks olla niteks Open-Office Calc vi mni lihtsam tekstiredaktor nagu Gedit.

2.1.4

Triista ning selle rakendusliidese kasutamine

Mtmisvahend sai ristitud nimega VisionTime. Klassides, mille funktsioonide ning protsesside judlust soovitakse mta, tuleb lisada VisionTime klassi pis.

33

#include "visiontime.h" VisionTime liidese juhtimine kib kujul: VisionTime::DO()->funktsiooniNimi(Parameeter); Kokku on 6 avalikku juhtimisfunktsiooni. Esimesed kolm on mistlik kivitada testitava programmi (nt Botmasteri) main() funktsioonis. 1. turnOn() funktsioon llitab sisse VisionTime'i. Kui see vlja kommenteerida, siis lejnud VisionTime'i funktsioonid ei tee mitte midagi. (Testikomponendi aktiivne/passiivne olek): VisionTime::DO()->turnOn(); 2. setMeasureNumberOfFrames() - mrab mitme kaadri kohta tulemused arvutatakse. Nimelt ei ole pildittluse kiirus konstantne, see muutub ajas pidevalt. he kaadri mtmine ei ole otstarbekas, sest tegu vib olla kaadriga, mis on tegelikust keskmisest parem/halvem. VisionTime kogub info etteantud arvu kaadrite kohta ning arvutab keskmised. VisionTime::DO()->setMeasureNumberOfFrames(90); 3. setMeasuringFromFrame() - mrab mitmendast kaadrist alates alustatakse mtmist. Jllegi pildittluse kiirus pole konstante ja kaamera videovoo edastamise alguses on judlus mnevrra kehvem ning paari sekundi prast stabiliseerub. VisionTime::DO()->setStartMeasuringFromFrame(120); Jrgmised kolm lhevad sinna, kus toimub mdetav ttlemistskkel. 4. newFrame() - lipp, mis mrab uue kaadri alguse.Vljakutse tuleb panna koodis uue kaadri funktsiooni vahetusse lhedusse. VisionTime::DO()->newFrame(); 5. markBegin() - lipp, mis mrab mdetava protsessi alguse. Funktsiooni argumendiks on protsessi nimetus vi lhend - seda kasutatakse lpus tulemuste kokkuvttes. VisionTime::DO()->markBegin("LUT"); // Mdetav protsess nt 'LUT' vms 6. markEnd() - lipp, mis mrab mdetava protsessi lpu. Argument on sama nagu protsessi alguse lipu puhul. VisionTime::DO()->markEnd("LUT"); 34

VisionTime aktsepteerib ka "alamprotsesse": VisionTime::DO()->markBegin("Process"); VisionTime::DO()->markBegin("Sub-process1"); //alamprotsess1 VisionTime::DO()->markEnd("Sub-process1"); VisionTime::DO()->markBegin("Sub-process2"); //alamprotsess2 VisionTime::DO()->markEnd("Sub-process2"); //miskit muud VisionTime::DO()->markEnd("Process"); Kuid alamprotsess ei tohi olla sama nimega: VisionTime::DO()->markBegin("Nimi"); //mingi protsess VisionTime::DO()->markBegin("Nimi"); //mdetav protsess VisionTime::DO()->markEnd("Nimi"); //Kumb lpeb? VisionTime::DO()->markEnd("Nimi"); //Kumb lpeb? Samuti ei pea mdetavad protsessid esinema sama arv kordi. Iga protsessi keskmine arvutatakse tpselt selle jrgi kui tihti selle kivitamiseni programm judis. Ainus nue on see, et viimase mdetava kaadri lpuks ei tohi olla htegi pooleliolevat protsessi. Videottluse puhul on see loomulik, sest uue kaadri alguses on kogu eelmise kaadri ttlemine juba lbitud.

2.2 Mtmise

teostamine

esialgse

platvormi

videottluse

komponendi judlusele
Peale mtmisvahendi implementeerimist ning selle tkindluse testimist, oli vimalik alustada platvormi esimeste mtmistdega. Botmasteri masinngemise komponendi allssteemidele olid lisatud judlustestimise raamistiku rakendusliidese taimerite lipud. Need lipud jvad tarkvara koodi kogu praktilise arenduse lpuni ning vimaldavad iga hetk mta komponentide kosteaegu. Autori visiooni jrgi vivad need jda Botmasteri lhtekoodi ka prast lput valmimist ning olla soovi korral judluse indikaatoriks ka tulevaste arenduse

35

vltel. Juhul, kui judluse automaattestimise raamistik on passiivses olekus (seadistatustud vlja llitatud olekusse), ei avalda see Botmasterile mingisugust mju. Esialgse ssteemi mtmine teostati kahe stsenaariumi jrgi tissuuruses pildi (640x480px) ning poole viksema resolutsiooniga kaadrite ttlemine (640x240px). Viimane on sarnane vistlusrobotitel kasutatava seadistusega, kus on vaja maksimaalselt laia, kuid suhteliselt kitsast pilti. Autor toetus varasematele kogemustele ning oletas, et judluse kasv ssteemi parendamise kigus ei pruugi olla korrelleeruv erinevate resolutsioonide puhul teisisnu tarkvaraline muudatus vib anda erinevat efektiivsuse vitu suurema ja viksema resolutsiooniga kaadrite ttluse puhul. Raalngemise judluse testimisel kasutatakse alati vga sarnast tausta tulemuste vrdlemiseks peavad olema mtmisel ka sarnased tingimused. Kige lihtsam on valida staatiline natrmort, kus ei toimu mingit liikumist (tpselt samasuguse liikumise korduv simuleerimine on keeruline). Oli valitud suhteliselt ebahtlane taust, kus on heledad ning tumedad varjundid tpselt samasugust kasutatakse ka edaspidiste mtmiste puhul. Tasub ra mrkida, et tegemist on mtmise sooritamisega ideaalsetes tingimustes. Paralleeliks vib tuua niteks siduautode tehnilised spetsifikatsioonid, kus on kajastatatud tootjapoolne ajaline hinnang siduki kiirendusele 0-100km/h priselus on tulemused mnevrra tagasihoidlikumad, sest mngu tulevad piiravad tegurid nagu ilmastikutingimused (nt vastutuul), teekatte tingimused, sitjate ning pagasi kaal, siduvahendi amortiseerumine jne. Ka lputs esitatud mtmistulemused annavad hea levaate judluse efektiivsusest ning on igati vrreldavad omavahel, kuid pris vistlustingimustes vivad numbrilised vrtused olla teised.

2.2.1

Tulemused

Tulemused nitasid, et esialgse ssteemi masinngemise komponendi kaadrisagedus on maksimaalse resolutsiooni puhul 19 ning poole viksema pildiga 26 kaadrit sekundis. Tulemist selgus, et kige aeganudvam protsess on kaadri hankimine kaamerast. Sinna alla lheb ajavahemik alustades kaamerale pildi laadimise kskluse saatmisest kuni ttluseks valmis pildi judmiseni juhtarvuti mllu. Olenemata tdeldava pildi resolutsioonist, alati 14 millisekundit kestvale kaadri laadimisele (kaamerast laetakse iga kord tismahus kaader, mis hiljem vajadusel ligatakse viksemaks - seega selle protsessi 36

ajakulu alati sama) jrgneb objektide tuvastamine, mis summaarselt vtab suure resolutsiooniga 13,5ms ning vikesega 7ms. Objektide tuvastamine jaguneb neljaks osaks aeglaseim neist oli musta joone tuvastus (4,5ms ja 2,5ms), mnevrra kiirem palli otsimise algoritm (3,2ms ja 1,5ms) ning viimased kaks omavahel vrdvrsed vravate otsimise funktsioonid (sama funktsioon kivitatakse erinevate parameetritega kaks korda, mlemal korral kosteajad suure pildiga 2,8ms ning viksega 1,5ms). Jrgnes kaadri kuvamine Botmaster rakenduses. Pildi nitamine nuab aega 7,5ms, kitsama kaadri puhul 4,2ms. Natukene kiiremad protsessid olid gaussi filtri rakendamine ja kujutise konversioon RGB ja HSL pildiruumide vahel, mlema ajakulu oli tispildi puhul <8ms ning vikese pildiga <5ms. lejnud protsesside kosteaegade summa on olenemata tdeldava kaadri resolutsioonist ligikaudu 0,5ms.

37

Joonis 14 - Botmasteri masinngemise Joonis 15 - esialgne ssteemi versioon, protsessid vib jagada kahte gruppi: resolutsioon 640x240p. sisendkaadri ttlemine ning objektide tuvastamine. Joonisel on kujutatud videottluse alamprotsesside jrjekord ning ajalised kestvused esialgne ssteemi versioon, resolutsioon 640x480p.

38

TULEMUSED Esialgne ssteem (arenduse alguspunkt)


Resolutsioon FPS Vahelejetud kaadrid enne Mtmise algust Mdetud kaadrite arv Protsess 1 Kaader (Kik kokku) 2 Kaadri hankimine 3 Objektide tuvastus 4 Kujutise kuvamine 5 Gaussi filter 6 RGB-HSL Konverteerimine 7 Musta joone tuvastus 8 Pallituvastus 9 Vrava tuvastus 1 10 Vrava tuvastus 2 11 Statistika kandmine pildile 12 Visuaalsete kuj kandmine pildile 13 Kaadrisageduse kalkuleerimine Vrava re tuvastus 14 (Musta joone tuvastuse lisa) 15 Pildiobjektide vrtustamine 16 procfunct_stor_crt?! Mis see on 17 ROI mramine 640x480px 640x240px 19 26 90 120 90 120

Avg_ms Avg_ms 52.28 37.13 14.14 14.42 13.52 7.04 7.47 4.17 7.33 3.81 7.16 4.88 4.55 2.45 3.2 1.45 2.92 1.61 2.75 1.41 0.34 0.37 0.1 0.06 0.04 0.04 0.04 0.003 0.003 0.005 0.04 0.003 0.003 0.005

Joonis 16: masinngemise komponendi judlustestimise raamistikuga saadud tulemused esialgsele Botmasteri versioonile. Tulemused on sorteeritud kosteaegade ajakulu jrgi (vasakpoolne tulemuste tulp), aeglasemad eespool.
14.29% 5.09% 25.86% 14.02% 13.70% 27.05% 11.23% 7.57% 18.96% 13.14% 10.26% 38.84%

Joonis 17: kosteaegade kestvuste suhe, esialgne ssteem.640x480p

Joonis 18: kosteaegade kestvuste suhe, esialgne ssteem. 640x240p

NB! Sektordiagrammi lilla tulba koosseisu on lisatud ka kik masinngemise komponendi mtmise skoobist vlja jnud protsessid. Samuti ka platvormi muud kosteajad: roboti juhtloogika titmine, suhtlus kontrolleriga jms.

39

2.2.2

Hinnang tulemustele ning prioriteetide seadmine

Esialgse platvormi videottluse komponendi judluse mtmise eesmrgiks oli selgitada vlja kige aeganudvamad allssteemid mida kauem kestab operatsioon, seda suurema tenosusega on vimalik leida vimalusi selle optimeerimiseks. Autor toob vlja, milliste protsesside parendus oli valitud prioriteetseks ning millistele ei keskenduta. Parendamiseks vlja valitud allssteemid Kaadri hankimine Platvormi kige aeglasem protsess, mille kestvus jb samaks olenemata tdeldava kaadri suurusest. See on kige prioriteetsem komponent, mida tasub tiendada. Kujutise kuvamine Aeglane protsess, mis ei mngi videottluses funktsionaalset rolli, kuid on summaarset judlust aeglustav tegur. Uue kaadri vtmine ootab eelmise kaadri kuvamise taga. Objektide tuvastus Koosneb mitmest ksteisest sltumatust alamprotsessist, mis viitab sellele, et potentsiaalne optimeerimisvimaluste spekter on lai. Allssteemid, mille parendamisele ei keskenduta Gaussi filter Gaussi filtri funktsionaalsuse implementeerimine on keeruline ning vga aeganudev. Botmasteris kasutatakse OpenCV teegi sisseehitatud funktsionaalsust, mis ongi krgelt efektiivne ning optimeeritud. Autor leiab, et antud protsessi kiirendamiseks vga palju alternatiive ei ole. RGB-HSL konversioon Botmaster platvormi arendajad kasutavad selles allssteemis vga efektiivset otsingutabelit ning pointer-aritmeetikat. Aja jooksul on korduvalt tehtud katseid seda protsessi veelgi optimeerida, kuid need ettevtmised ei ole toonud soovitud tulemusi. On alust arvata, et oleme vga lhedal maksimaalsele vimalikule efektiivsusele. Antud lputs sellele protsessile ei keskenduta. Kik lejnud protsessid nende summaarne ajaline kestvus on vga vike ning tegemist on enamasti lihtsate operatsioonidega, mille parendamine antud kontekstis ei ole otstarbekas.

40

2.3 Platvormi

videottluse

judluse

parenduse

vimalike

metoodikate ja lhenemiste anals


Autor valis vlja prioriteetsemad masinngemise komponendi allssteemid, mille tiendamise abil on seatud eesmrgiks platvormi videottluse summaarse judluse tstmine. Antud peatkis tuuakse vlja potentsiaalsed lahendused kosteaegade krpimiseks ning snastatakse hpoteesid, millele loodetakse leida kinnitust vljavalitud parenduste realiseerimise tulemusena. Vimalike lahenduste vljapakkumistel tugines autor eelnevale kogemusele, publikatsioonidele ning sarnaste reaalajassteemide arenduses kasutatavatele disanimustritele. Lisaks uuris autor analoogseid probleemilahendusi teistes projektides.

2.3.1

ldine

Kindlasti on vimalik saavutada tulemusi riistvaraliste muudatuste abil. Niteks juhtarvuti asendamine sellisega, mille protsessoril on suurem taktisagedus ning tuumade arv. Samuti vib vahetada vlja videosisendi riistvaralise komponendi. Praeguse USB 2.0 kaamera asemel saaks kasutada oluliselt kiiremat USB 3.0 vi IEEE 1394 (FireWire) kaamerat. USB 3.0 protokoll on kordades suurema lbilaskevimega ning IEEE 1394 standard oli loodud spetsiaalselt pildittlusseadmete jaoks. Mainitud lahendused on antud lput skoobist vljas, kuna autori eesmrgiks on keskenduda vaid Botmaster tarkvara parendamisele ning tulemus peab olema sltumatu vlistest teguritest nagu riistvara, draiverid, kasutatav operatsioonissteem jms. Kikide lisaarenduste testimine teostatakse rangelt vrdsetes tingimustes. Juhul, kui lesannete titmine ei sltu ksteisest, vib teostada neid samaaegselt. Tuleb arvestada sellega, et ssteemis oleks selleks piisavalt ressurssi, sest arvutusmaht he ajahiku kohta tuseb kordades. Ideaalis vib juda tulemuseni, kus mitme paralleelselt lahendatava lesande summaarne kosteaeg vrdub kige pikema lesande titmise ajaga. Siinkohal tuuakse tihti nide auto ettevalmistamisest enne reisi, kus lesanded jagatakse jrgmiselt: pagasi paigutamine kaheksa minutit, reisijate paigutamine viis minutit ja tankimine kolm minutit. Tehes kiki neid lesanded ksteise jrel, kulub nendele aeg 16 minutit. Samas pole kski lesanne teisest sltuv ja need lahendatakse paralleelselt kaheksa minuti jooksul. Seega on selliselt pstitatud lesande juures vimalik kokku hoida pool ajast 41

tehes

lesandeid

paralleelselt.

lesannete

paralleelne

titmine

on

levinud

vte

reaalajassteemides, kus tihti domineerib tskliline protsesside kulgemine. Autor panustab vimalustele teostada heaegselt erinevaid operatsioone vi nende detailsemaid samme ning saavutada sellega lhemat aega he kaadri ttlemisel.

2.3.2
Autor uuris

Hpotees - Kaadri hankimine


mujal maailmas realiseeritud videottluse lahendusi ning ks

mrkimisvrsemaid antud lput kontekstis oli iseenda eest rkiva nimetusega projekt Qt-OpenCV-Multithreaded [22]. Tegemist on avatud lhtekoodiga platvormiga, mille arendaja on otsinud lahendusi sarnasele probleemile. Mrkimisvrseks teeb mainitud projekti selle sarnanus EIK Robootikaklubis kasutatavate tehnoloogiate ning vahenditega. Projekti arendaja on arendanud platvormi UNIX tpi operatsioonissteemi suunitlusega, kasutatud on samasugust Playstation Eye USB kaamerat ning platvormi komponendid on realiseeritud kasutades Qt ning OpenCV teeke. Projekti peamine fookus on mitmelimelise arhitektuuriga pildittlemisel. Niteks on seal implementeeritud kaamerast kaadri vtmine, mis toimub paralleelselt kaadri ttlemisega (niteks filtrite rakendamisega). Kahjuks ei ole vimalik Botmasterisse implementeerida selles projektis toimivaid valmislahendusi, kuna Botmasteris ning Qt-OpenCV-Multithreaded platvormides on kasutuses erinevad OpenCV teegid. Botmaster kasutab vanemat C keele teeki, aga vlismaises analoogis on C++ versioon. Need kaks teeki omavad sarnaseid funktsionaalsusi, kuid tegelikult on nad vga erinevad teistsugune rakendusliides, mluhaldamise printsiibid jms. OpenCV teegi vljavahetamine Botmasteris ei ole otstarbekas, kuna see oleks rmiselt mahukas t (eriti objektide tuvastuse pool) ning Botmasteri arendajad on praeguse teegiga vga harjunud. Kll aga andis mitmelimelise lahendusega projekt lput autorile ideid ning kinnitust, et paralleelselt teostatavate protsessidega analoogsed lahendused toimivad ning judlus on efektiivne. Mitmelimeliste disainimustrite kasutamine on tnapeval raalngemises standard ning krge tootlikuse vti [4]. Kaadri hankimise lahenduse mberdisainimine suure tenosusega tstab platvormi efektiivsust.

42

2.3.3

Hpotees - Objektide tuvastus

Autor vaatles seni objektide tuvastamise funktsionaalsusi musta kastina. Iga eraldiseisva objekti tuvastamise funktsioonide uurimisel selgus, et neis esinevad vga sarnased mustrid ning korduv funktsionaalsus. Objektide tuvastamise lahenduse mberdisainimine suure tenosusega tstab platvormi efektiivsust.

2.3.4

Hpotees - Kujutise kuvamine

Kujutise kuvamine on arvutusmahult kallis protsess, mis kaadri ttlemise seisukohast ei loo lisandvrtust. Kaadrite kuvamine on vga vrtuslik Botmaster tarkvara testimisel, eriti uute objektide tuvastamise funktsionaalsuste loomisel. Kuid roboti t ajal (vistlustingimustes) on praeguse lahenduse disainis parandust vajav puudujk: koormatakse juhtarvuti protsessorit uue kaadri vtmine (seega ka kogu uue kaadri ttlemine) ei alga enne kui eelmine kaader kuvatakse Botmasteri graafilises liideses. Tdeldava video kuvamise lahenduse mberdisainimine suure tenosusega tstab platvormi efektiivsust.

2.4 Lahenduste realiseerimine 2.4.1 Mitmelimeliste lahenduste realiseerimise vimalused Botmaster platvormis
helimelise programmi tiustamine mitmelimeliseks ning allssteemide protsesside samaaegse titmise implementeerimine eeldab eelnevat analsi. Autor kaardistas protsessidevahelised sltuvused, et tuvastada, milliseid neist oleks vimalik tita heaegselt. Mitmelimeliste lahenduste arendamisel kutsutakse sellist vimalust protsesside asnkroonsuseks (activity asynchrony) [23]. Sltuvuste kindlakstegemiseks vaadati, kas operatsiooni teostamine oleneb eelneva(te) allssteemi(de) tulemusest. Niteks gaussi filtri rakendamine ning RGB-HSL konversioon ei vi olla heaegselt tidetavad, sest eesmrgiks 43

on saada gaussi filtriga silutud kujutis HSL vrviruumis. Selle tttu peab alguses teostama esimese ning seejrel alles teise operatsiooni ehk he protsessi vljund on jrgmise sisendiks.

Joonis 19: Saab kindlalt elda, et on vimalik teostada samaaegselt kikide objektide(erinevat tpi) tuvastamist, sest operatsioonid ei ole omavahel seotud. Kik protsessid sltuvad kaadri hankimisest, sest kikide allssteemide protsesside puhul on otseseks vi kaudseks sisendiks kaamerast saadud kujutis. Kaadri hankimine ise on sltumatu kikidest teistest protsessidest uue kaadri hankimisel ei mngi rolli eelmise kaadri ttluse tulemus.

44

Joonis 20: Autor visualiseeris he vimaliku lahenduse.

45

Joonis 20 kirjeldab, et: Uue kaadri hankimist saab teostada kogu pildi ttlemise tskli vltel. Autor arvutas, et juhul kui gaussi filtrini judmiseks ei oleks vaja lugeda kaamerast pilti, vaid saaks laadida mlust eelnevalt laetud (paralleelses limes) pilt, siis ideaalses olukorras vib judluse efektiivsus tusta 25-35%. Hinnangulise judluse vidu arvutamiseks kasutati esialgse ssteemi mtmistulemusi ning kaadri keskmisest kestvusest lahutati kaadri hankimiseks kuluv aeg, seejrel liideti eeldatav aeg (alla 2ms), mis kulub kaadri laadimisele operatiivmlust. Kikide objektide tuvastamise operatsioonide titmist alustatakse heaegselt. Objektide tuvastamine kestab summaarselt sama kaua kui kige aeglasem tuvastamise allssteem musta joone tuvastus. Autor arvutas, et ideaalis vib judluse efektiivsus tusta 15-20%. Hinnangulise judluse vidu arvutamiseks kasutati esialgse ssteemi mtmistulemusi ning kaadri keskmisest kestvusest lahutati palli ning vravate tuvastamisele kuluv aeg. Mainitud arvutusviis on antud situatsioonis sobiv selleks, et teha kindlaks ligikaudsed judluse paranemise vljavaated. Juhul, kui parendusi planeeritakse mitu korraga, siis on arvutamiseks soovitatav kasutada Amdahli seadust [24]. See on matemaatiline arvutusviis, mille abil on vimalik vlja selgitada maksimaalne eeldatav programmi judluse tus, kui tiustatakse ainult teatud osa ssteemist. Seda vtet kasutatakse tihti tarkvaralahenduste optimeerimisel limede abil.

2.4.2

Kaadri hankimine mitmelimeline lahendus

2.4.2.1 Eesmrk

Kaadri hankimise allssteemi lahenduse optimeerimise eesmrgiks on vabaneda kaamerast kaadri hankimisele kuluvast ajalisest viivitusest. Mujal maailmas realiseeritud lahendused annavad kinnitust, et eraldi limes kaadri lugemine kaamerast vimaldab saavutada pstitatud eesmrki.

46

2.4.2.2 Kontseptuaalne lahendus

Joonis 21: Olemasolev ning uus kontseptuaalne lahendus 47

Joonis 21 annab levaate disainimuudatustest, mille abil oleks vimalik olulisel mral parandada ssteemi judlust. On vlja toodud olemasolev ning uus kontseptuaalne lahendus ning nendevahelised erinevused.
2.4.2.2.1 levaade

Olemasolev lahendus Ssteem toimib hes limes ning protsessid korduvad tskliliselt alati samas jrjekorras Kontseptuaalne lahendus Ssteemis on kaks lime, millest ks on orienteeritud ainult kaadri laadimisele kaamerast Punase katkendliku joonega on mrgitud kaadri hankimise operatsiooni lpphetk, mis htib kujutise kuvamise allssteemi lppemisega Rohelise katkendliku joonega on mrgitud kaadri hankimise operatsiooni alustamise ajastus Jooniselt on nha, et kaadri hankimise operatsiooni nihkumine paralleelsesse lime lhendab pealime tskli kestvust. Tskkel lheneb ligikaudu he kaadri hankimisele kuluva aja vrra.
2.4.2.2.2 Takistused

Nitena vlja toodud kontseptuaalset lahendust on praktiliselt vimatu realiseerida. Takistus seisneb selles, et puudub vimalus tpselt ajastada kaadri hankimise protsessi alustamist teises limes. Objektide tuvastuse ning muude allssteemide kosteajad olenevad videosisendi visuaalsest keerukusest (vaatevlja kuuluvate objektide rohkus, valgustustingimused jms). Sarnane mju avaldub ka mitmetele teistele allssteemidele. Kaadri hankimise alustamist tuleks ajastada tpselt nii, et operatsioon lppeks heaegselt mingi kindla protsessiga programmi peavoos (olemasoleva ssteemi puhul kujutise kuvamisega) see on lihtsal viisil praktiliselt teostamatu, sest puudub vimalus prognoosida nimetatud protsesside ajalisi kestvusi. Teoreetiliselt oleks vimalik luua algoritm, mis hindaks videokaadri keerukust ning suudaks tuletada hinnangulisi eeldatavaid kosteaegu niteks objektide tuvastusele vi kujutise kuvamisele selline info oleks abiks antud kontseptuaalse lahenduse loomisel. See lisaks 48

programmile arvutusmahtu ning tkindlus oleks vaieldav. Autor kavatseb nimetatud kontseptsioonile tuua sisse tiendused, et saada toimiv ning robustne lahendus.
2.4.2.3 Teostus Realiseeritud lahendus

Joonis 22: Realiseeritud uuendused eelnevalt kirjeldatud kontseptuaalse lahenduse tiustatud versioon

49

Joonis 22 kirjeldab realiseeritud tiendusi kaadri hankimise allssteemis. Parenduste eesmrgiks oli programmi summaarse judluse tstmine. Lahendus phineb eelnevalt vljatoodud kontseptuaalsel lahendusel, kuid omab mitmeid tiendusi, mille abil lahendati ilmnenud probleemid takistuste ja kitsendustega.
2.4.2.3.1 Phimte ning iseloomustus

ldine: Ssteemis on kaks lime, millest ks on orienteeritud ainult kaadri laadimisele kaamerast. Mlemas limes toimuvad jrjepidevad tsklilised protsessid, mis ei ole omavahel snkroonis ning on tiesti sltumatud. Mlemad kestavad katkematult kuni programmi t lpuni. Lim #2 (Kaadri hankimine) Kaadri hankimise lime peamiseks komponendiks on tskkel, milles toimub lakkamatu vrskete kaadrite laadimine kaamerast. Selline disainimuster on tehisngemises tuntud kui ring acquisition ning smboliseeribki seda, et kaadri hankimise tskkel kib konstantselt ringi [4]. Hangitud kaadrite hoiustamiseks on kaks hekaadrilist puhvrit, kuhu kordamda sisestatakse kaamerast saadud kaadrid. Eelmine puhvris olev kaader kirjutatakse le ning jb kasutamata. Vahelliks pea programmivoo ning kaadri hankimise lime vahel on viimase koosseisu kuuluv komponent kaadrite vljastamiseks. Kaadrite edastamiseks pealimesse kasutatakse kuhjuvat lhenemist, mida hallatakse phimttel: viimasena sisse ning esimesena vlja. Selline printsiip on tuntud LIFO loogika nime all [25] (LIFO last in, first out). Kaadri vljastaja teeb kindlaks, millisesse kahest puhvrist oli viimati paigutatud vrske kaader, ning edastab selle. Kaadri vljastamisel toimub olemasoleva kujutise lugemine puhvrist (operatiivmlust), mis on kiire protsess. Eeldatav kestvus olemasoleva riistvara puhul <1,5ms. Lim #1 (Pealim) Pealimes toimib kik sarnaselt esialgsele ssteemile (selle ainsas limes), kuid kaadri hankimise protsess on asendatud prdumisega kaadri vljastaja poole. 50

2.4.2.3.2

Lahenduse tehnilised tunnusjooned

Protsesside eraldamiseks paralleelsesse lime kasutati Qt teegi vahendit QThread [26]. Qthread on platvormist sltumatu viis programmilimede haldamiseks. QThread funktsionaalsuse kasutuselevtt oli tehtud Qt-OpenCV-Multithreaded [22] projekti eeskujul, kus sarnase eesmrgi titmiseks kasutati just seda vahendit. Autor lhtus ka eesmrgist kasutada just Qt alternatiive mitmelimelise lahenduse implementeerimiseks. Botmaster platvormis on sna palju Qt teegil phinevat funktsionaalsust ning arendajate jaoks on kindlasti mugav, kui programmi erinevad osad on htses stiilis. Qthreadi iseloomustus mugav liides vimaldab: [27] Lihtsalt ning kiiresti luua funktsionaalsusi, mis peavad olema tidetud eraldi limes. Prida infot iga lime oleku kohta: jooksev, lpetatud, ootamine. Juhtida lime: kivitamine, peatamine. Seadistada igat eraldiseisvat lime: prioriteet, virnmlu suurus jms. Seada limede prioritiseerimiseks 8 erinevat taset. Hallata signaale limede vahel.

Kaadri laadimiseks kaamerast ning kaadrite hoiustamiseks puhvrites on kasutusel samad printsiibid ja andmestruktuurid, mis esinevad ka esialgses Botmaster platvormis.
2.4.2.3.3 Lahenduse vljattamine, silumine ning testimine

Lahenduse realiseerimiseks loodi mitu prototpi. Alustatud oli he puhvriga. Lime muutujate lukustamist testiti samuti erinevate Qt teegi semafor-vahenditega nagu QMutex vi QReadWriteLock [26]. Keeruline puhvriloogika, kus toimus katkematu kaadrite kirjutamine samasse puhvrisse ning selle tttu ka pidev elementide olekute muutumine, ei tundunud autorile piisavalt hea lahendus. sna peagi juti lahenduseni, kus on kaks ksteisest sltumatut hekaadrilist puhvrit, kuhu kaadrite kirjutamine toimub kordamda. Vrskeima pildiga puhver ei ole kaadri hankimise lime poolt lukustatud ning tidab pstitatud eesmrgi kiire kaadri edastamine pealime.

51

2.4.2.3.4

Lahendusega kaasnevad krvalmjud ssteemile

Programmi kikide muude tegevustega samaaegselt toimub vrskelt lisandunud limes intensiivne tegevus - pidev kaadrite laadimine kaamerast ning salvestamine. Selle tulemusena on kasvanud arvutusmaht he ajahiku kohta ning koormus protsessorile. Robotite riistvaral on kahetuumaline protsessor, kuid siiski osade protsesside puhul vib theldada aeglustumist. See on phjuseks, miks autor on seni kasutanud vimalike lahenduste analsimisel snapaari ideaalne tulemus - parima vimaliku tulemuse prognoosimiseks ei vetud arvesse lahenduse vimalikku negatiivset mju muudele protsessidele. Mdapsmatu krvalnhtuse mju minimeerimise eesmrgil tiendas autor ring aquisition mustriga lahendust sna lihtsamoelise, kuid nutika loogikaga. Vahetult prast kaadrivljastaja komponendi poole prdumist hakati katkestama lhikeseks ajaks kaadrite laadimist puhvritesse. Kaadrite hankimise protsessi lhiajaline hangumine kujutise ttlemise operatsioonide alguses aitas vhendada koormust protsessorile. Kirjeldatud lhenemisviis ning selle edasiarendus vib olla vga kasulik suurema resolutsiooniga videovoogude puhul, kus ttlemisele kuluv aeg on pikem ning etteaimatavam. Tenoliselt on see potentsiaalne negatiivne mju suhteliselt marginaalne ning mtmistulemused nitavad, et lahenduse abil saavutati siiski ldine judluse vit.

52

2.4.2.3.5

Anals

platvormi

parendatud

videottluse

komponendi

judlusele mitmelimeline lahendus


TULEMUSED Esialgne ssteem vs. tiustatud mitmelimeline lahendus
Resolutsioon FPS Vahelejetud kaadrid enne Mtmise algust Mdetud kaadrite arv Protsess Kaader (Kik kokku) Kaadri hankimine Objektide tuvastus Kujutise kuvamine Gaussi filter RGB-HSL Konverteerimine Musta joone tuvastus Pallituvastus Vrava tuvastus 1 Vrava tuvastus 2 Statistika kandmine pildile Visuaalsete kuj kandmine pildile Kaadrisageduse kalkuleerimine Vrava re tuvastus (Musta joone tuvastuse lisa) Pildiobjektide vrtustamine procfunct_stor_crt?! Mis see on ROI mramine

640x480px
Esialgne 19 90 120 Tiustatud 23 90 120

Ajaline kestv. (ms) Efekt. Vit % Avg_ms Avg_ms 52.28 44.14 -8.14 +15.57% 14.14 1.3 -12.84 +90.81% 13.52 14.49 +0.97 -7.17% 7.47 9.51 +2.04 -27.31% 7.33 8.1 +0.77 -10.50% 7.16 7.86 +0.70 -9.78% 4.55 4.94 +0.39 -8.57% 3.2 3.42 +0.22 -6.88% 2.92 3.06 +0.14 -4.79% 2.75 2.94 +0.19 -6.91% 0.34 0.4 +0.06 -17.65% 0.1 0.12 +0.02 -20.00% 0.04 0.06 +0.02 -50.00% 0.04 0.003 0.003 0.005 0.04 0.004 0.003 0.005 0 +0.001 0 0 0% 33.33% 0% 0%

Summaarne ssteemi judluse tus: 15.57% ! (640x480px)


14.29% 5.09% 25.86% 14.02% 13.70% 6.52% 32.83% 17.81% 27.05% 21.55% 2.95% 18.35%

Joonis 23: kosteaegade kestvuste suhe, esialgne ssteem. 640x480p

Joonis 24: kosteaegade kestvuste suhe, tiustatud mitmelimeline lahendus. 640x480p

NB! Sektordiagrammi lilla tulba koosseisu on lisatud ka kik masinngemise komponendi mtmise skoobist vlja jnud protsessid. Samuti ka platvormi muud kosteajad: roboti juhtloogika titmine, suhtlus kontrolleriga jms.

53

TULEMUSED Esialgne ssteem vs. tiustatud mitmelimeline lahendus


Resolutsioon FPS Vahelejetud kaadrid enne Mtmise algust Mdetud kaadrite arv Protsess Kaader (Kik kokku) Kaadri hankimine Objektide tuvastus Kujutise kuvamine Gaussi filter RGB-HSL Konverteerimine Musta joone tuvastus Pallituvastus Vrava tuvastus 1 Vrava tuvastus 2 Statistika kandmine pildile Visuaalsete kuj kandmine pildile Kaadrisageduse kalkuleerimine Vrava re tuvastus (Musta joone tuvastuse lisa) Pildiobjektide vrtustamine procfunct_stor_crt?! Mis see on ROI mramine

640x240px
Esialgne 26 90 120 Tiustatud 41 90 120

Ajaline kestv. (ms) Efekt. Vit % Avg_ms Avg_ms 37.13 24.12 -13.01 +35.04% 14.42 1.2 -13.22 +91.68% 7.04 7.04 0 0% 4.17 4.23 +0.06 -1.44% 3.81 3.89 +0.08 -2.10% 4.88 4.96 +0.08 -1.64% 2.45 2.48 +0.03 -1.22% 1.45 1.46 +0.01 -0.69% 1.61 1.59 -0.02 +1.24% 1.41 1.4 -0.01 +0.71% 0.37 0.35 -0.02 +5.41% 0.06 0.07 +0.01 -16.67% 0.04 0.05 +0.01 -25.00% 0.04 0.003 0.003 0.005 0.04 0.003 0.003 0.005 0 0 0 0 0% 0% 0% 0%

Summaarne ssteemi judluse tus: 35% ! (640x240px)


11.23% 7.57% 38.84% 4.98% 17.54% 11.61% 18.96% 13.14% 10.26% 29.19% 16.13%

20.56%

Joonis 25: kosteaegade kestvuste suhe, esialgne ssteem. 640x240p

Joonis 26: kosteaegade kestvuste suhe, tiustatud mitmevooline lahendus. 640x240p

NB! Sektordiagrammi lilla tulba koosseisu on lisatud ka kik masinngemise komponendi mtmise skoobist vlja jnud protsessid. Samuti ka platvormi muud kosteajad: roboti juhtloogika titmine, suhtlus kontrolleriga jms.

54

Mtmistulemuste levaade Parendatud ssteemi mtmistulemused vastasid ootustele. Ilmnesid mitmed huvitavad tendentsid. ldine Suurenenud arvutusmahud ning tusnud koormus protsessorile avaldas negatiivset mju peaaegu kikidele pealimes kulgevatele allssteemidele. nneks uue lahenduse aeglustav mju teistele protsessidele on vga vike enamuse protsesside puhul praktiliselt tajumatu. Tiustatud allssteem on eraldi vaadeldavate protsesside seas nd lhima kosteajaga (Eraldi vaadeldavad protsessid esinevad sektordiagrammides). Kolm kige aeglasemat allssteemi: Objektide tuvastus, kaadri kuvamine ning RGB-HSL konversioon Testid resolutsiooniga: 640x480px Kaadri hankimise ehk tiustatud allssteemi efektiivsus tusis ~91%. Kosteaeg vhenes ~13,2ms vrra ning on alla 1,5ms. Suurim efektiivsuse langus tabas kujutise kuvamise allssteemi. he kaadri kuvamine on muutunud ~2ms aeglasemaks (efektiivsus langes ~27,5%). Platvormi summaarne efektiivsus tusis ~16%. Kaadrisagedus tusis 4 kaadri vrra ning on ~23fps. Testid resolutsiooniga: 640x240px Kaadri hankimise ehk tiustatud allssteemi efektiivsus tusis ~92%. Kosteaeg vhenes ~13ms vrra ning on alla 1,5ms. Suurim efektiivsuse langus tabas gaussi filtri ning RGB-HSL konversiooni allssteemi. Mlemate protsesside kulgemine on muutunud ~0.1ms aeglasemaks. See on vga vike erinevus. Vib elda, et antud resolutsiooni puhul on negatiivne mju teistele ssteemidele minimaalne. Platvormi summaarne efektiivsus tusis 35%. Kaadrisagedus tusis 15 kaadri vrra ning on ~41 fps.

55

2.4.3

Kujutise kuvamine ssteemi paremaks judluseks optimeeritud lahendus


Vrreldes teiste ksitletavate

protsessidega, kujutise vljatrkkimise eripra seisneb selles, et see ei tekita masinngemise seisukohast mingit vrtust. Robot ise liideses kuvatud pilti ei kasuta. Reaalaja video mngimine on kasulik masina loojatele: aitab mista, mida neb robot. Roboti arendajad kasutavad reaalset otsepilti roboti ruumilise ngemise valemite loomisel, vrvitundlikkuse kalibreerimisel, roboti testimisel ning roboti sihi etteandmisel enne vistluse algust. Alates Joonis 27: Olenemata roboti juhtloogika keerukusest momendist, kui mobiilne robot on ning olekute arvust, kaadri kuvamine on otstarbekas vistlustules ning liigub iseseisvalt hes ainsas olekus enne starti. ringi, on kaadrite kuvamine ainult liigne koormus. Nagu on ilmnenud varasematest mtmistulemustest Lahendus Autor realiseeris mned triviaalsed tiendused. Uuendus seisneb selles, et alates roboti vljumisest kige esimesest, stardivalmis olekust, kaadreid kuvatakse kas madala sagedusega vi ei kuvata ldse. Teisisnu, videovoo kuvamine programmiliideses lpetatakse kohe, kui robot hakkab vistlusvljakul iseseisvalt tegelema. Vga lihtne lahendus vimaldab roboti loojal/kivitajal enne stardisignaali kalibreerida tehisngemise vrvitaju ning viia lbi muud visuaalsest vaatevljast olenevad seadistused. Samal ajal vistlustingimustes on roboti efektiivsus krgem. Antud lahendus on arendaja poolt seadistatav. Niteks testimise eesmrgil on vimalik iga hetk jlle llitada sisse kaadrite pidev kuvamine. kaadrite kuvamine on sna arvutusmahukas operatsioon, kuid tenoliselt ei ole Botmaster platvormi loojad seda protsessi sellise pilguga testinud.

56

2.4.3.1.1

Anals

platvormi

parendatud

videottluse

komponendi

TULEMUSED Esialgne ssteem vs. tiustatud mitmelimeline lahendus + optimeeritud kuvamise lahendus
Resolutsioon FPS Vahelejetud kaadrid enne Mtmise algust Mdetud kaadrite arv Protsess Kaader (Kik kokku) Kaadri hankimine Objektide tuvastus Kujutise kuvamine Gaussi filter RGB-HSL Konverteerimine Musta joone tuvastus Pallituvastus Vrava tuvastus 1 Vrava tuvastus 2 Statistika kandmine pildile Visuaalsete kuj kandmine pildile Kaadrisageduse kalkuleerimine Vrava re tuvastus (Musta joone tuvastuse lisa) Pildiobjektide vrtustamine procfunct_stor_crt?! Mis see on ROI mramine

judlusele optimeeritud kuvamise lahendus (+mitmelimeline lah.)

640x480px
Esialgne Tiustatud 19 28 90 120 90 120

Ajaline kestv. (ms) Efekt. Vit % Avg_ms Avg_ms 52.28 34.96 -17.32 +33.13% 14.14 0.77 -13.37 +94.55% 13.52 14.6 +1.08 -7.99% 7.47 0.003 -7.47 +99.96% 7.33 7.46 +0.13 -1.77% 7.16 9.32 +2.16 -30.17% 4.55 5.14 +0.59 -12.97% 3.2 3.36 +0.16 -5.00% 2.92 3.07 +0.15 -5.14% 2.75 2.9 +0.15 -5.45% 0.34 0.39 +0.05 -14.71% 0.1 0.12 +0.02 -20.00% 0.04 0.04 0 0% 0.04 0.003 0.003 0.005 0.02 0.003 0.004 0.005 -0.020 0 +0.001 0 +50.00% 0% -33.33% 0%

Summaarne ssteemi judluse tus: 33,2% ! (640x480px)


14.29% 5.09% 25.86% 14.02% 13.70% 41.76% 26.66% 27.05% 2.20% 8.03% 0.01% 21.34%

Joonis 29: kosteaegade kestvuste suhe, esialgne ssteem. 640x480p

Joonis 28: kosteaegade kestvuste suhe, tiustatud mitmelimeline lahendus + optimeeritud kuvamise lahendus. 640x480p

NB! Sektordiagrammi lilla tulba koosseisu on lisatud ka kik masinngemise komponendi mtmise skoobist vlja jnud protsessid. Samuti ka platvormi muud kosteajad: roboti juhtloogika titmine, suhtlus kontrolleriga jms.

57

TULEMUSED Esialgne ssteem vs. tiustatud mitmelimeline lahendus + optimeeritud kuvamise lahendus
Resolutsioon FPS Vahelejetud kaadrid enne Mtmise algust Mdetud kaadrite arv Protsess Kaader (Kik kokku) Kaadri hankimine Objektide tuvastus Kujutise kuvamine Gaussi filter RGB-HSL Konverteerimine Musta joone tuvastus Pallituvastus Vrava tuvastus 1 Vrava tuvastus 2 Statistika kandmine pildile Visuaalsete kuj kandmine pildile Kaadrisageduse kalkuleerimine Vrava re tuvastus (Musta joone tuvastuse lisa) Pildiobjektide vrtustamine procfunct_stor_crt?! Mis see on ROI mramine

640x240px
Esialgne 26 90 120 Tiustatud 49 90 120

Ajaline kestv. (ms) Efekt. Vit % Avg_ms Avg_ms 37.13 20.25 -16.88 +45.46% 14.42 0.81 -13.61 +94.38% 7.04 8.07 +1.03 -14.63% 4.17 0.004 -4.17 +99.9% 3.81 4 +0.19 -4.99% 4.88 4.58 -0.30 +6.15% 2.45 2.89 +0.44 -17.96% 1.45 1.92 +0.47 -32.41% 1.61 1.58 -0.03 +1.86% 1.41 1.58 +0.17 -12.06% 0.37 0.4 +0.03 -8.11% 0.06 0.07 +0.01 -16.67% 0.04 0.04 0 0% 0.04 0.003 0.003 0.005 0.02 0.004 0.004 0.005 -0.02 +0.001 +0.001 0 -50% -33.33% -33.33% 0%

Summaarne ssteemi judluse tus: 45,5% ! (640x240px)


11.23% 7.57% 38.84% 4.00% 13.76% 0.02% 19.75%

18.96% 13.14% 10.26%

39.85%

22.62%

Joonis 30: kosteaegade kestvuste suhe, esialgne ssteem. 640x240p

Joonis 31: kosteaegade kestvuste suhe, tiustatud mitmelimeline lahendus + optimeeritud kuvamise lahendus. 640x240p

NB! Sektordiagrammi lilla tulba koosseisu on lisatud ka kik masinngemise komponendi mtmise skoobist vlja jnud protsessid. Samuti ka platvormi muud kosteajad: roboti juhtloogika titmine, suhtlus kontrolleriga jms.

58

Mtmistulemuste levaade Parendatud ssteemi mtmistulemused vastasid ootustele. ldine Tiustatud allssteem on eraldi vaadeldavate protsesside seas nd lhima kosteajaga, sest mtmise ajal (testitakse roboti iseseisva tegevuse olekut) kosteaeg peaaegu puudus (Eraldi vaadeldavad protsessid esinevad sektordiagrammides). Kolm kige aeglasemat allssteemi: Objektide tuvastus, RGB-HSL konversioon ning gaussi filter. Testid resolutsiooniga: 640x480px Kaadri hankimise ehk tiustatud allssteemi efektiivsus tusis 99,9%. kosteaeg on peaaegu olematu. Suurim efektiivsuse langus oli registreeritud objektide tuvastuse allssteemis. Objektide tuvastamine on linud ~1ms aeglasemaks (efektiivsus langes ~8%). Platvormi summaarne efektiivsus tusis ~33%. Kaadrisagedus tusis 9 kaadri vrra ning on ~28 fps. Testid resolutsiooniga: 640x240px Kaadri hankimise ehk tiustatud allssteemi efektiivsus tusis ~99,9%. kosteaeg on peaaegu olematu. Suurim efektiivsuse langus oli registreeritud objektide tuvastuse allssteemis. Objektide tuvastamine on linud ~1ms aeglasemaks (efektiivsus langes ~15%). Platvormi summaarne efektiivsus tusis 45,5%. Kaadrisagedus tusis 23 kaadri vrra ning on ~49 fps.

59

3 Edaspidised vljavaated
Autor kavatseb prast IT Kolledi lpetamist jtkata tegevust robotiklubi liikmena ning panustada organisatsiooni tulevikku. Eesmrgiks on jtkata klubi esindamist vistleja rollis ning toetada ka uusi liikmeid jagades neile teadmisi ja kogemusi. Kindlasti on kavas jtkata td seoses Botmaster platvormi tiendamisega. Vljakutsete seas on nii edastpidine ssteemi funktsionaalsuse vi judluse arengupotentsiaal, aga ka vajadus optimeerida tarkvara hildumiseks uute riistvaramoodulitega. Iga-aastaste rutiinide seas on vajadus lisada vi tiendada masinngemise algoritme. Lput sisukas analsi peatkk oli kirjutatud lootusega luua tulevastele platvormi tehisngemise komponendi arendajatele ppematerjal/ dokumentatsioon platvormi videottlemise kohta. Praktilise teostuse peatkk vib anda ideid, kuidas analsida, realiseerida ning testida uusi lahendusi. Jrgnevad kaks alapeatkki annavad lhikese levaate edaspidistest vljavaadetest antud lput kontekstis masinngemise ssteemi seisukohast. Diplomit kigus tehtud arvutused nitavad, et prast rakendatud tiendusi on kosteaja poolest kige aeglasemaks allssteemiks jnud objektide tuvastus. Autor on realiseerinud mitu phjalikumalt testimata prototpi, mis annavad lootust tsta probleemse komponendi ning ssteemi summaarset judlust veelgi.

60

3.1 Objektide tuvastus - binaarpiltide vrtustamise optimeeritud lahendus


Autor teostas staatilise analsi Botmaster platvormis realiseeritud objektide tuvastamise algoritmidele objektituvastuse ning funktsioonidele. vib Abstraheerides masinngemise komponendi funktsionaalsusi, mrgata, et nad kik (erinevate objektide tuvastamiseks on eraldiseisvad funktsioonid) alluvad tpilisi tielikult teatud samme. identsed mustrile Mned ning sisaldavad on neb selles sammudest

autor

potentsiaali lahenduse efektiivsuse tstmiseks. Joonis 33 kirjeldab objektituvastuse

funktsioonides esinevaid samme. Punasega on mrgitud sammud, mis on identsed kikide Joonis 32: Lihtsustatud joonis tpilisest objektide puhul. Rohelisega on mrgitud sammudest objektide tuvastamisel Botmaster sammud, mille loogika on tihedalt seotud iga platvormis konkreetse tuvastatava objekti tbi individuaalse iseloomuga. Binaarpildi vrtustamise sammus kiakse lbi kik HSL vrviruumis oleva kaadri pikslid ning algoritm valib vlja sobivamad. Aktsepteeritud pikslite asukohad kantakse binaarpildile, mis on sisendiks jrgnevale objektituvastamise loogikale. Praeguse implementatsiooni probleem seisneb selles, et igat tpi objektide tuvastamiseks kontrollitakse kik kaadri punktid iga kord uuesti ning see on sna mahukas protseduur. Autor panustab vimalusele eraldada (mainitud funktsioonidest) binaarpildi vrtustamise funktsionaalsus ning teostada see vaid hel korral enne objektide tuvastamise funktsioonide vljakutsumist. Lahendus thendaks seda, et he sammuna kiakse lbi kik HSL vrviruumi kujutise pikslid (ainult ks kord kogu kaadri kohta) ja luuakse eraldi binaarpildid kohe kikidele objektituvastamise funktsioonidele.

61

Lahenduse vlu seisneb selles, et mida rohkem erinevaid objekte on tarvis tuvastada (lesande suurem keerukus), seda suurem on efektiivsuse vit vrreldes praeguse ssteemiga.

Joonis 33: Vimalus teha tulevikus objektide tuvastamine veel efektiivsemaks. Illustreeriv nide kahe erinevat tpi objektide tuvastamisega 62

3.2 Objektide tuvastus mitmelimeline lahendus


Peatkis, kus autor ksitles mitmelimeliste lahenduste realiseerimise vimalusi Botmaster platvormis, oli vlja toodud vimalik lahendus, mis ti olemasolevasse ssteemi kaks tiendust. Esimene nendest, kaadri hankimine eraldi limes, sai diplomit kigus realiseeritud, testitud ning dokumenteeritud. Teine, objektide tuvastus eraldiseisvates limedes, on prioriteet, mille elluviimine on kavas juba lhitulevikus.

Joonis 34: Kik objektituvastuse funktsioonid kivitatakse paralleelselt

63

4 Lput tulemus
Diplomit tulemusena: Valmis phjalik tehniline anals Botmaster platvormi masinngemise komponendile. Lput peatkk 1 sobib ppematerjaliks ning dokumentatsiooniks platvormi tulevastele arendajatele, kes soovivad keskenduda videottluse funktsionaalsuste tiendamiseks. Ttati vlja mugav ning usaldusvrne videottluse judluse mtmise metoodika ning automatiseeritud mtmisvahend. Realiseeritud automaattestimise raamistik vib olla kasutatav tulevikus ka muude lilhikeste kosteaegadega (0.001-99ms) ssteemide komponentide judluse testimiseks. Pstitati kolm hpoteesi platvormi ning selle tehisngemise komponendi allssteemide judluse tstmise vimalikkusest. Ssteemi tiustati kahe uuendusega, mis parandasid platvormi judlust. Tnu implementeeritud tiendustele, kaks pstitatud hpoteesi osutusid igeks. Pandi paika edaspidine plaan Botmaster platvormi videottluse komponendi arenduseks. Plaan sisaldab konkreetseid vljapakutuid lahendusi mille realiseerimine ning testimine annab vastuse kolmandale lputs pstitatud hpoteesile. Lput eesmrk ehk "Botmaster" platvormi masinngemise komponendi judluse tstmine, sai edukalt tidetud. Realiseeritud lahendused aitasid tsta platvormi judlust kuni 45,5%. 64

5 Kokkuvte
Diplomits lahendatavaks probleemiks on arvutusmahuka ja ajakuluka masinngemise komponendi judlus ning selle piirav mju mobiilsete robotite ldisele reageerimisvimele ning liikumiskiirusele. Videotuvastuse komponent on osa EIK Robootikaklubi juhtimisplatvormist Botmaster. Botmaster platvorm on EIK Robootikaklubi poolt disainitud, aastaid arendatud ning aktiivses kasutuses olev paindlik robootikaplatvorm. Platvormi kasutavad erinevad rahvusvahelisel robotivistlusel osalevad robotid. Video ttlemine reaalajas on kaameraga varustatud robotitele esmaseks sisendiks mbritseva keskkonna kohta ning roboti juhtloogika tidab kske vastavalt pildittluse vljundile. Sellest tulenevalt piirab platvormi tehisngemise komponent olulisel mral roboti summaarset judlust. Madala kaadrisagedusega videotuvastus ei vimalda robotitel reageerida kiirelt muutustele mbruskonnas ning kontrollida ennast adekvaatselt suurtel sidukiirustel. Samuti on madala kaadrisageduse puhul raske optimeerida roboti liigutuste iseloomu ning vltida eksimuse vimalusi. Diplomit eesmrgiks oli Botmaster platvormi videotuvastuse judluse suurendamine, et parandada platvormi kasutatavate robotite latentsust. Pildi hankimiseks, ttlemiseks ning

65

objektide tuvastamiseks kuluv lhem kosteaeg annaks EIK robotitele hea eelise teiste vistlustel konkureerivate robotite ees. Diplomit kigus analsis autor probleemi ning uuris mujal maailmas analoogsete probleemide lahendamiseks kasutatud meetodeid. htlasi ttas autor vlja mugava metoodika Botmaster platvormi videotuvastuse komponendi judluse mtmiseks ning analsimiseks. Spetsiaalse automatiseeritud mtmisvahendi loomine oli osa praktilisest teostusest. Loodud judluse automaattestimise raamistik on vga tpne ning sobib kasutamiseks ka muude lhikeste kosteaegade mtmiseks (<1s). Botmaster platvormi videotuvastuse komponent jaotati detailselt eraldiseisvateks operatsioonideks. Analsimisel mdeti iga kaardistatud protsessi kosteaegu ja selle tulemusena leiti operatsioonid, mida tasub tiustada. Pstitati kolm hpoteesi erinevate masinngemise allssteemide kohta: EIK Robootikaklubi roboti platvormi Botmaster videotuvastuse ssteemis esineb mitmeid operatsioone, mida on vimalik ning tasub tistada. Eeldatavaks tulemuseks oli roboti videottluse judluse kasv, mis vljendub roboti masinngemise kaadrisageduse tusus. Pakuti vlja detailsed lahendused platvormi tiustamiseks nii antud diplomit raames kui ka edaspidistes arenduse iteratsioonides. Neljas vljapakutud uuenduses olid aluseks: protsesside paralleelne titmine eraldi limedes, algoritmide optimeerimine ning vabanemine liigsetest operatsioonidest. Peale parenduste realiseerimist mdeti samades tingimustes ning samal riistvaral ttava Botmaster platvormi tehisngemise komponendi kosteaega uuesti. Mtmise kigus selgus, et vljapakutud parendused avaldasid judlusele positiivset mju ning masinngemise efektiivsus paranes. Diplomits pstitatud hpoteesid osutusid igeks ning seatud eesmrgid said tidetud. Diplomit autoril nnestus ideaalsetes tingimustes tsta platvormi efektiivsust kuni 45,5%. Tegemist on EIK Robootikaklubi jaoks pidevas tiustamisfaasis oleva platvormiga. Autor seadis paika plaanid seoses edaspidiste ssteemi tiendustega. Botmaster platvormi ning selle videottluse rakenduse arendamine jtkub ka prast kesoleva diplomit valmimist ning autor kavatseb ka tulevikus uuringutega jtkata ning anda edasi teadmised uutele klubi liikmetele.

66

6 Enhancement Performance

of based

Real-time on

Video

Processing Information

Estonian

Technology College Robotics Club Botmaster Platform


The purpose of this diploma thesis was to increase the performance of real-time video processing system used in robotics. The system has been developed specially for autonomous mobile robots based on The Estonian Information Technology College (ITC) robot control platform called Botmaster. The machine vision feature performs computationally intensive and time-consuming processes that set limits to overall robots' responsiveness and achievable moving speeds. Botmaster robot control platform is a flexible software framework designed by EIC Robotics Club. It has been developed for many years and is being actively used on different purpose robots that compete on international robotics competitions. Real-time video processing is the main informational input for high level robots equipped with digital camera. Robot control logic layer generates behavior commands in accordance with the output of computer vision component. Therefore the machine vision feature significantly constraints the overall robot performance. Low framerate does not allow to gain rapid reaction time upon changes in surrounding environment or obtain stability and control over robot on high speeds. In addition, low framerate makes it very complicated to optimize the nature of robot's movements and avoid mistakes robot's behavior.

67

Better latency of frame capture, image processing and object detection would provide an advantage for EIC robots over other competitive machines. During the thesis, author analyzed the problem and investigated best practises being used to solve similar system enhancement challenges around the world. In addition, author developed a convenient methodology for measurement and analysis of computer vision performance in Botmaster platform. The design of special automated measurement tool was a part of the practical realization in this thesis. Created performance automated-testing framework is extremely accurate (nanosecond precision) and can be used for measuring rapid latencies (<1s) in other systems. The machine vision component was split in detail into many separate operations. Every single process and its latency were analysed several operations that must be improved were pointed out. Hypoteses were proposed about machine vision component's sub-processes: computer vision component in Botmaster robot control platform contains several operations that can and must be improved. An expected result was to achieve growth in real-time video processing efficiency that would lead to higher framerate of machine vision. Author provided detailed system improvement solutions for implementation during this particular thesis and in future development iterations. Proposed enhancement updates were based on: concurrent execution of processes in separate threads, optimization of algorythms and displacement of unnecessary operations. The development of provided solutions was followed by performance measurement of the system again. Tests were executed in similar conditions and on the same hardware as the initial system. Performance testing results displayed that proposed solutions caused positive impact on real-time video processing performance and efficiency of machine vision had been increased. Hypotheses proposed in this thesis were proved to be correct and established goal was achieved. The author of this diploma thesis succeeded in increasing the overall effectiveness of platform in ideal conditions by approximately 45,5%. The platform is being continuously techincally complemented by EIC Robotics Club. Author has arranged development plans for near future. The development of Botmaster platform and

68

its machine vision component will be continued after completion of this thesis and author is intending to continue researches and provide knowledge to new robotics club members and developers.

69

7 Kasutatud allikad
1. Silver Kuusik, Eesti Infotehnoloogia Kolledi Robootikaklubi roboti juhtimisplatvormi tiustamine. (2011) Eesti Infotehnoloogia Kolled, Eesti 2. Ingliskeelsete info- ja sidetehnoloogia terminite seletav snaraamat (25.05.2013). [www.vallaste.ee] 3. Intel Corporation: Intel Image Processing Library - Quick Reference, (1997). 4. Alexander Hornberg (2006). Handbook of Machine Vision. WILEY-VCH Verlag Gmbh & Co KGaA: Weinheim, Germany. 5. Matrox Machine vision, image analysis and medical imaging software development kit (25.05.2013). [http://www.matrox.com/imaging/en/products/software/mil/] 6. Robert Love (2007). Linux System Programming: Talking Directly to the Kernel and C Library. O'Reilly Media: Sebastopol, CA, United States of America. 7. Christopher G. Lasater (2007). Design Patterns. Worldware Publishing, Inc.: Plano, United States of America. 8. Eesti Infotehnoloogia Kolledi [http://robot.itcollege.ee/?q=node/5] Robootikaklubi. Saavutused (24.05.2013).

9. Robotex: Where brains and metal meet (24.05.2013). [www.robotex.ee] 10. Robovision (24.05.2013). [http://wiki.itcollege.ee/index.php/Robovision] 11. Gary Bradski and Adrian Kaehler (2008). Learning OpenCV: Computer Vision with the OpenCV Library. OReilly Media, Inc.: Sebastopol, California, United States of America. 70

12. Kujutis: PD Photo.org - Royalty Free, Public Domain, Stock Photos: Grant Tetons Barns (23.05.2013). [http://pdphoto.org/PictureDetail.php?mat=pdef&pg=8145] 13. Mats Rjne (2003). Digital-TV via Mark, Satellit och Kabel. Studentlitteratur: Stockholm, Sweden. 14. Pakhira Malay K (2010). Computer Graphics, Multimedia And Animation. PHI Learning: Kalyani, West Bengal. 15. Kujutis: Arvuti graafika blogi: RGB_varvimudel.jpg [http://kristjanigraafika.blogspot.se/2011/01/raster-ja-vektor-varvid.html] (23.05.2013).

16. Kujutis: Wikimedia Commons, the free media repository: Hsl-hsv models.svg (24.05.2013). [http://commons.wikimedia.org/wiki/File:Hsl-hsv_models.svg] 17. Scott E. Umbaugh (2011). Digital Imaging Processing and Analysis: Human and Computer Vision. Taylor & Francis Group, LCC: Boca Raton, United States of America. 18. Intel Corporation, Willow Garage, Itseez: OpenCV v2.1 documentation, (23.05.2013). [http://opencv.willowgarage.com/documentation/c/genindex.html] 19. Ps3eye Linux (23.05.2013). [https://wiki.itcollege.ee/index.php/Ps3eye_Linux] 20. Kujutis: Photography 101 - Shutter speed, ISO and the exposure triangle: iso_settings_example3.jpg (24.05.2013). [http://zeebytes.blogspot.se/2012/09/photography101-shutter-speed-iso-and.html] 21. Kujutis: Wikimedia Commons, the free media repository: Halftone,_Gaussian_Blur.jpg (24.05.2013). [http://commons.wikimedia.org/wiki/File:Halftone,_Gaussian_Blur.jpg] 22. Nick D'Ademo: Qt-Opencv-Multithreaded Documentation, [http://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation] (25.05.2013).

23. Bo I. Sandn (2011). Design of Multithreaded Software: The Entity-Life Modeling Approach. John Wiley & Sons Inc.: Hoboken, New Yersey, United States of America. 24. Henry H. Liu (2009). Software Performance and Scalability: A Quantitative Approach. John Wiley & Sons, Inc.: Hoboken, New Jersey, United States of America. 25. Maurizio Gabbrielli, Simone Martini (2010). Programming Languages: Principles and Paradigms. Springer-Verlag: London, England. 26. Mark Summerfield (2010). Advanced Qt Programming: Creating Great Software with C++ and Qt 4. Prentice Hall: New Jersey, United States of America. 27. Digia, Nokia: Qt 4.8 Documentation: QThread Class Reference, (25.05.2013). [http://qtproject.org/doc/qt-4.8/qthread.html]

71

You might also like