VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Podobné dokumenty
Návod k použití softwaru Solar Viewer 3D

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

Algoritmizace prostorových úloh

Co je grafický akcelerátor

Připravil: David Procházka. Vertex Buffer Objects

KAPITOLA 13. Grafika a zvuk. Linux a grafika

Controlweb. Úvod. Specifikace systému

11 Zobrazování objektů 3D grafiky

Hierarchický model Josef Pelikán CGG MFF UK Praha. 1 / 16

Připravil: David Procházka. Projekce


13 Barvy a úpravy rastrového

9 Prostorová grafika a modelování těles

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA

Programátorská dokumentace

Modelování blízkého pole soustavy dipólů

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Kalibrační proces ve 3D

Připravil: David Procházka. Základy OpenGL

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY. MRBT Robotika

Reprezentace 3D modelu

Tvorba 3D výukových aplikací pomocí technologie

PROJEKT 3 2D TRAJEKTORIE KAMERY SEMESTRÁLNÍ PRÁCE DO PŘEDMĚTU MAPV

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

ak. rok 2013/2014 Michal Španěl,

Afinní transformace Stručnější verze

Základní informace. Operační systém (OS)

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ. Martin Štroner, Bronislav Koska 1

Základní nastavení. Petr Novák

TECHNICKÁ UNIVERZITA V LIBERCI FAKULTA UMĚNÍ A ARCHITEKTURY. Studijní program: B8206 Výtvarná umění. Obor: Vizuální komunikace BAKALÁŘSKÁ PRÁCE

Elementární křivky a plochy

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

Středoškolská technika SCI-Lab

Sítě SFN Systém pro analýzu a vizualizaci pokrytí a rušení vysílacích sítí

SEBELOKALIZACE MOBILNÍCH ROBOTŮ. Tomáš Jílek

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

Geometrie pro počítačovou grafiku - PGR020

Free and open source v geoinformatice. Příloha 3 - Praktické cvičení R Studio

Fakulta elektrotechniky a komunikačních technologíı Ústav automatizace a měřicí techniky v Brně

SEBELOKALIZACE MOBILNÍCH ROBOTŮ. Tomáš Jílek

Obsah. Úvod do prostorového modelování 9. Prostředí AutoCADu při práci ve 3D 15 KAPITOLA 1 KAPITOLA 2

Souřadnicové prostory

Výukové texty. pro předmět. Automatické řízení výrobní techniky (KKS/ARVT) na téma

Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu

Perspektiva jako matematický model objektivu

Grafika na počítači. Bc. Veronika Tomsová

Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/

Inovace studia obecné jazykovědy a teorie komunikace ve spolupráci s přírodními vědami

Úvodem... 9 Kapitola 1 Karetních

MATLAB a Simulink R2015b

Software Form Control

Geometrické transformace pomocí matic

Autorizovaný software DRUM LK 3D SOFTWARE PRO VYHODNOCENÍ MĚŘENÍ ODCHYLEK HÁZIVOSTI BUBNOVÝCH ROTAČNÍCH SOUČÁSTÍ

DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ

DUM č. 14 v sadě. 31. Inf-7 Technické vybavení počítačů

FORTANNS. 22. února 2010

GEODETICKÉ VÝPOČTY I.

Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku.

Grafická data jsou u 2D vektorové grafiky uložena ve voxelech NEPRAVDA Grafická data jsou u rastrové grafiky uložena v pixelech PRAVDA Grafická data

Popis programu 3D_VIZ

Model šestiosého robotu v prostředí Matlab

Globální matice konstrukce

Transformace dat mezi různými datovými zdroji

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty

Diplomová práce Prostředí pro programování pohybu manipulátorů

monitor a grafická karta

Stru ný obsah. Úvod do Microsoft.NET Kapitola 1: Vývoj her a ízený kód...15

Fotogrammetrické 3D měření deformací dálničních mostů typu TOM

Transformace (v OpenGL) příklady a knihovna GLM

Geometrické algoritmy pro počítačovou grafiku

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

MRBT. Stacionární průmyslový robot EPSON C3 aplikace pro prezentaci

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

Závěrečná práce. AutoCAD Inventor (Zadání D1)

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

Zobrazování barev Josef Pelikán CGG MFF UK Praha.

Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače

TÉMATICKÝ OKRUH Softwarové inženýrství

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

Využití virtuální reality v rehabilitační péči. A. Bohunčák, M. Janatová, M. Tichá FBMI ČVUT v Praze, 1. LF UK

