Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1103&lang=405, vytištěno: 12.04.2021 15:11:19

Hlavní stránkaProduktyProgramový systém Control Web3D grafika a GPU computing

Virtuální a rozšířená realita v aplikacích systému Control Web
 Někdo považuje virtuální a rozšířenou realitu za budoucnost automatizace a digitalizace, někdo je naopak skeptický. Ať už se vše bude vyvíjet jakkoliv, se systémem Control Web budete připraveni. V tomto prostředí lze vytvořit aplikaci pro virtuální i rozšířenou realitu velice snadno. Pro tvorbu stereoskopického obrazu pro náhlavní sady se využívá virtuální přístroj 3D scény, se kterým je většina uživatelů dobře seznámena. Použití této atraktivní a v odborném tisku často popisované technologie je v prostředí systému Control Web jednoduché, dokonce ji lze použít jen jako rozšiřující prvek stávajících aplikací. Podívejme se na přednosti i problémy těchto technologií pohledem vývojářů, kteří strávili s brýlemi Hololens 2 na hlavě nemalý čas.

Virtuální a rozšířená realita se v praxi průmyslové automatizace asi ani v blízké době nestane zcela běžnou a masově používanou věcí. Máme na mysli opravdový pohyb, dohled a ovládání výrobních linek prostřednictvím náhlavní sady (headset) ve virtuálním prostředí a nikoliv např. pouhý servisní návod v tabletu nebo telefonu. I když úroveň vyspělosti technologií virtuální a rozšířené reality poskytuje případným odpůrcům řadu argumentů proti, počet řešení, kde je virtuální a rozšířená realita přínosem stále roste, a nepochybně dále poroste. Systém Control Web je na tuto budoucnost připraven.

V oblasti virtuální a rozšířené reality probíhá intenzivní vývoj, obecně přijaté standardy dosud nejsou stanoveny. Cílem čelních firem oboru je snaha o uzamčení zákazníka – dodavatelé usilují, aby na nich byli zákazníci co nejvíce závislí. Vyvázat se z takových závislostí je později velice nákladné, proto je dobrá obezřetnost předem. Hlavní platformy, jako je např. Occulus, Vive, Microsoft WMR vyžadují běh svých portálů, často s on-line spojením se systémem poskytovatele. Řada technologií pro virtuální realitu je softwarově uzamčena a blokována. Někdy bývá vyžadováno přihlášení k účtu a před spuštěním software dokonce certifikát pro spárování s hardwarem. Vývojem nyní prochází i několik otevřených platforem, které snad budou podporovat několik standardů VR, ale produkty zde nejsou zdaleka dokončeny. V aplikačním prostředí systému Control Web jsou nyní podporovány standardy WMR (Windows Mixed Reality) pro virtuální realitu a Hololens pro rozšířenou realitu. Principy jsou navrženy natolik obecně a otevřeně, že do budoucna bude přidána podpora dalších standardů, např. OpenVR atd.

Při implementaci virtuální reality v prostředí systému Control Web jsme usilovali o co největší otevřenost a snadnou rozšiřitelnost o podporu dalších standardů. Nyní je možno používat brýle a ovladače standardu Microsoft WMR (Windows Mixed Reality). Stereografický obraz je vytvářen virtuálním přístrojem gl_scene. Je tedy velice snadné řadu současných aplikací rozšířit o prostředí virtuální reality. Do systému WMR je přenášen již hotový obraz pro levý a pravý zobrazovač v brýlích. Přenos dat mezi jednotlivými procesy je natolik rychlý, že lze přenášet obraz v plném rozlišení bez nutnosti ztrátové komprese. Jako klient systému WMR pro aplikační program vystupuje virtuální přístroj vr_headset. Tento virtuální přístroj si případě potřeby poté v samostatném procesu spouští vlastní Microsoft WMR portál. Velkou výhodou tohoto řešení je, že obrovský a značné množství systémových zdrojů spotřebovávající portál není součástí paměti procesu systému Control Web a podstatně méně tak ohrožuje výkon a stabilitu naší aplikace. Nepoužíváte-li tedy v aplikaci virtuální realitu, nic z její podpory vás nezdržuje ani neobtěžuje. Navíc je zde také možnost postupného přibývání dalších virtuálních přístrojů pro další standardy virtuální reality.

