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 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ě
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
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
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.
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ů
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.
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.
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
Roman Cagaš
|