Úvod do mobilní robotiky AIL028

Úvod Typy promítání Matematický popis promítání Implementace promítání Literatura. Promítání. Pavel Strachota. FJFI ČVUT v Praze

Mechanika

Monitory a grafické adaptéry

Počítačová geometrie. + algoritmy DG

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION VIZUALIZACE NAMĚŘENÝCH PROSTOROVÝCH DAT DO VIRTUÁLNÍ REALITY VISUALISATION OF MEASURED SPATIAL DATA INTO VIRTUAL REALITY MRBT PROJEKT MRBT PROJECT AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Bc. Adam Ligocki doc. Ing. Luděk Žalud, Ph.D. BRNO, 2016 1

ABSTRAKT Tento dokument popisuje zázemí tvorby programu, který vykresluje prostorová data naměřená ve skupině robotiky na UAMT do brýlí virtuální reality Oculus Rift Dev. Kit 2. Vstupem programu jsou data z měření chodby, kde sídlí skupina robotiky. Tyto data jsou uložená jednak v RAW výstupu lidaru a jednak v komprimovaném octree formátu. Projekt provádí jejich čtení a překlad do trojrozměrného souřadnicového systému a následně je pomocí knihovny OpenGL a API pro virtuální realitu vykresluje do brýlí. Umožňuje tak člověku lépe chápat informace se kterými pracuje robot při svém nasazení. Zadání Vytvořte aplikaci, která bude na rozhraní Oculus Rift Development Kit 2 zobrazovat naměřená prostorová data vytvořená skupinou robotiky a umělé inteligence na UAMT. Připravte program, který bude načítat data jak v textové podobě formátu.scan a.sbatch tak i data v zkomprimované podobě souborového formátu.og3 vyvinutého v rámci skupiny robotiky. Teoretický úvod Skupina robotiky na UAMT dlouhodobě rozvíjí technologie zabývající se měřením prostředí, tvorbou map, jejich kompresí, sebe lokalizací robotů a optimalizací těchto algoritmů. Tato oblast je v dnešní době stále nedořešenou problematikou a zabývají se jí odborná pracoviště po celém světě. Na UAMT v rámci své diplomové práce [1] se velmi podrobně právě tvorbou map a zpracováním prostorových dat zabýval Ing. František Burian, Ph.D. Vytvořil algoritmus, který spojuje informace z lidaru, RGB kamery a termovizní kamery a následně takto fúzovaná data komprimuje pomocí octree komprese do kompaktního formátu. Tento projekt navazuje právě na výše zmíněnou práci, kdy si klade za cíl naměřená data interpretovat a zobrazit uživateli skrze platformu virtuální reality a poskytnout tak intuitivní způsob náhledu na data s kterými pracuje robot nasazený do reálné operace. Platforma Oculus Rift Historie stereo vidění [2] se píše od roku 1838, kdy Charles Wheatstone demonstroval princip fungování mozku na dvou vůči sobě v prostoru posunutých fotografiích. Tím dokázal vytvořit vjem prostorového vnímání obrazu. V 30. letech 19 století se pak poprvé objevila v tehdejších sience fiction autora Stanley G. Weinbaum představa brýlí, které by do každého oka dodávali jinou obrazovou informaci. V dalších letech následovaly postupně různě konstrukce strojů, které se pokoušely právě stereo vjem vytvořit pomocí dvou obrazů. První headset brýle se objevily v 1960 letech minulého století. Neposkytovali však žádnou funkci detekce pohybu hlavou. O rok později pak byla přidána i inerciální jednotka a byla možná první interakce mezi uživatelem a strojem. V nadcházejících letech proběhlo mnoho pokusů o simulaci reálného zrakového vjemu. Zkonstruovaná zařízení však neposkytovala požadovanou kvalitu zobrazení a byla příliš velká pro reálné použití. Začátkem 90 let pak například společnosti SEGA a Nintendo se pokusily o vývoj vlastních brýlí na bázi herních konzolí. Výsledky vývoje byly ale neuspokojivé a další postup byl v obou případech přerušen. Teprve technologický postup v současném miléniu, který sebou nese dramatický nárůst výpočetního výkonu a miniaturizace hardwaru umožnil vzniku mnoha projektů, které se začaly výrazně blížit stavu, kdy je možné je nasadit v reálných aplikacích. 2