V případě rozšířené reality s brýlemi Hololens je situace výrazně složitější. Jedná se o samostatné, baterií napájené zařízení, s procesorem ARM a operačním systémem WindowsRT. Vytvoření samostatné aplikace pro tento systém je samozřejmě možné, ale kooperace s potenciálně rozsáhlými síťovými systémy v prostředí Control Web, tvorba vlastních aplikací a vizualizací a rovněž omezený výkon této platformy přinášejí uživatelům hodně komplikací. Systém v brýlích musí řešit nejen tracking na základě obrazu z vlastních kamer, ale také musí ze stereoskopických obrazů trvale budovat hloubkové mapy okolního prostředí a rovněž musí detekovat pozice, gesta a akce rukou uživatele. Už jen toto představuje zátěž a značnou spotřebu energie z baterie. Bez hloubkových map můžeme např. zobrazovat servisní návody a postupy, ale nelze zasadit vykreslované 3D modely do reálného prostředí. Pro komunikaci jsou brýle Hololens odkázány na bezdrátový přenos dat prostřednictvím Wi-Fi. Řešením problému s přenosovou kapacitou je streaming dat, který pro přenos obrazu využívá velmi účinné kodeky H264 a H265. Díky tomu můžeme do brýlí v reálném čase a velkou snímkovou frekvencí dostat libovolně složitou 3D scénu. V brýlích Hololens je instalována a spuštěna standardní aplikace Holographic Remoting Player, které je k dispozici volně na Microsoft Store. Stereoskopický obraz, který generuje 3D scéna v libovolné aplikaci systému Control Web. Další významnou výhodou tohoto řešení je skutečnost, že stejně jako v předchozím případě i zde platí, že nepoužíváte-li ve své aplikaci rozšířenou realitu, nic z její podpory vás nezdržuje ani neobtěžuje a ani nezabírá žádné místo.

Koncepce řešení prostřednictvím programových komponent systému Control Web.

Jak již bylo uvedeno, vytváření stereoskopického obrazu zajišťuje dobře známý virtuální přístroje gl_scene. Většinu stávajících vizualizací tak lze celkem snadno převést do virtuální či rozšířené reality. To je velkou výhodou, není totiž nutno nijak výrazně měnit strukturu existujících aplikací ani měnit způsoby a principy tvorby aplikací nových. To, jestli scéna bude generovat stereoskopický obraz je dáno parametrem camera_stereo_base lišícím se od nuly. Vykreslený obraz lze ukládat do datového elementu a libovolně je dále používat lokálně nebo jej přenášet v počítačové síti.

Scéna může vytvářet stereoskopický obraz pro jakékoliv další použití

Scéna může vytvářet stereoskopický obraz pro jakékoliv další použití

Scéna systému Control Web nejen generuje prostorový obraz, ale také získává aktuální pozici a orientaci v prostoru. Kromě toho také reaguje na povely z prostorových ovladačů nebo na pozice a gesta rukou. Virtuální přístroje v prostoru scény lze pomocí ovladačů nebo rukou normálně ovládat. Prostřednictvím ovladačů pro virtuální realitu se také lze pohybovat prostorem. Gesta rukou pohyb prostorem neumožňují.

Aplikace pak musí komunikovat s vybraným programovým rozhraním pro virtuální a rozšířenou realitu, instalovaným v operačním systému. Při návrhu architektury a implementaci komponent jsme si dali za úkol, aby velice rozsáhlé a značné množství zdrojů spotřebovávající portály, komponenty a služby nebyly součástí paměťového prostoru systému Control Web a pokud možno co nejméně omezovaly a ohrožovaly výkonnost a stabilitu našich aplikací. Spojení s API pro virtuální realitu, v případě brýlí Hololens přímo s patřičným zařízením, je vyřešeno prostřednictvím samostatných virtuálních přístrojů vr_headset a hololens. Pro přenosy velkých bloků binárních dat jak uvnitř systému Control Web, tak i mezi procesy operačního systému a mezi jednotlivými zařízeními prostřednictvím TCP/IP sítě, slouží proměnné typu data. Přenášená data mohou být v libovolném formátu - stačí, když formátu rozumí programová komponenta jejich příjemce. Přenos takových bloků dat bývá v systému Control Web obvykle používán např. pro přenosy obrazu z kamer nebo pro přenos rozsáhlých dat z kroků strojového vidění. V případě virtuální a rozšířené reality jsou takto přenášeny vykreslené obrazy, trasovací informace z headsetů a ovladačů i polygonální sítě hloubkových map okolí.