K dnešnímu dni vyrábí komerční verzi brýlí virtuální, či rozšířené reality několik světových firem, jako HTC, Sony, Microsoft, Google, atd. V tomto projektu je použit hardware výrobce Oculus VR, jehož vývoj začal v roce 2014, kdy získal výraznou crowdfoundingovou podporu na serveru Kickstarter. V průběhu vývoje tvůrce vydal nejprve vývojový kit 1. Ten však trpěl výraznými nedostatky, a zejména pro nízké rozlišení nebyl hodnocen příliš kladně. Druhá generace již zaznamenala větší úspěch ze strany vývojářů a naplno ukázala možnosti nově vznikající platformy. 28. března tohoto roku firma vydala oficiálně konečnou verzi a začala jí hromadně distribuovat. Ohlasy uživatelů jsou velmi pozitivní a vyzdvihují zejména vysoké rozlišení na každém oku, kdy člověk běžně přestává vnímat jednotlivé pixely a zároveň je kladně hodnocená snímkovací frekvence 90Hz, která zpříjemňuje sledování syntetického obrazu. Srovnání vlastností Oculus Rit DK1 Oculus Rift DK2 Oculus (final) Rozlišení na oko [px] 640x800 960x1080 1080x1200 FPS [Hz] 60 75 Hz 90 Hz Úhel vidění [deg] 100 110 110 Váha [g] 380 440 470 Tabulka 1 - srovnání parametru jednotlivých Oculus Riftů Nadále však není problematika virtuální reality dořešená. Mnoho lidí stále pociťuje nevolnost při delší konzumaci obsahu z brýlí. Lze však očekávat, že tyto dílčí problémy budou v nadcházejících letech postupně odstraňovány. Nejpalčivějšími problémy jsou například to, že každý člověk má jinou rozteč oči, mnoha lidem nedělá dobře, když přestanou podprahově vnímat v obraze svůj nos, zejména pak se uživatelům dělá zle, když vidí očima jiný pohyb, než který vnímají polokruhové kanálky ve vnitřním uchu. Inerciální jednotka Oculus Rifru Obrázek 1- Oculus Rift Dev. Kit 2[5] Inerciální jednotka brýlí je sestavená z gyroskopu, akcelerometru a magnetometru. Pro zpřesnění a zamezení translačního driftu v prostoru reálného světa je v prostoru před brýlemi umístěná snímací kamera, která je pevným referenčním bodem. 3

Výstupem inerciální jednotky je deskriptor polohy a rotace hlavy vyjádřený translačním a rotačním vektorem v souřadném systému XYZ (viz obrázek 2) a rotačními úhly okolo souřadných os v intervalu (-1, 1). Úhly rotace hlavy okolo souřadných os se pak dodatečné transformují do Eulerových úhlů. Obrázek 2 - Souřadnicový systém Oculus Riftu (shodný s souřad. sys. OpenGL)[6] Pomocí těchto údajů se pak skrze matici homogenní transformace H provádí převod polohy a smyslu orientace kamery ve scéně vykreslované OpenGL z počátku do polohy odpovídající poloze hlavy uživatele. Pro výpočet homogenní transformace uvažujeme následující vztahy. x T = [ y] (1) z cos β cos γ cos γ sin α sin β cos α sin γ cos α cos γ sin β + sin α sin γ R = [ cos β sin γ cos α cos γ + sin α sin β sin γ cos γ sin α + cos α sin β sin γ] (2) sin β cos β sin α cos α cos β H = [ R T 0 S ] (3) Kde T je matice translace dvou souřadných systémů vůči sobě, x, y, z jsou vektory translace, R je matice rotace a S je měřítko. V našem případě chceme rozměry zachovat, proto volíme S = 1. Převod polohy kamery z počátku do pozice hlavy uživatele Oculusu pak vypočteme jako P 1 = H 10 P 0 (4) x i y i P i = [ z ] (5) i 1 4

Kde P 1 je výsledná poloha kamery, H 10 je matice homogenní transformace vytvořená z dat z Oculusu a P 0 počátek umístění kamery v rámci souřadného systému rendrované scény. OpenGL OpenGL [3] je open source průmyslový standard, který vznikl v roce 1992 pro vývoj 2D a 3D grafických aplikací. V rámci grafických nástrojů se jedná o nejrozšířenější a nejčastěji používané prostředí, které skrze své API poskytuje přímý přístup na grafický hardware a umožňuje tak optimalizaci práce s grafikou. Samotné OpenGL disponuje například také rozšířením do oblasti mobilních zařízení, kde umožňuje specifický přistup ke tvorbě her na malých méně výkonných zařízeních. Pro doplnění je možné uvést také standart DirectX, který je úzce vázaný na platformy firmy Microsoft. Obdobou pro konsorcium Apple je v loňském roce představená technologie Metal. V tomto roce pak byl uvolněn standard Vulcan v rámci skupiny KHRONOS, který je ve vývoji přímým nástupcem použitého OpenGL. Práce s OpenGL Při práci s OpenGL využíváme několika úrovní knihoven. Core OpenGL (GL) sada stovek příkazů pro modelování objektů a geometrických primitiv. OpenGL Utility Library (GLU) knihovna zastřešující Core. Zpřístupňuje funkce typu nastavení úhlu pohledu. Ovládání kamery, nastavení perspektivy, atd. OpenGL Utilities Toolkit (GLUT) Zastřešuje celé OpenGL a umožňuje interakci s hostitelským operačním systémem. Spravuje okna, vytváří most mezi aplikací a OS a izoluje programátora od specifik konkrétního operačního systému. V rámci této aplikace byla využita knihovna GLFW #include <windows.h> #include <GL/glut.h> void initgl() { glclearcolor(0.0f, 0.0f, 0.0f, 1.0f); } // inicializace pozadi void display() { glclear(gl_color_buffer_bit); // vycisteni barevneho bufferu glbegin(gl_triangles); // zacatek kresleni trojuhelniku glcolor3f(0.0f, 0.0f, 1.0f); //volba modre barvy glvertex2f(0.1f, -0.6f); glvertex2f(0.7f, -0.6f); glvertex2f(0.4f, -0.1f); glend(); } glflush(); // Vynuceni vykresleni int main(int argc, char** argv) { glutinit(&argc, argv); glutcreatewindow("demo Okno"); glutinitwindowsize(640, 420); glutinitwindowposition(0, 0); glutdisplayfunc(display); initgl(); glutmainloop(); return 0; } Kód 1 - Ukázka programu s interakcí s OpenGL [4] 5

Proces proměny elementárních OpenGL příkazů do obrazu se nazývá rendrování. Pro 3D grafiku pobíhá v několika následujících krocích. Zpracování vertexů - výpočet umístění jednotlivých vrcholů geometrických primitiv do souřadnicového systémů. Rasterizace převedení geometrických primitiv do mřížky, která odpovídá pixelům v 3D prostoru. Zpracování fragmentů nanesení barvy, běh shaderů Promítnutí 3D prostoru do 2D zobrazovací roviny. Obrázek 3 - Pipeline zpracování grafiky v OpenGL [4] Pro mapování trojrozměrného prostoru do dvourozměrné roviny zobrazovací jednotky se používá funkce void gluperspective(gldouble fovy, GLdouble aspectratio, GLdouble znear, GLdouble zfar); Vstupními argumenty této funkce jsou FOV (Field of View), tedy vertikální rozpětí zorného pole. Pro Oculus je horizontální rozpětí 110. To je přepočteno na vertikální poměrem stran obrazovky před jedním okem. Druhým parametrem je poměr stran obrazu. Třetí parametr udává nejkratší vzdálenost, pod kterou nebude zanesené geometrické primitivum vykresleno a na závěr nejvzdálenější hranice vykreslování. Geometrickou interpretací této vykreslované oblasti nazývané flutsum. Můžeme si jej představit jako jehlan s osou procházející kamerou a pokračujícím ve smyslu orientace kamery. Doplňkem k gluperspective je glortho, který poskytuje ortogonální pohled na scénu. Pro přenos obrazové informace mezi OpenGL a Oculusem se používá objekt zvaný Framebuffer. V zjednodušené podobě se jedná o místo v paměti, do kterého jsou lineárně zapisovány barevné, respektive hloubkové informace o vyrendrovaném obraze. Takovýto objekt je předán SDK Oculusu, které programátora odstíní od rutin přístupu na zobrazovací jednotku brýlí. Implementace řešení Obrázek 4 - Projekce 3D prostoru do COP (Center Of Projection) [4] Výsledný program byl vytvořen v jazyce C++ na platformě Windows 10 a to z důvodu, že v současné době výrobce Oculusu neposkytuje aplikační rozhraní pro jiné operační systémy. Do budoucna však výrobce přislíbil rozvoj podpory i pro platformy Linuxu a OS X. 6