Vizualizace polygonálních hloubkových map pro skrývání hologramů za reálnými objekty v okolí v rozšířené realitě

Vizualizace polygonálních hloubkových map pro skrývání hologramů za reálnými objekty v okolí v rozšířené realitě

Vytvoření aplikačního programu je docela jednoduché - pomocí několika datových elementů, proměnných typu data, se propojí dva virtuální přístroje. Na řešení se můžete podívat do ukázkových aplikací.

Parametry virtuálního přístroje gl_scene pro tvorbu stereoskopického obrazu i pro ovládání scény z headsetu

Parametry jsou shromážděny v sekci virtual_reality.

virtual_reality
  camera_stereo_base = 0;
  camera_view_angle = 45;
  space_ratio = 1, 1, 1;
  picture_output = ;
  background_transparency = false;
  depthmap_input = ;
  tracking_input = ;
  headset_instrument = ;
  left_controller = true;
  right_controller = true;
  headset_tracking = true;
  headset_depthmaps = true;
end_virtual_reality;

Pomocí těchto parametrů jsou definovány vlastnosti generovaných obrazů a data, přenášená mezi scénou a virtuálními přístroji rozhraní s headsety.

  • camera_stereo_base = 0 • Vzdálenost, v rovině kolmé ke směru pohledu kamery, mezi pozicemi kamery při vykreslování scény pro levé a pravé oko. Vzdálenost je v souřadném systému scény.

  • camera_view_angle = 45 • Zorný úhel kamery ve svislém směru. S rostoucím zorným úhlem se rozšiřuje pohledový jehlan ( view frustum ) perspektivní projekce a zvětšuje se tak širokoúhlost pohledu. Pro virtuální realitu není přesnost nastavení tohoto parametru příliš důležitá, člověk se snadno přizpůsobí míře širokoúhlosti pohledu do prostoru. Klíčovým je ale nastavení zorného úhlu pro rozšířenou realitu. Pohledová pyramida perspektivní projekce musí přesně souhlasit s velikostí obrazu promítaného do brýlí, kterými jinak volně vidíme reálné okolní prostředí. V případě brýlí Hololens 2 je k dispozici svislý zorný úhel pouze cca 34°.

  • space_ratio = 1, 1, 1 • Konstanty pro přepočet vnitřního souřadného systému scény do souřadného systému brýlí. Náhlavní sady obvykle poskytují souřadnice v metrech.

  • picture_output = • Proměnná typu data, do které scéna ukládá výsledný stereoskopický obraz.

  • background_transparency = false • Lze zadat, aby pozadí scény bylo inicializováno s průhledným alpha kanálem ( tj. nastaveným na hodnotu 0 ).

  • depthmap_input = • Vstupní kanál typu data, na kterém scéna přijímá struktury polygonů hloubkové mapy pro rozšířenou realitu.

  • tracking_input = • Vstupní kanál typu data, na kterém scéna přijímá aktuální pozici a natočení při pohybu headsetu v prostoru a rovněž případné pozice a aktivity prostorových ovladačů pro virtuální realitu.

  • headset_instrument = • Unikátní jméno virtuálního přístroje, který zajišťuje propojení scény s headsetem.

  • left_controller = true • Parametr určuje, je-li používán levý prostorový ovladač pro virtuální realitu nebo používána levá ruka v rozšířené realitě.

  • right_controller = true • Parametr určuje, je-li používán pravý prostorový ovladač pro virtuální realitu nebo používána pravá ruka v rozšířené realitě.

  • headset_tracking = true • Parametr určuje, je-li zpracovávána a používána pozice a natočení při pohybu headsetu.

  • headset_depthmaps = true • Parametr určuje, jsou-li zpracovávána a používána data s hloubkovými mapami pro okluzi viditelnosti objektů v rozšířené realitě.

Virtuální přístroj vr_headset pro komunikaci se systémem virtuální reality WMR