Vstupní data Vstupními daty do programu jsou celkem 3 různé datové struktury. První je soubor s příponou.scan. Tento soubor v sobě nese RAW informace z lidaru o jeho kompletním měření okolí z jednoho bodu. Celkem se jedná o přibližně 242 000 změřených bodů. Každý bod je přitom popsán X Y Z souřadnicemi vztaženými k počátku soustavy uprostřed lidaru. Dále format popisuje odrazivost bodu a přesnost s jakou byl bod změřen. Řádky obsahující znak = jsou komentářem. Comment=Xcoord;Ycoord;Zcoord;reflection;accuracy Time=20110906-151554.300 0.1180634;1.499602;0.006971977;0.00390625;0.01 0.1138625;1.488701;0.01753529;0.00390625;0.01-0.08647966;1.477493;0.2092446;0.00390625;0.01 Druhým forátem je soubor.sbatch. Ten nese informace o homogenních transformacích mezi jednotlivými počátky měření souborů.sbat. Každý řádek popisuje translaci a rotaci jednoho.sbat souboru. V rámci projektu byla napsána dodatečně třída, která převádí výše zmíněný formát do binární podoby souboru.bscan. Ten je načtený do paměti řádově rychleji než zmíněná textová data. Třetím vstupním formátem jsou soubory typu.og3. Ty jsou výsledkem již zmíněné diplomové práce [1]. Soubor nese informaci o zaplnění prostoru s rastrem 4cm a dále popisuje v daném bodě informaci z RGB kamery a z termovize o barvě a teplotě. Každý z těchto souborů popisuje prostor v krychli 5.12x5.12x5.12m a jeho poloha je jednoznačně identifikován svým názvem ve formátu: [+-]XX,[+-]YY,[+-]ZZ.og3 Kód 2 - Ukázka.scan souboru Scan-20110906-151554-300.scan;36.282;0;0;180;0;0 Scan-20110906-151554-300x.scan;36.282;0;0;180;0;0 Scan-20110906-151833-580.scan;34.549;0;0;180;0;0 Kód 3 - Ukázka.sbatch souboru Kde XX, YY a ZZ jsou násobkem offsetu dané krychle v prostoru, přičemž offset je roven délce hrany krychle. Formát komprese dat je popsán v následující podkapitole. K datu odevzdání této práce ještě nebyla třida implementující dekompresi dat z.og3 plně funkční. Program provádí dekompresi, čtení pravděpodobnosti výskytu objektu v daném bodě, jeho barvu a teplotu. Není ale funkční správné umístění bodu do prostoru. 7

Octree Octree je stromová datová struktura, která rekurzivně popisuje obsazenost svých jednotlivých subprostorů. Obrázek 5 - Schématické zázornění Octree [7] Bázová krychle je rozdělená do osmi sub krychlí, přičemž každé ze zmíněných sub krychlí je specifikováno, zda celý její prostor je obsazen (stává se koncovým listem), je obsazen částečně, či je prázdný. Pokud je prostor obsazen částečně, stává se sub krychle krychli bázovou a můžeme rekurzivně zkoumat její obsah. V případě formátu.og3 v tomto projektu byly všechny data zkomprimována tak, že koncový list byl vždy až na nejjemnějším rastru, tj. 4cm. Toto však není podmínka nutná a je třeba počítat i s listem libovolné velikosti. V rámci [1] je pak popsáno, že za každým koncovým listem se nacházejí v souboru 2 byty dat o jeho pravděpodobnosti výskytu v tomto místě (v rámci projektu vždy 1), barvě a teplotě. API pro virtuální realitu Pro interakci programu, potažmo operačního systému s platformou Oculusu je nutné nainstalovat výrobcem zdarma dodávané SDK a runtime, které obsahují všechny nezbytné knihovny libovr. Po startu programu se nainicializuje spojení s Oculusem funkcí ovrresult result = ovr_initialize(nullptr); V opačném případě se vrací chybová hodnota a program je ukončen. Zároveň s touto funkcí se aktivuje vnitřní inerciální jednotka brýlí, která zfuzovaná s kamerou sleduje pohyb a orientaci hlavy v prostoru. Dále funkcí ovrhmddesc desc = ovr_gethmddesc(ovrsession hmd); získáme podrobný popis hardwaru a všech jeho technický specifikací, jako jsou rozlišení, zorný úhel, obnovovací perioda, atd. Následně se připraví barevný a hloubkový framebuffer s odpovídajícími rozměry a nainicializují se jeho parametry chování (viz zdrojové kódy v příloze) Dále se provede.inicializace zobrazovacích konstant vyčtených z deskriptoru hardwaru. Poté následuje načtení zobrazovaných dat a program pak pokračuje do smyčky, která cyklicki provádí načtení pozice a orientace brýlí, ovrtrackingstate tracking = ovr_gettrackingstate(hmd, 0, true); nastavení parametrů scény a kamery, a vykreslí data do framebufferu. Poté se provede se jeho odeslání do runtime Oculusu. 8