Náhlavní sada pro virtuální realitu standardu WMR

Náhlavní sada pro virtuální realitu standardu WMR

Virtuální přístroje ve scéně můžeme ovládat prostřednictvím prostorových ovladačů

Virtuální přístroje ve scéně můžeme ovládat prostřednictvím prostorových ovladačů

Virtuální přístroj pro komunikaci s rozhraním a portálem Windows Mixed Reality. Portál WMR je spuštěn v samostatném procesu operačního systému. Virtuální přístroj má tyto parametry:

  • picture_input = 0 • Vstup stereoskopického obrazu.

  • tracking_output = • Výstup trasování pozice headsetu.

  • scene_instrument = • Jméno virtuálního přístroje 3D scény.

Virtuální přístroj hololens pro komunikaci se headsetem pro rozšířenou realitu Hololens 2

Náhlavní sada Hololens 2 pro rozšířenou realitu

Náhlavní sada Hololens 2 pro rozšířenou realitu

Sada je celkem lehká a s baterií vzadu i dobře vyvážená

Sada je celkem lehká a s baterií vzadu i dobře vyvážená

Tento virtuální přístroj zajišťuje spojení s headsetem Hololens. Jedná se o samostatné zařízení s vlastním procesorem a operačním systémem Windows pro procesory ARM. Headset je napájen baterií a komunikuje pomocí bezdrátového Wi-Fi adaptéru. Proto mezi parametry je také IP adresa a navíc je zde i výstup dat s hloubkovými mapami:

  • picture_input = 0 • Vstup stereoskopického obrazu.

  • tracking_output = • Výstup trasování pozice náhlavní sady.

  • depthmap_output = • Výstup trojúhelníkové sítě hloubkové mapy.

  • scene_instrument = • Jméno virtuálního přístroje 3D scény.

  • headset_ip_address = • IP adresa headsetu.

Headsety standardu WMR pro virtuální realitu

Tyto headsety získávají obraz prostřednictvím HDMI kabely z počítače a obraz ze svých kamer posílají do počítače pomocí USB 3.0.

Systém má k dispozici počítač, je proto velmi výkonný. Meziprocesová komunikace mezi systémem Control Web a WMR portálem je rychlá a odezvy obrazu i trackingu hlavy jsou bezprostřední.

  • Přenos obrazu po HDMI z libovolného grafického kontextu je uměle zablokován, je možný jen prostřednictvím WMR portálu.

  • Headset nemá možnost dioptrické korekce a ne každé dioptrické brýle se pod něj vejdou (měli jsme k dispozici několik headsetů zn. Acer). Fixní korekční čočky lze zakoupit od nezávislých výrobců.

Tvorba aplikace je snadná a virtuální realita je působivá a pohlcující.

Headsety pro rozšířenou realitu Microsoft Hololens 2

Vývoj software pro tuto platformu probíhal na vzorku zařízení, který dosud není ve volném prodeji. A velmi dlouhá doba do uvedení do prodeje ukazuje, jak náročný je vývoj tohoto zařízení.

Kdo čeká, že po nasazení těchto brýlí bude obklopen bezchybným renderovaným světem dokonale zasazeným do pozorované okolní reality, bude v některých ohledech asi zklamán. Je zde řada omezení, kdy některá jsou dána technickými nedokonalostmi, ale některá plynou již z principů:

  • Vidíme pouze obraz, který je světlejší než reálné okolí. Hologramy se proto na světlém pozadí ztrácejí až mizí. Nejlepší je decentní šero, při větším šeru zase již přestává fungovat tracking pohybů a detekce hloubkových map.

  • Hloubkové mapy, které omezují viditelnost hologramů podle reálného prostředí jsou hodně nepřesné a prakticky jsou neustále modifikovány. Tvorba hloubkových map z obrazů z dvojice kamer je velmi náročná na výkon procesoru v headsetu a v šeru rovněž selhává.

  • Generovaný obraz je zobrazován pouze v relativně malém zorném úhlu, vertikálně cca 34°.

  • Přenosová kapacita mezi počítačem a headsetem je omezena možnostmi Wi-Fi. V našem případě samozřejmě nemůže celý Control Web běžet na relativně omezeném systému v headsetu. Zde běží pouze klientská aplikace, které čte a zpětně zasílá data do počítače.

  • I při značné omezenosti systému přece jen máme bezprostředně na čele a na spáncích počítač s grafickým adaptérem a s Wi-Fi jako zdroj tepla a vysokofrekvenčního elektromagnetického pole. Asi to nelze zevšeobecňovat, ale některé jedince při používání hodně bolí hlava.

  • Baterie udrží zařízení v provozu asi dvě hodiny, takže během dne střídavě používáte a nabíjíte. Navíc baterie, která je umístěna na zátylku vaší hlavy, se při provozu vybíjí natolik rychle, že znatelně hřeje. Teplo do zátylku také asi vesměs lidem nebude příjemné.

  • Vzhledem k tomu, že volně vidíme reálné okolí, je systém velice náročný na přesnost a rychlost odezvy při udržování stabilní pozice hologramu při pohybech hlavy.

  • Headset nemá možnost dioptrické korekce a ne každé dioptrické brýle se pod něj vejdou.