Demonstrační program Prvotní záměr byl vytvořit zobrazovací aplikaci v game engine prostředí Unity. To se však posléze ukázalo jako nereálné, protože engine podporuje maximálně 65 000 objektů ve scéně. To je sice číslo dostatečné pro vizualizaci podobného prostoru, bylo by však nutné provést redukci polynomů ve scéně a minimalizovat tak množství zobrazovaných dat, která jsou v současné době zbytnělá. To ale není předmětem tohoto projektu. Z výše zmíněného důvodu jsem se vydal cestou tvorby vlastní nízko úrovňové aplikace, která pracuje přímo s výše zmíněnými OpenGL a libovr knihovnami. Výsledkem práce je program napsaný jako projekt ve Visual Studiu, který po startu načte data v požadovaném rozsahu a formátu, a provede jejich zapsání do paměti, nainicializuje komunikaci s brýlemi virtuální reality a začne cyklicky vykreslovat uživateli scénu pro každé oko zvlášť. Diskuze, dosažené výsledky a závěr V rámci projektu se podařilo vytvořit program na platformě Windows, který dokáže pomocí OpenGL standardu prostorově zobrazovat vstupní data v brýlích virtuální reality Oculus Rift a poskytnout tak člověku možnost lepšího pochopení informací se kterými pracuje robot v rámci své mise, či případně si prohlédnout dříve vytvořenou mapu s trojrozměrným vjemem. Dále se podařilo vytvořit algoritmy na načítání a dekompresi dvou různých datových formátů, přičemž jeden z nich obsahuje kromě prostorové kompozice okolí také informace o teplotě a barvě jednotlivých objektů. Ke dni odevzdání projektu se však ještě nepodařilo dokončit poziční rozložení bodů načtených z.og3 formátu. Tato funkce bude dále dovyvinutá. Ke každému prostorovému bodu je však správně přiřazená jeho barva a teplota. Dalším možným pokračování projektu je zaměření se na optimalizaci grafického rendrování dat, protože při současné práci se stovkami tisíc čtyřcentimetrových bloků ani výkonná herní grafická karta Nvidia řady 960 není schopná vykreslovat obraz v uspokojivé snímkovací frekvenci. Reálně se daří vykreslit přibližně 100 až 150 tisíc bloků, aniž by došlo k nepříjemnému snížení obnovovací frekvence obrazu v brýlích. 9

Obrázek 7 - Ukázka obrazu vykresleného pro 1 oko z dat z.scan souborů Obrázek 6 - Chybně rozmístěné barevné bloky z.og3 souborů 10

Literatura [1] BURIAN, FRANTIŠEK. TVORBA MULTISPEKTRÁLNÍCH MAP V MOBILNÍ ROBOTICE [online]. Brno, 2014 [cit. 2016-05-05]. Dostupné z: https://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_id=93023 [2] History Of Virtual Reality [online]. [cit. 2016-05-05]. Dostupné z: http://www.vrs.org.uk/virtualreality/history.html [3] OpenGL official site [online]. [cit. 2016-05-05]. Dostupné z: https://www.opengl.org [4] OpenGL Tutorial [online]. [cit. 2016-05-05]. Dostupné z: https://www3.ntu.edu.sg/home/ehchua/programming/opengl/cg_introduction.html [5] [online]. [cit. 2016-05-05]. Dostupné z: https://d3nevzfk7ii3be.cloudfront.net/igi/in1wqvsdlbqlvtim.medium [6] Oculus Rift Developer Documentation [online]. [cit. 2016-05-05]. Dostupné z: https://developer.oculus.com/documentation/pcsdk/latest/concepts/dgsensor/#dg_sensor_position_tracking [7] Wikipedia [online]. [cit. 2016-05-05]. Dostupné z: https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/octree2.svg/958px-octree2.svg.png 11