Gesto ruky ekvivalentní kliku myší

Gesto ruky ekvivalentní kliku myší

Tímto gestem můžeme pomocí paprsku vycházejícího z ruky ovládat prvky ve scéně i na větší vzdálenost

Tímto gestem můžeme pomocí paprsku vycházejícího z ruky ovládat prvky ve scéně i na větší vzdálenost

Koncepce samostatného zařízení, které nemá k dispozici výkon a potenciál současných počítačů, některé věci usnadňuje a některé naopak komplikuje. Headset je lehký a celkem pohodlný na nošení, a navíc bez kabelů.

Jednoduché řešení v aplikacích systému Control Web

Vytvoření aplikace s virtuální realitou je opravdu velice snadné. Pomocí několika parametrů můžeme jakoukoliv 3D scénu přizpůsobit pro generování stereoskopického obrazu pro náhlavní sadu. Ve virtuální realitě jsme zcela obklopeni uměle vykreslovaným prostředím, tedy i relativně široké rozsahy zorných úhlů, vzdálenosti očí od sebe a převodních poměrů mezi metry a jednotkami souřadného systému scény jsou naším mozkem bez problémů akceptovány a v prostředí scény se cítíme i pohybujeme velmi přirozeně. Při vlastním pohybu jsme sice omezeni přívodními kabely, ale pohybovat se prostorem scény můžeme i pomocí ovladačů. Lze se tak volně přemísťovat prostorem a být přitom pohodlně usazeni v křesle. Prostřednictvím prostorových ovladačů můžeme veškeré 3D virtuální přístroje ovládat stejně, jako v normální 3D scéně myší.

Řídicí prvky ve scéně lze ve virtuální realitě ovládat pomocí controllerů

Řídicí prvky ve scéně lze ve virtuální realitě ovládat pomocí controllerů

Tvorba aplikace pro rozšířenou realitu je již o poznání složitější. Scéna musí být vykreslována se shodným zorným úhlem, v jakém daný headset generuje obraz. V případě Hololens 2 je to 34 stupňů vertikálně při poměru šířky a výšky obrazu 3 : 2. Jen při dodržení těchto parametrů lze generované hologramy přesně usadit do reálného prostředí. Do skutečného prostoru musí být také velmi přesně umístěny tzv. hloubkové mapy, které nám zajišťují překrývání generovaných hologramů reálnými objekty v našem okolí. Pozici a měřítko hloubkových map v prostoru scény lze nastavit OCL procedurou SetDepthmapLocation( PositionX, PositionY, PositionZ, ScaleX, ScaleY, ScaleZ : real ). Parametry je možno zjistit interaktivně, uložit je do souboru a poté je vždy automaticky při startu aplikace pomocí této procedury do scény vložit. Přesnost a kvalitu polygonálních hloubkových map pak již příliš ovlivnit nedokážeme. Tvorba hloubkových map z obrazů dvou kamer headsetu rozhodně není triviální úlohou. Hloubkové mapy si můžeme nechat vykreslovat, např. za účelem jejich pozicování, pomocí plných trojúhelníkových síti nebo jako drátěné modely. Způsob vykreslování hloubkových map můžeme nastavovat procedurou scény DepthmapRenderingMode( Mode : integer ). Druhou podstatnou věcí je umístění generovaných 3D objektů do reálného prostoru. Po spuštění aplikace nám systém trvale vykresluje scénu v iniciální pozici kamery bez ohledu na aktuální pozici headsetu. Po přesném usazení objektů lze do normálního vykreslování přejít "dvojklikem" pomocí ukazováčku a palce ruky. Díky snímání pozic a gest rukou jsou zde možnosti ovládání aplikací oproti virtuální realitě bohatší. Máme zde rovněž k dispozici paprsek vycházející z ruky, kdy klik levým tlačítkem myši vytvoříme gestem ukazováčku a palce ruky, a navíc můžeme 3D virtuální přístroje přímo koncem ukazováčku v prostoru ovládat. V tomto prostředí nelze volně létat, k ovládacím prvkům musíme vždy přijít tak, abychom na ně rukou dosáhli.

Přiblížení ukazováčku k ovládacímu prvku je signalizováno prostorovým kurzorem

Přiblížení ukazováčku k ovládacímu prvku je signalizováno prostorovým kurzorem

Ukazováčkem můžeme např. otáčet knoflíkem

Ukazováčkem můžeme např. otáčet knoflíkem

Virtuální přístroj gl_scene má také několik vlastností, které nám zjednodušují přesné usazení vykreslované scény do reálného prostoru. OCL procedurou PositionScene( Tracking : boolean ) lze zapnout a vypnout mód, kdy je scéna trvale vykreslována z počáteční pozice kamery nezávisle na aktuální pozici headsetu. Ve zvolené pozici headsetu pak jednoduše tracking vypneme a pozice scény se v prostoru zafixuje. Vypnout tracking je možno i gestem dvojkliku ruky viditelné kamerami headsetu. K upravení pozice prostoru scény lze použít i metodu SetSceneLocation( ScenePositionX, ScenePositionY, ScenePositionZ, SceneRotationX, SceneRotationY, SceneRotationZ : real ). Zde jsou rotace pro pohodlnější práci prováděny kolem posunutého počátku souřadného systému, nikoliv podle původního.

Jako vždy je třeba vážit přínosy a nevýhody

Jako první jsou systémem Control Web podporovány technologie nativně integrované v operačním systému Windows. I tak zde existuje řada potíží, které jsou způsobeny např. uzamykáním přístupu před neregistrovaným používáním a vůbec trvalou a nepolevující snahou Microsoftu o silové prosazování vlastních technologií a potlačování ostatních, byť široce akceptovaných a otevřených standardů. Snaha udělat vše jinak, než je všeobecnou normou, občas komplikuje život i samotným autorům těchto "zlepšení". V podpoře virtuální a rozšířené reality byl opuštěn i opačný "levoruký" souřadný systém zavedený v D3D. Souřadný systém je již obvyklý pravotočivý, který se učí na všech školách, nicméně i v něm jsou přední povrchy polygonů navinuty opačně, tj. levotočivě po směru hodinových ručiček. Tyto problémy se naštěstí autorů aplikací netýkají, jsou to jen malé stížnosti vývojářů systému Control Web.

V rozšířené máme k dispozici ovládací paprsky i bez prostorových ovladačů

V rozšířené máme k dispozici ovládací paprsky i bez prostorových ovladačů

Gesto kliknutí prsty má stejný efekt jako klik myší do scény na obrazovce

Gesto kliknutí prsty má stejný efekt jako klik myší do scény na obrazovce

Ale aby to nevypadalo, že tady popisujeme převážně nedostatky a problémy. Pro racionální hodnocení a rozhodování, kde virtuální a rozšířenou realitu použijeme a kde bude ziskem a přínosem, je dobré všechny tyto informace mít. Je totiž zřejmé, že se jedná o nesmírně atraktivní a působivé technologie, které, přes všechny problematické momenty, budou v budoucnu používány stále více. A nyní díky podpoře těchto technologií v programovém prostředí Control Web si můžete vše s vynaložením minimálního úsilí jednoduše vyzkoušet. Zkuste a uvidíte sami.

Každou scénu v prostředí lze snadno napojit na virtuální realitu

Každou scénu v prostředí lze snadno napojit na virtuální realitu

Roman Cagaš