MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Diplomová práce Rukavice pro hmatovou zpětnou vazbu
Brno 2011
Tomáš Nezval
Prohlášení: Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
.......................... podpis autora práce
Vedoucí práce: RNDr. Barbora Kozlíková
Poděkování: Zde bych chtěl poděkovat své vedoucí práce RNDr. Barboře Kozlíkové za trpělivost, odborné vedení práce a poskytování cenných rad. Také bych chtěl poděkovat všem osobám v laboratoři Interakce člověka s počítačem za rady a připomínky vedoucí ke zlepšení mé práce.
Shrnutí Diplomová práce se zabývá realizací rukavice pro hmatovou zpětnou vazbu v rámci laboratoře HCI (Human-Computer Interaction Laboratory), vysvětluje důvody vytvoření rukavice a její hardwarové a softwarové řešení. Součástí práce jsou informace o dalších ovládacích zařízeních se zpětnou vazbou a popisy ukázkových aplikací demonstrujících praktické použití rukavice při použití technologie stereoskopické projekce a systému OptiTrack.
Klíčová slova: rukavice, glove, hmatová zpětná vazba, silová zpětná vazba, force feedback, haptic feedback, stereoskopická projekce, stereoscopic projection, interakce s počítačem, computer interaction, OptiTrack, Ogre3D.
Obsah 1. Úvod..............................................................................................................................7 2. Ovládací zařízení a jejich zpětná vazba.........................................................................8 2.1. Myš........................................................................................................................8 2.2. Klávesnice............................................................................................................10 2.3. Ovladač konzole Wii – Wii Remote.....................................................................12 2.4. Volant...................................................................................................................14 2.5. Haptický systém...................................................................................................14 3. Optitrack......................................................................................................................15 4. Stereoskopická projekce..............................................................................................17 4.1. Aktivní stereoskopie.............................................................................................17 4.2. Pasivní stereoskopie.............................................................................................17 4.3. Parallax bariéra....................................................................................................19 5. Rukavice pro hmatovou zpětnou vazbu.......................................................................20 5.1. Motivace..............................................................................................................20 5.2. Hardware..............................................................................................................20 5.2.1. Převodník z USB na RS-232........................................................................21 5.2.2. Zpracování signálů z PC a aktivování prstů rukavice..................................22 5.2.3. Rukavice pro hmatovou zpětnou vazbu.......................................................24 5.2.4. Celkový seznam použitých součástek..........................................................26 5.3. Software...............................................................................................................28 5.4. Jiná řešení.............................................................................................................30 5.5. Možná vylepšení..................................................................................................33 6. Ukázková aplikace – Test............................................................................................35 7. Ukázková aplikace – Fyzikální test.............................................................................36 7.1. Zobrazovací a fyzikální engine............................................................................37 7.2. Zpracování dat ze zařízení OptiTrack..................................................................37 7.3. Detekce doteků ruky............................................................................................37 7.4. Funkce přiřazené tlačítkům rukavice...................................................................38 8. Ukázková aplikace – Webový prohlížeč......................................................................39 8.1. Interakce s oknem webového prohlížeče.............................................................40 8.2. Virtuální klávesnice..............................................................................................41 8.3. Funkce přiřazené tlačítkům rukavice...................................................................41 9. Závěr............................................................................................................................43 10. Literatura a použité zdroje.........................................................................................44 11. Přílohy........................................................................................................................47
6
1. Úvod V současnosti je téma 3D zobrazení – virtuálního prostoru, velmi diskutované. Firmy vyrábějí obrazovky, umožňující zobrazovat iluzi trojrozměrného prostoru. Vyvíjí se ovládací zařízení pro herní konzole, které uživateli mají umožnit ovládání v prostoru. Také nové filmy si nemohou nechat ujít příležitost mít nálepku 3D – jejich atraktivita tím vzroste. V případě ovladače nepracujícího v prostoru, tvoří vstup do počítače klávesa či analogová páčka. Pokud v aplikaci dojde ke kolizi, předměty se zastaví a to i přesto, že je klávesa dále stisknutá. Ovládání v prostoru je nejčastěji řešeno pomocí pohybu ruky či celého těla. Hlavním problémem je, že není možné ruku zastavit na místě. Pokud uživatel pohne rukou skrz nějaký další předmět, tak i přes kolizi virtuálních objektů bude ruka pokračovat dál. Pokud není možné zastavit uživateli ruku, je vhodné jej alespoň upozornit, že ke kolizi jeho ruky s virtuálním objektem došlo. K tomu se používá tzv. silová zpětná vazba (force feedback). Úvodní část se věnuje ovládacím zařízením, jejich historickému vývoji a možnostem pro hmatovou zpětnou vazbu. Na tuto část navazuje kapitola o systému OptiTrack, který je používán pro sledování polohy rukavice (tj. sleduje body, které jsou umístěné na rukavici). V této části je dále vysvětlen princip stereoskopické projekce použitý pro vytvoření iluze hloubky prostoru. Poslední část popisuje hardware a software rukavice pro hmatovou zpětnou vazbu a aplikace, které demonstrují její praktické použití.
7
2. Ovládací zařízení a jejich zpětná vazba V současnosti existuje velké množství ovládacích zařízení pro počítače nebo herní konzole. Některé se ovládají jen prsty či zápěstím, jiné pohybem ruky nebo celým tělem. Silová či hmatová zpětná vazba je spíše nadstandardní výbava než běžná součást zařízení. Jsou ovládací zařízení, u kterých se ani dodatečná zpětná vazba nepředpokládá (např. klávesnice). Naopak jiné by bez silové zpětné vazby nebyly použitelné (haptický systém). U počítačové myši může být hmatová zpětná vazba nepříjemná a pro Microsoft Kinect hmatovou zpětnou vazbu ani vytvořit nelze, protože uživatel nedrží žádné fyzické zařízení.
2.1. Myš Myš patří v současnosti mezi jedny z nejpoužívanějších ovládacích zařízení. První funkční exemplář vytvořil americký vědec Douglas Engelbart v roce 1963. Originálně byl pojmenován jako „X-Y ukazatel“ (X-Y position indicator) a později nazván myší (viz obrázek 2.1). První firma, které se podařilo myš rozšířit, byla firma Apple v roce 1982 a o rok později následoval také Microsoft, který přišel s myší kompatibilní s PC.
Obrázek 2.1 První prototyp myši nazvaný X-Y ukazatel (převzato z [4])
8
Další rozvoj myši byl nejen v ergonomii pro pohodlnější používání, ale také v technologii snímání pohybu a komunikaci s počítačem. Tvarově se myš snaží přizpůsobit ruce. Nejčastěji výrobci tvarují myš pro pravou ruku, ale vyskytuje se také dostatek variant pro levou ruku nebo myši tvarované pro použití levou i pravou rukou. Od prvního návrhu myši také přibyla tlačítka. Obvyklá myš obsahuje tři tlačítka a prostřední tlačítko je nahrazeno kolečkem. Ale existují i myši s 15 tlačítky (viz obrázek 2.2). Snímání pohybu bylo původně uskutečněno pomocí dvou válečků na spodní straně myši. Válečky byly nahrazeny kuličkou, která se mohla volněji otáčet. Výrazné zlepšení v kvalitě snímání pohybu přinesla tzv. optická myš, ve které se místo kuličky používá zdroj světla a senzor snímající nasvícený povrch pod myší. I tento návrh měl nejprve své nedostatky, ale v současné době se jedná o nejrozšířenější typ myši. Zvládne rozpoznat pohyb po mnoha materiálech, ale stále má problém s reflexivním nebo průsvitným povrchem. V tomto směru došlo ke zlepšení s příchodem laserových myší. Ty používají přesnější a intenzivnější infračervený paprsek a také senzory s vyšším rozlišením. To jim umožňuje rozpoznat pohyb i na skle nebo zrcadle. Výsledek nebývá dokonalý, ale bývá lepší než u optických myší. Myši rozdělujeme do dvou základních skupin – drátové a bezdrátové. Drátové jsou připojeny kabelem do konektoru COM (je možno použít pouze u kuličkových myší z důvodu napájení), PS/2 a USB. Bezdrátové myši mají k počítači připojený přijímač do USB a z myši jsou data přenášena pomocí infračerveného spojení, Bluetooth nebo radiových vln.
Obrázek 2.2 Patnáctitlačítková myš s nastavitelnou barvou podsvícení (převzato z [5])
9
Myš ve většině případů slouží pouze jako vstupní zařízení. Zpětná vazba pro uživatele je dána pouze pohybem kurzoru po obrazovce. Skutečnou zpětnou vazbou je v tomto případě hmatový vjem, jako například myši od firmy Logitech. Typ iFeel MouseMan umožňuje různě vibrovat podle situace (například při najetí kurzoru na ikonu nebo vybírání z menu). Není to tedy hmatová zpětná vazba, která by omezovala uživatele v pohybu (uživatel by například nemohl pohnout myší, když se kurzor dostane na okraj obrazovky), ale slouží pouze k informaci o události. Domnívám se tedy, že v případě myši není nutná další zpětná vazba od počítače k uživateli. Z počátku může být pro uživatele problém zvyknout si, jak posunout myší, aby se správně posunul kurzor, ale je to pouze otázka zvyku, případně nastavení. Ale hmatová zpětná vazba v tomto případě nepřidává informace uživateli a tedy nezlepšuje práci s počítačem.
2.2. Klávesnice Klávesnice je jednoznačně nejdůležitější vstupní zařízení k počítači. Stále se jedná o nejjednodušší, nejjistější a nejrychlejší způsob vkládání textového vstupu do počítače. Existují samozřejmě i jiné způsoby. Například lze převádět mluvenou řeč na text, ale je to složitější proces než u klávesnice a tento způsob je náchylný na okolní hluk. Dalším způsobem je převádění rukou psaného textu (například z tabletu), ale bývá pro uživatele těžké použít takové písmo, aby mohl počítač písmo jednoznačně rozpoznat. Proto je použití rukou psaného textu pomalé a nepohodlné. Historicky vychází klávesnice z psacího stroje. Vývojem si prošel nejen vzhled klávesnice, ale i vnitřní zpracování, rozložení kláves i jejich počet. Tradiční rozložení kláves pro počítače se označuje jako „QWERTY“ (případně QWERTZ pro českou klávesnici) podle písmen na prvním řádku (viz obrázek 2.3). Toto rozložení je spojováno s Američanem Christopherem L. Sholesem, který je jedním z vynálezců psacího stroje. Obecně se usuzuje, že příčinou vzniku tohoto rozložení písmen bylo zasekávání psacího stroje při příliš rychlém psaní, kdy se kladívka s písmeny nestihla včas vrátit. Rozložení QWERTY by mělo problém minimalizovat, a to tak, že písmena, která následují po sobě v běžném textu jsou na klávesnici nejdál od sebe. Přestože vzniklo toto rozložení již před více než sto lety, stále se používá, a to i přesto, že vznikly i další rozložení kláves. Jedno z těch známějších vymyslel Dr. August Dvorak a je též po něm pojmenováno „DVORAK“ (viz obrázek 2.4). Tím, že už se nemusel soustředit na problém se zasekáváním psacího stroje, měl za cíl co nejlepší rozložení kláves pro rychlost psaní. Důležitou podmínkou bylo umístění nejpoužívanějších písmen do prostředního řádku, kde bývají položeny prsty při výchozí 10
poloze při psaní. Tím je tento řádek nejrychleji dostupný pro prsty. Méně používaná písmena jsou pak v horním řádku a zbytek pak ve spodním řádku, který je pro prsty nejtěžší na dosažení. Pro zvýšení rychlosti je také důležité, aby se ruce rovnoměrně střídaly. Rozložení kláves DVORAK tedy mělo být výrazně lepší pro psaní než QWERTY. Přesto se toto teoreticky lepší rozložení neprosadilo. Mohlo to být již zažitým rozložením QWERTY, malou propagací nebo neschopností oficiálně prokázat kvality rozložení DVORAK. Provedené studie totiž střídavě prokazovaly kvality obou rozložení, a tak obecným standardem stále přetrvává klávesnice QWERTY.
Obrázek 2.3 Příklad rozložení kláves QWERTY (převzato z [7])
Obrázek 2.4 Příklad rozložení kláves DVORAK (převzato z [7])
Propojení klávesnice s počítačem může být pomocí drátu s již nepoužívaným konektorem DIN, nebo přes konektory PS/2 a USB. Bezdrátové spojení bývá řešeno pomocí Bluetooth. Poslední možností je zabudování klávesnice přímo do počítače, což je obvyklé v současné době v případě notebooků a netbooků. Hlavním účelem klávesnice je textový vstup, a až na výjimečné případy není výstup řešen. Jedinou zavedenou indikací jsou světelné diody pro klávesy num lock, scroll lock a caps lock. Existují i klávesnice s přidaným displejem (například klávesnice Logitech 11
G15), který může zobrazovat čas nebo vytížení procesoru. Nejedná se ovšem o zpětnou vazbu na psaní na klávesnici, ale spíše o další výstupní zařízení, stejně jako je například monitor. Základní zpětná vazba, která se očekává od klávesnice, je přijatelný odpor kláves a případné mechanické cvaknutí při stisknutí klávesy. Není tedy nutné doplňovat klávesnice o další zpětnou vazbu, protože již z konceptu klávesnice tuto vazbu sama umožňuje. Výjimkou jsou pouze netradiční modely klávesnic. Například plastické klávesnice, které je možné ohýbat, nejspíše nemohou poskytnout komfortní psaní a vhodnou mechanickou odezvu kláves, ale stále musí uživatel fyzicky zmáčknout klávesu, která mu vytváří odpor. Nejhorší varianta je v tomto případě tzv. laserová klávesnice, kdy je obraz klávesnice promítnut na plochu a senzor snímá, zda prst protne paprsek v místě klávesy. Nedochází zde, k fyzickému kontaktu s klávesnicí, a tedy jediná odezva pro uživatele je napsání písmene na obrazovce.
2.3. Ovladač konzole Wii – Wii Remote Wii Remote (zkráceně pojmenovaný jako Wiimote) je ovladač pro herní konzoli Wii od firmy Nintendo. Jeho vývoj začal kolem roku 2001, a samotná konzole Wii, se začala prodávat na konci roku 2006. Hlavním prvkem této konzole je právě ovladač Wii Remote, který v době uvedení na trh přišel s novým konceptem ovládání herní konzole. Do té doby převládaly gamepady, případně v malé míře i některá exotická ovládací zařízení. Ale až konzole Wii dosáhla obrovského úspěchu a v současnosti se i další výrobci herních konzolí snaží nalákat na netradiční ovládání, často inspirované právě ovladačem konzole Wii. Ovladač Wii Remote je složen z Bluetooth chipu pro komunikaci s konzolí (případně i jiným zařízením), akcelerometrem pro určování změny polohy, optickým senzorem pro snímání obrazu v infračerveném spektru, malým reproduktorem, vibračním motorkem pro chvění ovladače a tlačítky pro ovládání konzole. Tří směrový akcelerometr slouží pro určení změny polohy. Při prudkých pohybech ve sportovních nebo akčních hrách se obvykle nedá použít optický senzor. Stejný případ může nastat, není-li ovladač zaměřen na obrazovku. Optický senzor, který je umístěn v přední části ovladače, zachytává infračervené záření. To je v případě konzole Wii vytvářeno tzv. Sensor Barem umístěným ideálně pod obrazovkou. Ten obsahuje dvě skupiny infračervených LED diod umístěných na okrajích sensor baru asi 20 cm od sebe. Pokud je optický senzor nasměrován na tyto infračervené diody, může určit svou aktuální polohu a náklon. Poloha se určí podle vzdálenosti světlých bodů (tvořených diodami) na snímku ze senzoru. Čím je ovladač 12
dál od obrazovky (a tedy i od sensor baru), tím je i menší úhel mezi diodami, a pro senzor jsou světlé body blíž u sebe. Naopak ovladač blízko obrazovky bude mít světlé body daleko od sebe. Rotaci lze určit podle pozice světlých bodů na snímku ze senzoru. Například jsou-li světlé body ve vrchní části snímku, pak je ovladač nasměrovaný směrem dolů. Náklon ovladače se projeví změnou vzájemné polohy světlých bodů. Pokud leží body na vodorovné přímce, pak je i ovladač ve vodorovné pozici. V případě, že jsou body na snímku šikmo nebo svisle, pak je ovladač nakloněný. Wii Remote může fungovat i jako vstupně-výstupní zařízení díky reproduktorům a vibrační funkci ovladače. Reproduktory se kvůli své velikosti hodí nejspíše pouze k ozvučení efektů (například zvuk míčku odpalovaného tenisovou raketou). Úder doplněný o vibraci může zlepšit celkový vjem pro uživatele.
Obrázek 2.5 Ovladač Wii Remote (převzato z [8])
13
2.4. Volant Volant je jedním z mála zařízení, které skutečně může uživateli zamezit v pohybu. Tím, že se volant musí připevnit ke stolu nebo jinému pevnému předmětu, získává potřebnou oporu. Volant bývá dostatečně masivní a tím lze do něj vložit výkonnější motory pro ovládání hmatové zpětné vazby volantu. Pokud tyto motory působí na volant silou opačnou než uživatel, je možné volant zablokovat, dokud uživatel neotočí volantem na opačnou stranu. Nevýhodou volantu je jeho specifická funkčnost a hodí se převážně jen na simulaci řízení auta. Hmatová zpětná vazba se zde používá buď ve formě vibrací, například při jízdě po hrubém povrchu, nebo ve formě silného cuknutí volantem při nárazu auta.
2.5. Haptický systém Haptický (hmatový) systém již z názvu asociuje použití hmatové zpětné vazby. Při konstrukci se počítá s působením síly uživatele proti haptickému systému. Proto systém obsahuje pevnou základnu a na ni napojené mechanické rameno. Rameno je vybaveno motory, které mohou v jednotlivých kloubech s ramenem pohybovat nebo jen klást odpor uživateli. Haptický systém je díky své konstrukci nejvhodnější zařízení pro hmatovou zpětnou vazbu, protože umožňuje změnu pozice ve všech osách a může klást odpor v každém směru. Nevýhodou haptického systému je malý prostor omezený dosahem mechanického ramene. Čím větší je rameno, tím se sice zvětší prostor pohybu, ale manipulace s velkým ramenem by mohla být pro uživatele obtížná.
14
3. Optitrack Systém OptiTrack je vyvíjen firmou NaturalPoint. Slouží k zaznamenávání pohybu objektů nazývaný Motion Capture. Ten se používá pro vytváření animací, nejčastěji lidí nebo zvířat, u kterých by tvorba animace ručně v počítači byla příliš složitá a ve výsledku by nemusela působit dostatečně reálně. I když se technologie převážně používá na snímání pohybů člověka, není tím omezena, protože se snímají jen konkrétní body. Ty je možné umístit na jakýkoliv objekt, který chceme snímat.
Obrázek 3.1 Doporučené rozestavení 8 snímacích kamer (převzato z [13])
OptiTrack funguje na principu snímání jednotlivých bodů pomocí kamer (viz obrázek 3.1). Celá scéna je osvětlena infračervenými diodami, které jsou umístěny kolem kamer. Světlo dopadne na snímané body vyrobené ze speciálního materiálu, který dobře odráží infračervené světlo. Odražené světlo pak zachytí kamery snímající infračervené záření pomocí infračerveného filtru. Díky materiálu (ze kterého jsou vytvořeny snímané body), a použitému světlu, je pro kamery snadnější rozlišit body od zbytku scény, protože ta neodrazí tolik infračerveného záření a proto není pro kamery tak výrazná jako snímané body. Kamery ovšem snímají scénu pouze jako dvourozměrný obraz. Data se tedy posílají do počítače, který je musí zpracovat a vyhodnotit skutečnou polohu bodů v prostoru. 15
Na to, aby mohl z těchto dat počítač dopočítat polohu bodů, potřebuje znát také polohu kamer. Ta se určuje pomocí kalibrace – použije se jeden bod na tyči a pohybuje se s ním ve snímaném prostoru. Protože počítač dostává informace z kamer a ví, že ve scéně je pouze jeden bod, může si z těchto informací dopočítat pozici kamer. Z těchto informací již může počítač dopočítat pozici bodů a například je v reálném čase streamovat do sítě. Další aplikace si pozici bodů odchytí a zpracují. Software k systému OptiTrack také umožňuje z množiny bodů, které jsou pevně svázány, dopočítávat polohu středu této množiny bodů a také její orientaci.
16
4. Stereoskopická projekce Stereoskopická projekce je technologie pro zobrazení virtuální scény tak, aby pro uživatele vznikla iluze hloubky obrazu. Aby si lidský mozek mohl dopočítat vzdálenosti k objektům, potřebuje dvě obrazové informace z různých míst. Mozek potom zpracuje tyto dvě obrazové informace a vyhodnotí hloubku scény. Stereoskopická projekce vytváří dva obrazy, které jsou zobrazeny přes sebe. Pomocí různých technologií poskytuje jeden obraz pro levé oko a druhý pro pravé. Aby mozek virtuální scénu správně vyhodnotil, musí být kamery ve správné vzdálenosti od sebe. Místo, kam jsou kamery nasměrovány, musí odpovídat pozici, na kterou by uživatel v danou chvíli zaostřil. Pro vytvoření stereoskopické projekce se používají: • Aktivní stereoskopie • Pasivní stereoskopie • Parallax bariéra
4.1. Aktivní stereoskopie Při aktivní stereoskopii se obrazy nezobrazují zároveň, ale střídají se. V každý okamžik je tedy zobrazen pouze jeden obraz. Aby se správný obraz dostal ke správnému oku, musí se člověk na scénu dívat pomocí aktivních brýlí. Ty střídavě zatemňují levé a pravé oko podle toho, který obraz je právě zobrazen. Je tedy nutné synchronizovat brýle a zobrazovací zařízení. Výhodou tohoto systému je věrné podání barev, není nutné používat speciální plátno, projektor či obrazovku. Jedinou podmínkou je schopnost zobrazit obraz s vysokou frekvencí, ideálně větší než 120 Hz, protože se obrazy střídají a pro každé oko je výsledná frekvence 60 Hz. Nevýhodou jsou speciální brýle, které se musí synchronizovat a být napájeny. Nevýhodou je také podmínka vysoké frekvence zobrazování.
4.2. Pasivní stereoskopie Základem pasivní stereoskopie je různé polarizování světla pro levé a pravé oko (viz obrázek 4.1). Obrazy se vytvářejí zároveň dvěma projektory na stejné místo na plátně, ale každý projektor má v cestě světelného paprsku polarizační filtr. Filtry jsou na sebe
17
kolmé, jeden tedy propouští světlo kmitající v horizontální rovině a druhý ve vertikální rovině. Protože oči by polarizované světlo nijak nerozlišily, musí mít uživatel speciální pasivní brýle, které stejně jako filtry u projektorů propouští světlo kmitající jen v dané rovině. Pokud je u projektoru, který zobrazuje obraz pro levé oko, filtr propouštějící světlo kmitající ve vertikální rovině, pak u levého oka musí být filtr propouštějící světlo také kmitající ve vertikální rovině. Výhodou této technologie je možnost sledování scény větším počtem lidí, protože pozorování není nijak omezeno a samotné brýle nejsou složité. Také projektory nemusí být speciální, protože obraz je polarizován až pomocí filtrů. Nevýhodou tohoto typu projekce je potřeba speciálního plátna, které nemění polaritu dopadajícího světla a nutnost dvojice projektorů. Tato technologie se v současné době používá v laboratoři HCI.
Obrázek 4.1 Schéma pasivní stereoskopické projekce (převzato z [10])
18
4.3. Parallax bariéra Tato technologie umožňuje vytvářet iluzi prostoru bez nutnosti používat speciální brýle. Avšak k zobrazení není možné používat projektor. Obrazy jsou poskládány tak, že v horizontálním směru se pixely obou obrazů střídají. Displej se skládá ze sloupců pixelů, kde liché sloupce zobrazují obraz pro levé oko a sudé sloupce obraz pro pravé oko. Aby se obraz nedostal i do nesprávného oka, musí být před displejem speciální bariéra, která pod konkrétními pozorovacími úhly odstíní některé sloupce pixelů. Největší výhodou je sledování 3D obrazu bez speciálních brýlí, které jsou pro mnoho lidí nepohodlné, zvláště pokud nosí vlastní dioptrické brýle. Hlavním problémem této technologie je omezený prostor pro pozorovatele. To je způsobeno tím, že pokud se na obrazovku nedíváme ze správné pozice, tj. když nejsou pixely správně zakryty, můžeme vidět pixely určené pro druhé oko. V důsledku toho je omezen jak počet lidí, kteří se mohou na prostorový obraz dívat, tak i pohyb člověka před obrazovkou. Další nevýhodou je snížený počet efektivních pixelů v horizontálním směru na polovinu. Dle mého názoru největší nevýhodou stereoskopické projekce je nemožnost náklonu hlavy uživatele. Základní omezení je již ve virtuální scéně. Aby bylo možné naklánět hlavu, bylo by nutné, aby se kamery ve scéně také dokázaly pohybovat. Ve většině případů toto není řešeno a předpokládá se, že obraz bude pozorován pouze z přímého pohledu bez naklonění hlavy. V případě projekce by ani nebylo možné rotovat kamery, protože se předpokládá, že obraz sleduje více osob. Proto by nebylo možné, aby se kamery otáčely pouze podle jedné osoby. Dále by bylo potřeba vyřešit snímání naklonění hlavy. Některé stereoskopické technologie by měly mnohem větší problém umožnit náklon hlavy než jiné. Například tím, že pasivní stereoskopie má v cestě světelného paprsku od projektoru do oka dva filtry. Nakloněním hlavy se změní osa filtrů v brýlích a ty pak propouštějí jinak polarizované světlo. Otočení hlavy o 90 stupňů způsobí, že do levého oka přichází obraz pro pravé oko a naopak do pravého oka přichází obraz určený pro levé oko. Bylo by tedy nutné otáčet i filtry u projektorů.
19
5. Rukavice pro hmatovou zpětnou vazbu 5.1. Motivace Cílem vytvoření rukavice pro hmatovou zpětnou vazbu bylo zlepšení interakce s virtuálními předměty v prostoru pomocí ruky uživatele. Základním problémem při práci s virtuálními objekty v prostoru je, že zřejmě neexistuje způsob, jak omezit pohyb ruky člověka v prostoru. To není možné, pokud nebude člověk oblečen v nějakém speciálním obleku nebo konstrukci, která by byla schopna omezit pohyb člověka v některém směru. Částečným řešením je vytvořit pro uživatele hmatový vjem, že opravdu došlo ke kolizi jeho ruky s virtuálním předmětem. V případě práce s virtuálními objekty v prostoru v laboratoři HCI je výhodou použití technologie stereoskopické projekce. Díky tomu je pro člověka mnohem snazší vnímat virtuální prostor a tím i lépe vidět kolize ruky s předměty. Ovšem i tato technologie není dokonalá. Člověk si nemůže například prohlédnout virtuální předmět z různých úhlů, protože obrazovka (v tomto případě plátno) je stále na stejném místě. Virtuální scéna se samozřejmě dá otočit, ale člověk se stále bude dívat na plátno ze stejného místa a mozek nebude dostatečně přesvědčen o hloubce ve virtuální scéně. Navíc obrazovka má své pevné hrany, tzn. úhel, ve kterém je virtuální scéna, je značně omezený. Tyto komplikace znesnadňují určení kolize zrakem a je tedy vhodné využít i další smysl pro upozornění člověka na kolizi předmětů. Nejjednodušší pro vytvoření v počítači je zvuk, ale ten je vhodný spíše na upozornění, že se něco děje, nebo jako důsledek nějakého dění. Lepší variantou je hmatový vjem. Uživatel při pokusu uchopit rukou nějaký předmět dostane impuls do ruky. Uživatel si pak snadněji spojí obrazovou informaci s hmatový vjemem.
5.2. Hardware Použitý hardware lze rozdělit na 3 základní části: • Převodník z USB na RS-232 (COM) • Zpracování signálů z PC a aktivování prstů rukavice • Část s rukavicí pro hmatovou zpětnou vazbu
20
5.2.1. Převodník z USB na RS-232 První část hardwaru (viz obrázek 5.1) je tvořena pouze převodníkem z USB na port RS-232 (COM port, sériový port). Důvodem použití sériového portu bylo jeho jednoduché použití přes knihovnu ve Windows. Obsahuje totiž tři výstupy a pět vstupů, na které lze přímo přistupovat. Na výstupech lze nastavit vysokou nebo nízkou hladinu napětí. Na vstupech lze v danou chvíli vyčíst velikost napětí na konkrétním spoji. Nevýhodou sériového portu a využití knihoven Windows je zbytečně mnoho režie spojené ve výsledku s triviálními úkony. Celé zařízení by bylo možné připojit do počítače i přímo přes sériový port, ale v současnosti není již obvyklé, aby byl sériový port v počítači přítomen. Naopak USB port je běžnou součástí. Převodník jako USB zařízení má nevýhodu v instalaci dodatečných ovladačů. Je to ale zároveň i výhoda, protože lze pak v nastavení systému přiřadit převodníku libovolný COM port. Dále se domnívám, že v případě zkratu v zařízení rukavice pro hmatovou zpětnou vazbu by mohl být poškozen pouze USB převodník a nikoliv počítač. I když v případě sériového portu by měl být počítač také chráněn.
Obrázek 5.1 Převodník z USB na RS-232
21
5.2.2. Zpracování signálů z PC a aktivování prstů rukavice Druhá část hardwaru navazuje na sériový port (viz obrázek 5.2), ve kterém jsou připojeny výstupní piny RTS, DTR a TxD a celý obvod je připojen na pin GND (uzemnění). Nejprve je potřeba zamezit případnému přetížení dalších čipů omezením napětí na maximálně 5 V. V případě tohoto zapojení je napětí omezeno na 4,7 V. Všechny výstupy jsou připojeny na tzv. posuvný registr, který umožňuje přeměnit sériový výstup na paralelní. Díky tomu je možné ovládat všech pět prstů pomocí tří výstupů sériového portu. Z posuvného registru je pět paralelních výstupů připojeno na výkonový budič. Ten je napájen z externího zdroje, a pokud je konkrétní výstup aktivován, potom je napájen i odpovídající prst. Rukavice pro hmatovou zpětnou vazbu také podporuje vstup pomocí dvou tlačítek. Ta jsou připojena přímo na vstupy CTS a DSR sériového portu. Hlavní práci provádí posuvný registr (obvod 4094), který převádí sériový výstup z RS-232 portu na paralelní. Problém je, že jeho požadované vstupní napětí neodpovídá výstupnímu napětí na sériovém portu. Proto je mezi výstup z portu a připojení na obvod 4094 umístěn rezistor o odporu 10 kiloohmů a Zenerova dioda. Zenerova dioda propojuje výstup sériového portu s pinem GND v závěrném směru. Hodnota maximálního napětí diody je v tomto případě 4,7 V. Což znamená, že napětí vyšší než 4,7 V prorazí diodu a nedostane se na obvod 4094, který má požadovaný rozsah napětí 0 V až 5 V. Obvod 4094 neboli posuvný registr je složen z několika klopných obvodů. Každý klopný obvod si uchovává nějaký logický stav, který si obvody postupně předávají podle společného hodinového signálu. Obvod 4094 má navíc vstup „strobe“, který slouží pro předání všech stavů na výstup. Je tedy možné si nejprve připravit (naplnit) všechny stavy a pak zavolat strobovací impuls, který provede požadovanou akci. Obvod 4094 tedy potřebuje ke svému fungování tři vstupy. Ty jsou připojeny na tři výstupy sériového portu. Základní funkčnost tohoto zapojení probíhá následovně: • Strobovací impuls se nejprve musí vypnout, aby při změnách v obvodu 4094 nedocházelo ke změnám na jeho výstupu. To se docílí nastavením pinu RTS na hodnotu 0. • Pin TxD se nastaví na hodnotu 1 nebo 0, podle požadovaného výstupu. Tento pin je připojen jako datový vstup. • Pomocí pinu DTR se vyšle hodinový signál. Tím se aktuální hodnoty v obvodu 4094 posunou na další místo. Poslední pozice se ztrácí, pokud není připojena. Je důležité si uvědomit, že hodnota, která je vyslaná jako první, bude až 22
•
• •
na posledním výstupu (v případě, že používáme všechny výstupní registry). V tomto případě je třeba hodnotu pinu DTR nastavit dvakrát, protože obvod 4094 reaguje na změnu hodnoty z 0 na 1. Aby byl správně vytvořen signál, musí být DTR na hodnotě 0, následně musí být změněn na hodnotu 1, čímž se provede akce v posuvném registru (uloží se hodnota aktuální na pinu TxD). Nastavením pinu DTR na hodnotu 0 se připraví na poslání dalšího hodinového signálu. Opakují se kroky nastavení TxD (data) a DTR (hodinový signál), dokud se nepřenesou všechna požadovaná data. Nakonec se zavolá kladný strobovací impuls nastavením pinu RTS na hodnotu 1. Tím se aktuální hodnoty v obvodu 4094 nastaví na jeho výstup.
Cannon 9 PIN
NÁZEV
SMĚR
POPIS
1
CD
←
Carrier Detect
2
RxD
←
Receive Data
3
TxD
→
Transmit Data
4
DTR
→
Data Terminal Ready
5
GND
−−
System Ground
6
DSR
←
Data Set Ready
7
RTS
→
Request to Send
8
CTS
←
Clear to Send
9
RI
←
Ring Indicator
Obrázek 5.2 Sériový port (převzato z [12])
Z obvodu 4094 je pět výstupů připojeno na výkonový budič (obvod ULN2003A), který slouží ke spínání obvodů s příliš velkým proudem. Ten by mohl poškodit obvody, jako je například použitý 4094. Obvod ULN2003A má sedm vstupních míst a sedm výstupních. Pokud přivedeme proud na jeden vstup, bude pozice GND propojena s odpovídajícím výstupem. Na každý výstup z výkonového budiče je připojen jeden 23
odpor (47 Ohmů) a vibrační motor, který už je umístěn na rukavici. Vstupní data pro počítač jsou řešena pomocí dvou tlačítek na rukavici, která jsou připojena přímo do pinů sériového portu CTS a DSR. Celé zařízení je napájeno zdrojem o napětí 5 V a proudem maximálně 1000 mA. Zdroj se zapojuje do běžné elektrické sítě. Napájí vibrační motory na rukavici, obvody 4094 a UN2003A a vytváří napětí na obou tlačítkách.
Obrázek 5.3 Zapojení části zpracovávající signály z PC (pohled shora, čipy nejsou vidět, jsou umístěny z druhé strany desky)
5.2.3. Rukavice pro hmatovou zpětnou vazbu Poslední část hardwaru je tvořena samotnou rukavicí pro hmatovou zpětnou vazbu (viz obrázky 5.4 a 5.5). Rukavice je připojena svazkem devíti drátů o délce přibližně pět metrů, aby nebyl uživatel omezen délkou. Počet drátů vychází z potřeby pro připojení jednotlivých prstů (tedy pět drátů) a jeden drát pro uzavření obvodu k jednomu pólu napájení. Podobně je tomu i u dvou tlačítek, u kterých jsou potřeba celkem tři dráty. 24
Zmíněná dvě tlačítka slouží jako vstup pro počítač. Jsou umístěna na spodní straně ukazováčku a prostředníčku a na stisknutí tlačítek se používá palec. Nebyl by problém přidat tlačítka i na ostatní prsty, ale stisknutí tlačítka například na malíčku už je zbytečně složité. Také čím víc by bylo tlačítek, tím víc by bylo pro uživatele matoucí, které tlačítko má kterou funkcionalitu. Mimo to dvě tlačítka dobře korespondují se dvěma tlačítky myši. Hmatový vjem neboli výstup z počítače, je vytvářen pomocí vibračních motorů. Ty jsou umístěny shora přibližně na posledních kloubech prstů. I když by bylo lepší umístit vibrační motorky na spodní stranu prstů, protože člověk věci nejčastěji uchopí do dlaně, tak jsem v tomto případě musel provést ústupek pro umístění motorků, protože na spodní straně prstů jsou umístěna tlačítka. Na funkčnost rukavice umístění vibračních motorků nemá vliv, protože vibrace se celkem dobře rozloží do celého prstu.
Obrázek 5.4 Rukavice pro hmatovou zpětnou vazbu (pohled zespodu)
25
Obrázek 5.5 Rukavice pro hmatovou zpětnou vazbu (pohled shora)
5.2.4. Celkový seznam použitých součástek • • • • • • • • • •
Převodník z USB na RS-232 Konektor RS-232 pájecí 3x rezistor uhlíkový 10 kOhm 3x Zenerova dioda 4,7 V 4094 (8-bitový posuvný registr) ULN2003A (7x darlingtovoné pole) 5x rezistor uhlíkový 47 Ohm Adaptér síťový spínaný 5 V 1000 mA 5x vibrační motorek 2x tlačítkový spínač
26
Obrázek 5.6 Schéma zapojení
27
5.3. Software Pro ovládání rukavice je vytvořena knihovna ForceGlove. Pro práci se sériovým portem se používá WinAPI, přes kterou lze nastavovat aktuální stav výstupů sériového portu na True nebo False. Také se lze přímo dotazovat na stavy na vstupech sériového portu. Pro nastavení výstupů (piny DTR, RTS a TxD) jsou vytvořeny privátní funkce, které jen volají odpovídající funkce Windows. Pro implementaci rukavice pro hmatovou zpětnou vazbu v programu jsou dostupné tyto veřejné funkce: • bool getButton1() • bool getButton2() • bool openCom(int comPortNumber) • void closeCom() • void set (int thumb, int forefinger, int middlefinger, int ringfinger, int littlefinger) Funkce getButton1 a getButton2 vrací logickou hodnotu, tzn. zda jsou tlačítka rukavice stisknuta nebo nikoli. Nejprve se získá stav na sériovém portu a pak pomocí bitové masky vyfiltruje konkrétní tlačítko. Hodnota se vrátí na výstup funkce. Před použitím rukavice, nejčastěji tedy na začátku programu, je nutné zavolat funkci openCom, která má jako parametr číslo COM portu, na kterém se má s rukavicí komunikovat. Pokud se akce nepodaří, pak funkce vrací logickou hodnotu False. V opačném případě se provede inicializace rukavice a návratová hodnota je True. Při inicializaci rukavice se nastaví pin TxD (data) na False. Dále se provede poslání hodinového signálu nastavením výstupu DTR na True a potom na False, čímž se datová hodnota zapíše. Toto je nutné zopakovat osmkrát, aby se celé zařízení vynulovalo. Nakonec se pošle strobovací impuls přes RTS, aby se změny projevily. Tím se vypnou jakékoliv vibrace, které by mohly na rukavici zůstat, ať již při prvním připojení do elektrické sítě, nebo po předchozím programu (mohl být špatně ukončen a tedy na rukavici zůstal aktivní stav). Před ukončením programu je nutné zavolat funkci closeCOM. Ta nastaví na celé rukavici nulové hodnoty, takže po ukončení programu bude rukavice vypnutá. Nakonec funkce uvolní přiřazený port. Hlavní funkce pro ovládání rukavice je funkce set. Má pět parametrů, tedy každý parametr odpovídá jednomu prstu. Parametr je celé číslo, které se vyhodnotí tak, že hodnota 0 znamená vypnutou vibraci a jakákoliv jiná hodnota znamená vibraci zapnutou. Princip této funkce je závislý na posuvném registru (obvod 4094) zmíněný v části 5.2.2. Zpracování signálů z PC a aktivování prstů rukavice. Aby se mohly 28
provádět změny na výstupu, musí být vypnutý strobovací impuls, jinak by se změny projevovaly ihned na výstupu, a tím by rukavice reagovala neobvykle pro uživatele. Pro každý prst se musí nastavit pin TxD, který ovlivní, zda bude prst vibrovat či nikoli, a tedy poslat hodinový impuls nastavením DTR na True a potom na False. Stačí, aby se stav nastavil jen 5x, i když posuvný registr má výstupů osm. Využito je jen pět výstupů a zbylé tři již nic neovlivní. Po nastavení všech prstů se odešle strobovací impuls nastavením RTS na True. Nakonec se RTS nastaví na False, aby bylo možné při dalším nastavování provádět změny. Když je strob vypnutý, tak se výstupní stavy zachovávají, takže rukavice vibruje stále stejně, dokud nedojde ke změně nastavení. Podobně vypadala první varianta funkce set, ale ukázalo se, že zřejmě volání funkcí Windows příliš zdržuje procesor a bylo tedy potřeba kód zefektivnit. První test, který se nabízí, je neměnit nic na rukavici, pokud nový stav prstů je stejný, jaký byl naposledy nastavený. Tento stav je celkem běžný, pokud je použita rukavice například pro manipulaci s virtuálními předměty. Ve většině situací není žádný kontakt a tedy při každém cyklu se volá nastavení rukavice se všemi prsty vypnutými. Protože se tento stav stále zachovává na rukavici, je zbytečné, aby se znovu nastavoval. Proto je při každém spuštění funkce set nejprve spočítáno číslo odpovídající novému stavu na rukavici podle volaných parametrů. Nejnižších pět bitů tohoto čísla odpovídá jednotlivým prstům. Pak se jen provede test, zda je toho číslo stejné jako číslo z předchozího volání této funkce. Pokud je stejné, funkce se ukončí bez další změny. V opačném případě se pokračuje dál v nastavení nového stavu. Druhý test je založen na úvaze, že pokud se hodnoty v registru posouvají, tak se nemusí vždy nastavovat všechny hodnoty znovu, ale mohou se použít části původního stavu rukavice, pokud se vyskytují správné hodnoty na správných místech. Když je například aktuální stav v posuvném registru „00101“ (hodnota 0 znamená vypnutou vibraci a hodnota 1 znamená zapnutou vibraci) a má být nastavena hodnota „10111“, je zbytečné nastavovat všech pět pozic znovu, ale může se pouze přidat hodnota „11“ a hodnota „101“ se posune na správné místo. Ve výsledku se hodnoty budou měnit: „00101“ → „01011“ → „10111“. Test probíhá ve dvou krocích. Nejprve je nutné zjistit, zda se vůbec starý a nový stav překrývá. Pokud ano, tak od které pozice. Neboli kolik hodnot se má změnit, aby ve výsledku vznikl nový stav. Je nutno vytvořit bitovou masku „11111“ a provést cyklus, při kterém se posune bitová maska doprava při každém opakování. Číslo nejvíce vpravo se ztratí a číslo vlevo je nahrazeno nulou. Stejně se postupuje i pro číslo odpovídající novému stavu. Pokaždé se testuje, zda starý stav vymaskovaný bitovou maskou je stejný jako nový stav (průběžně bitově posouvaný). Při každém průchodu cyklu je navíc zvýšen inkrement, čímž je získáno číslo odpovídající počtu nutných nových zapsání. Inkrement bude mít hodnotu 0, pokud jsou stavy stejné (nemělo by nastat, protože by funkce měla skončit již na dřívějším testu). Hodnoty 1 až 5 (včetně) 29
odpovídají počtu přepisovaných pozic. Hodnota pět tedy znamená, že se musí starý stav nahradit celým novým stavem. Druhá část je samotné nastavování hodnot, jen je omezeno první částí, aby nedocházelo k více zápisům, než je nutné. Princip zůstává stejný. Nastaví se TxD (data) podle hodnoty a pak se pošle hodinový impuls. Nakonec se zapne a vypne strobovací impuls a uloží se nový stav jako starý pro případné další volání funkce set.
5.4. Jiná řešení Největší problém při vytváření hmatové rukavice bylo navrhnout a vytvořit komunikaci počítače s rukavicí na hardwarové úrovni. Rozhodujícími faktory byla cena použitých součástek, složitost zapojení, efektivita komunikace a dostupná literatura pro získání potřebných informací. Pro výstup z počítače byl zvolen právě sériový port, protože ho lze jednoduše ovládat, a protože pro kombinaci operačního systému Windows a sériového portu lze najít dostatečnou literaturu. Nevýhodou je, že se sériový port již příliš nepoužívá jako standardní výbava počítače, ale to je vyřešeno pomocí převodníku z USB na RS-232. Pro hlavní část zpracování výstupních dat z počítače a aktivování hmatového vjemu na rukavici by se nabízelo použití programovatelného mikročipu. Hlavní výhodou by byla rychlost komunikace počítače s mikročipem a také zpracování dat na mikročipu. Mikročip by také umožnil lépe zacházet s libovolným zařízením na rukavici. Například díky své rychlosti by mohl místo prostého zapnutí a vypnutí vibračního motorku na prstu regulovat sílu vibrací posíláním impulsů o různé délce. Nevýhodou mikročipu je jistě cena a množství základních znalostí pro správné naprogramování a zapojení mikročipu. Literatury je v tomto případě dostatek, takže naučit se pracovat s mikročipem je jen otázkou času. Větší problém jsou vstupní náklady pro programování mikročipu. Samotný mikročip drahý není, ale sada pro programování mikročipů se pohybuje v rámci tisíců korun. Protikladem k mikročipu je použití několika logických obvodů. V tomto případě nedochází ke složité komunikaci, ale výstup z počítače přímo ovládá rukavici. Myšlenka je taková, že pokud má být aktivováno pět zařízení pomocí tří výstupů sériového portu, můžou se uvažovat výstupy (vstup pro tuto část) jako logické hodnoty a přes pravdivostní tabulku (viz tabulka 5.1) navrhnout zapojení každého zařízené na rukavici. Pokusil jsem se toto zapojení vytvořit pomocí elektromagnetických relé (viz obrázky 30
5.7 a 5.8). Jednoznačnou výhodou je nízká cena, protože zapojení obsahuje málo součástek, které jsou levné, a zapojení je jednoduché. Při testování se vyskytl problém, že sériový port nebyl schopen spolehlivě sepnout všechna tři elektromagnetická relé. Stávalo se, že se například dvě sepnula, ale třetí zůstalo rozpojené. Tento problém by se dal vyřešit přidaným zdrojem, který by pomohl při spínání relé.
Obrázek 5.7 Varianta s elektromagnetickými relé (pohled zespodu)
Obrázek 5.8 Varianta s elektromagnetickými relé (pohled shora)
Logickým důsledkem použití pravdivostní tabulky je, že zapojení je schopno v každý moment aktivovat jen jedno zařízení na rukavici. Na druhou stranu pro změnu 31
aktivního prstu stačí změnit 1 až 3 stavy na sériovém portu. Tím se dá dosáhnout rozumné rychlosti komunikace s rukavicí a v ideálním případě měnit aktivní zařízení dostatečně rychle, aby pro uživatele vznikla iluze, že je zároveň více prstů aktivních. Zapojení jsem zkoušel pouze na LED diodách, kde bylo poznat blikání jednotlivých diod, ale i tak byl výsledek celkem dobrý. Je ale možné, že při použití vibračních motorků, které jsem nakonec použil, by bylo nutné posílat delší impuls, než v případě LED diod, protože je vibrační motorek mechanický. V tom případě by nebylo možné vytvořit iluzi více aktivních prstů zároveň. Podobný problém by také mohl nastat v případě použití rukavice ve skutečné aplikaci. Pokud by to byla aplikace pracující v cyklech pro vykreslování grafiky a jednou za cyklus by se zavolalo aktivování rukavice, pak je sice možné aktivovat více prstů rychle za sebou, ale potom zůstane aktivní pouze jeden prst, který tak zůstane přes všechny výpočty až do dalšího cyklu. Při testování se ještě vyskytl problém, že použitá elektromagnetická relé pracují s cívkou, která vychyluje mechanický kontakt. Ten při sepnutí a rozpojení klepne a tedy při používání častého přepínání na třech relé vytváří velmi rušivé drnčení. IN 1
IN 2
IN 3
OUT
1
1
1
1
1
1
0
4
1
0
1
2
1
0
0
3
0
1
1
-
0
1
0
5
0
0
1
-
0
0
0
-
Tabulka 5.1 Připojení vstupů a výstupů
V případě samotné rukavice jsem chtěl docílit vytváření hmatového vjemu na prstech s nastavitelnou intenzitou. Bohužel způsob, jak této vlastnosti docílit, je velmi obtížný, zvláště pokud jsem musel vyrobit rukavici bez pokročilého technického zázemí. Byl jsem omezen na součástky, které jsem koupil a byl schopen poskládat v domácím prostředí tzv. „na koleně“. Kvůli tomu byla většina možností příliš komplikovaná nebo naopak příliš velká, takže by se nedala umístit na každý prst, aniž by to omezovalo uživatele v práci. Jednou z možností bylo například použití vzduchových polštářků, které by se natlakovaly a vypouštěly podle potřeby. To by mohlo působit vcelku věrohodně jako hmatový vjem, ovšem umístit tyto kapsle do rukavice, přivést do nich vzduch 32
hadičkami, vytvořit vhodné ventily a také vzduchové pumpy, je dosti komplikované. Zvlášť při zachování rozumné velikosti. Také ovládání by nejspíš bylo potřeba řešit pomocí mikročipu. Další možností by bylo použití magnetu umístěného v cívce. Podle množství proudu, který by se pustil do cívky, by tak byl magnet tlačen proti prstu. Zde jsem narazil na problémy s vytvářením vlastní cívky, protože kvůli specifickým vlastnostem cívky je nelze koupit již vyrobené. Můj pokus vyrobit cívku dopadl tak, že byla cívka příliš slabá, což by se nejspíš dalo vylepšit preciznější výrobou, ale hlavně byla cívka příliš velká na to, aby se umístila na prst. Navíc stejně jako vzduchovou pumpičku by bylo potřeba cívku ovládat mikročipem, jinak by bylo řešení buď s málo hodnotami intenzity nebo příliš komplikované a tím i pomalé.
5.5. Možná vylepšení Mnou vytvořená rukavice není ideální, protože jak návrh, tak i provedení má spoustu prostoru pro vylepšení. Bez lepší techniky výroby nelze příliš vylepšit samotné provedení. Maximálně lze vylepšit vzhled rukavice, protože v aktuálním stavu vypadá jako prototyp. Co se týče návrhu, bylo by lepší použít programovatelné mikročipy, protože poskytují více možností, jak jsem již zmiňoval v části 5.4. Jiná řešení. Rukavici pro hmatovou zpětnou vazbu by bylo možné rozšířit o bezdrátovou komunikaci. Není důležité, jestli by to byla technologie Wi-Fi, Bluetooth nebo Infrared. Podstatné je, že by nebylo potřeba přivádět dráty, které překáží při pohybu ruky a omezují také vzdálenost, kam až lze s rukavicí dojít. Jsou zde ovšem také nevýhody tohoto řešení, které by mohly převážit nad volností pohybu. Nejdůležitější je potřeba napájení. Část spotřebuje mikročip, který by se staral o bezdrátovou komunikaci. Další část napájení spotřebují vibrační motorky nebo jiný způsob vytváření hmatového vjemu. Záleželo by, jaké by byly nároky na zdroj elektřiny a jestli by tento zdroj nebyl příliš velký a těžký, aby byl umístěn na rukavici. Alternativou by pak bylo vytvořit oblek (nebo část obleku) a baterie mít umístěné například na zádech. Současná verze rukavice také neumožňuje detekci ohnutí prstů. V prvotním návrhu rukavice měl tuto možnost obstarat systém OptiTrack. Technicky by bylo možné data získávat a zpracovat, ale byl by problém s přesností hodnot ze zařízení OptiTrack a také s četností chyb a výpadků, kdy se některý bod nepodaří správně zaměřit nebo se na čas úplně ztratí, protože je pro některé kamery zastíněný. Laboratoř HCI vlastní rukavici, která je dle mého názoru řešena velmi elegantně – ohýbání prstů je zde detekováno pomocí optických vláken, která vedou od zápěstí na konec prstu a zpátky. Pomocí LED diody se do vlákna svítí a na druhém konci se 33
měří úbytek světla. Čím více světla dorazí na konec vlákna, tím je prst méně ohnutý. V případě použití a umístění mikročipu přímo na rukavici by se dala vylepšit přesnost určení polohy pomocí digitálního akcelerometru a gyroskopu. Pomocí gyroskopu by se lépe určovalo naklonění ruky a pomocí akcelerometru, který by poskytoval údaje o změně polohy ruky i v případě, že by snímací body byly pro OptiTrack neviditelné (zastíněné nebo mimo zaměřitelnou oblast). Pokud by fungoval OptiTrack dobře, pomohlo by to alespoň k přesnějšímu pohybu.
34
6. Ukázková aplikace – Test První testovací aplikace byla vytvořena pro ověření, zda jsou rukavice správně připojeny a jestli je funkční výstup na všechny prsty. Všechny aplikace pracují na sériovém portu COM 10. Je tedy nutné v nastavení systému přiřadit převodníku USB na RS-232 stejné číslo portu. Aplikace nemá grafický výstup, ale pouze vypisuje informace do konzole. Na začátku se program pokusí otevřít komunikaci na sériovém portu. Pokud se spojení nepodaří, vypíše se chybová hláška a číslo chyby, podle které je možné dohledat informace ve Windows API. Při úspěšném navázání spojení pokračuje aplikace dál. Protože při zapojení rukavic do napájení bývají všechny prsty aktivní, aplikace nejprve nastaví všechny výstupy na nulu (vypnutí všech prstů by se mělo provést již při připojení programu na rukavice) a vypíše tuto informaci na obrazovku. Po každé akci následují tři vteřiny pauza, během kterých se nechává vibrace aktivní. Postupně se otestují vibrace na jednotlivých prstech od palce až po malíček. Vždy proloženy pauzou. Informace, který prst by měl být právě aktivní, se vždy vypíše na obrazovku, aby měl uživatel kontrolu, že rukavice funguje správně. Poté se aktivují všechny prsty opět po dobu tří vteřin. Poslední test je vytváření vlny, která postupuje od palce přes všechny prsty až po malíček a zase zpátky. V každé chvíli je aktivní právě jeden prst a mezi změnou je prodleva 200 ms. Jeden cyklus tedy trvá přibližně 1600 ms a zopakuje se celkem pětkrát. Nakonec se uzavře spojení přes sériový port, což by také mělo vypnout jakoukoliv nastavenou vibraci na rukavici.
35
7. Ukázková aplikace – Fyzikální test Cílem vytvoření této aplikace bylo testování rukavice pro hmatovou zpětnou vazbu ve virtuální scéně se simulací fyziky. Bylo testováno, zda rukavice pomáhá při znázornění kolizí a tedy vylepšuje vnímání vzájemné polohy virtuálního znázornění rukavice a zbylých objektů, případně pomáhá ke zlepšení dojmu z prostoru. Aby bylo možné zkoušet kolize s různými předměty, je virtuální scéna tvořena uzavřenou místností, ve které je náhodně vygenerováno dvacet různě velkých koulí a dvacet různě velkých kvádrů (viz obrázek 7.1).
Obrázek 7.1 Scéna z ukázkové aplikace – Fyzikální test
36
7.1. Zobrazovací a fyzikální engine Pro zobrazení a práci s virtuálními objekty je použit engine Ogre3D (ObjectOriented Graphics Rendering Engine). Je dostupný zdarma ve formě zdrojového kódu a vydáván pod licencí MIT. To znamená, že text licence musí být umístěný s programem. Ogre3D podporuje knihovny Direct3D i OpenGL a lze ho používat pod operačními systémy Windows, Linux a Mac OSX. Ogre3D je zaměřený výhradně na vykreslování virtuální scény, ale je dodatečně rozšiřitelný například o zvuk, fyziku nebo síťovou komunikaci. Pro práci s fyzikou je použita knihovna Bullet (Bullet physics library). Ta je propojena s enginem Ogre3D pomocí podpůrné knihovny OgreBullet. Knihovna OgreBullet slouží k propojení enginu Ogre3D a knihovny Bullet přes přidané metody. Pomocí těchto metod se používání fyzikální knihovny Bullet zjednodušuje, protože pomáhají převádět datové typy používané v Ogre3D do knihovny Bullet a naopak.
7.2. Zpracování dat ze zařízení OptiTrack Pro tuto aplikaci je nutné umístit na rukavici jedno tzv. Rigid Body, díky kterému může OptiTrack sledovat pozici a rotaci rukavice v prostoru. Rigid Body je množina sledovaných bodů navzájem pevně spojená, takže software systému OptiTrack může tuto množinu detekovat i v případě, že se body dostanou mimo snímaný prostor. Aplikace si pro zlepšení plynulosti pohybu ruky ukládá posledních deset hodnot pozic a rotací. Při přijetí nových souřadnic se nejstarší zahazuje a zapíše se nová. Při přesunu virtuální ruky na aktuální místo se vypočítá průměr z uložených hodnot.
7.3. Detekce doteků ruky Použitá fyzikální knihovna Bullet se v této aplikaci stará o kolize rukavice s virtuálními objekty a mezi objekty navzájem. Vytváří gravitaci, aby objekty nezůstávaly viset v prostoru, dále řeší hmotnost objektů a tření objektů o jiné povrchy. Samotná aplikace detekuje kolize u jednotlivých prstů a podle toho aktivuje příslušný hmatový vjem na rukavici. Detekce je založena na vytváření paprsků v předem daných směrech na klíčových místech prstů. V každém cyklu aplikace se vykoná následující: • Aktualizují se klíčové body, pro které se bude testovat kolize. Body jsou vždy 37
• • •
dva na každém prstu. První bod je na konci prstu a druhý u kořene. Pro celou rukavici je dohromady 10 prstů. Pro každý bod se vytvoří celkem 14 paprsků do různých směrů, aby se rovnoměrně pokryl prostor kolem bodů. Všechny paprsky mají danou maximální délku, do které se testuje výskyt jiného objektu. Pokud je detekce úspěšná, uloží se kladná hodnota pro daný prst. Po provedení všech testů se pomocí funkce set z knihovny rukavice nastaví aktuální stav vibrací podle uložených hodnot z předchozího kroku.
7.4. Funkce přiřazené tlačítkům rukavice Tlačítko umístěné na prostředníčku slouží pro rotaci kamery. Pokud je tlačítko stisknuto, vypočítá se změna polohy rukavice od poslední známé pozice. Rozdíl hodnot v horizontálním směru změní rotaci kamery podle svislé osy Y a rozdíl hodnot ve vertikálním směru určí rotaci kamery podle vodorovné osy X. Tlačítko na ukazováčku slouží pro snadnější manipulaci s virtuálními předměty. Pokud je tlačítko stisknuto, funguje rukavice jako magnet na nejbližší objekt. Při každém vykreslení scény se změří druhá mocnina vzdálenosti od rukavice ke všem objektům. Není nutné počítat skutečnou vzdálenost, na kterou by bylo potřeba použít odmocninu, ale stačí pouze porovnat druhé mocniny vzdálenosti. Na objekt, který je rukavici nejblíže, se aplikuje síla směřující k ruce. Pokud je tlačítko uvolněno nebo se k rukavici dostane blíže jiný virtuální objekt, původní objekt přestane být přitahován a pokračuje v pohybu podle své aktuální rychlosti. Na objekt po celou dobu působí i gravitace.
38
8. Ukázková aplikace – Webový prohlížeč Aplikace byla vytvořena s cílem vyzkoušet rukavici s hmatovou zpětnou vazbou při interakci s plochými ovládacími prvky v prostoru – například při práci s virtuální klávesnicí, o kterou by se v reálném světě ruka zarazila. V této aplikaci se tedy testuje, zda hmatová zpětná vazba postačí k tomu, aby si byl uživatel vědom, že již došlo ke kolizi ruky s plochou. Ukázková aplikace je založena na knihovně Awesomium, která umožňuje zobrazit okno webového prohlížeče ve virtuální scéně. Zobrazovací jádro webového obsahu je stejné jako používá prohlížeč Google Chrome. Pro práci s objekty ve scéně se používá engine Ogre3D (viz 7.1. Zobrazovací a fyzikální engine) a na určení polohy a rotace rukavice je použitý systém OptiTrack (viz 7.2. Zpracování dat ze zařízení OptiTrack). Virtuální scéna se skládá z osmi nezávislých oken webových prohlížečů, která jsou rozmístěna do kruhu kolem uživatele. Dále jsou zde malé náhledy jednotlivých oken a virtuální klávesnice pro zadávání znaků do aktivního okna (viz obrázek 8.1).
Obrázek 8.1. Scéna z ukázkové aplikace – Webový prohlížeč
39
8.1. Interakce s oknem webového prohlížeče Interakce s oknem webového prohlížeče se děje pomocí kolize rukavice s aktivním oknem. V místě kolize je pak vytvořena událost odpovídající stisku levého tlačítka myši. Také je možné simulovat posun kurzoru se stisknutým levým tlačítkem myši. Toho se docílí nejprve kolizí rukavice s oknem prohlížeče a následně posunem ruky při stálé kolizi. Posun se ukončí, jakmile se ruka dostane opět mimo aktivní okno. Tato možnost může být využita například pro posun obrazu v elektronických mapách. Pro lepší přehled mezi okny prohlížečů jsou v horní části obrazovky zobrazeny náhledy oken. Náhledy se mohou použít k rychlému přepnutí okna jednoduše kolizí rukavice s konkrétním náhledem. Všechny předchozí kolize (interakce s aktivním oknem a změna aktivního okna přes náhled) jsou doprovázeny aktivací vibrace na ukazováčku.
Obrázek 8.2 Změna aktivního okna pomocí rotace oken
40
Změnu aktivního okna na sousední levé nebo sousední pravé okno je možné zvednutím rukavice nad náhledy oken. Okna prohlížečů začnou rotovat kolem uživatele podle pohybu rukavice ve směru osy X (horizontální směr). Pokud rukavice klesne pod výšku náhledů oken, je vybráno okno nejblíže přímému pohledu kamery. Během rotace oken webového prohlížeče je uživatel informován pomocí vibrací na malíčku a palci.
8.2. Virtuální klávesnice Virtuální klávesnice slouží pro simulování klávesnice skutečné, která by byla těžce ovladatelná při použití rukavice. Stejně jako okno webového prohlížeče se s klávesnicí pracuje pomocí kolizí rukavice s plochou klávesnice. Samotná virtuální klávesnice je tvořena obrázkem a na oblasti kláves jsou namapovány příslušné znaky. Pokud dojde ke kolizi rukavice s klávesnicí, dopočítá se přesná pozice kolize. Pokud pozice odpovídá klávese, příslušný znak nebo událost se odešle do aktivního okna. Stisknutí klávesy na virtuální klávesnici je doprovázeno vibrováním ukazováčku na rukavici.
8.3. Funkce přiřazené tlačítkům rukavice Tlačítko na ukazováčku se chová velmi podobně jako kolečko myši. Při stisknutí tlačítka se při každém vykreslení scény vypočítá rozdíl polohy rukavice oproti předcházející poloze. Čím je rozdíl větší, tím se obsah aktivního okna posune o více pixelů nahoru nebo dolů. Posun po webové stránce je často používaná funkce, takže je vhodné, aby byla umístěna na jednom z tlačítek rukavice. Tlačítko umístěné na prostředníčku slouží ke zvětšení a zmenšení obsahu aktivního okna. V principu funguje stejně jako tlačítko na ukazováčku ve smyslu počítání odchylky polohy oproti poslední pozici rukavice. Rozdíl je v určení, zda se má obsah okna zvětšit nebo zmenšit. U posunu obsahu okna je jednoznačné, že pokud se má obsah posunout ve svislém směru, tak se i rukavice musí posunout ve stejném směru. V případě zvětšování a zmenšování se může uživatel rozhodnout pro směr pohybu. Pohyb nahoru zvětší obsah aktivního okna a pohyb dolů obsah okna zmenší. Je ale možné, že bude chtít uživatel zvětšit či zmenšit obsah okna pohybem v horizontálním směru. Aplikace tento problém řeší porovnáním změny polohy v horizontálním a vertikálním směru a podle toho, která 41
vzdálenost je větší, se vybere příslušný směr. Aby měl uživatel jistotu, že je některé z tlačítek stisknuto, je vždy aktivována vibrace na stejném prstu jako je tlačítko.
42
9. Závěr V rámci práce byla vytvořena rukavice pro hmatovou zpětnou vazbu, knihovna pro její ovládání a ukázkové aplikace demonstrující její praktické využití. Aplikace, které ukazují práci s rukavicí, jsou fyzikální test a webový prohlížeč. V aplikaci „fyzikální test“ je pozornost zaměřena na detekci kolizí rukavice s virtuálními objekty. Ve druhé aplikaci „webový prohlížeč“ je pozornost zacílena na demonstrování ovládání webového prohlížeče pomocí ruky (tj. bez pomoci klávesnice a myši). Rukavice, která byla vytvořena pro potřeby práce, je sestavena z dostupných součástek. V práci je přesný technický popis navržené rukavice. Jsou zde zmíněny také neperspektivní možnosti, které byly z různých důvodů zamítnuty. Cíle práce se podařilo dosáhnout. Výsledkem je funkční rukavice, která realizuje hmatovou zpětnou vazbu. Ovšem je nutné podotknout, že toto konkrétní řešení rukavice není ideální, protože se nabízí další lepší způsoby pro tvorbu rukavice s hmatovou zpětnou vazbou. Důležitým aspektem se jeví především cena a technické zázemí pro tvorbu rukavice. Dalšími možnostmi technického rozšíření rukavice jsou použití mikročipu pro zpracování dat z počítače a bezdrátový přenos dat pro komunikaci rukavice s počítačem. Důvody, proč tyto technické možnosti nejsou do práce začleněny, je již zmíněná vysoká pořizovací cena součástek a nedostatečné technické zázemí.
43
10. Literatura a použité zdroje 1. KAINKA, Burkhard. Využití rozhraní PC : Měření, řízení a regulace pomocí standardních portů PC. Ostrava-Plesná : HEL, 1999. 133 s. ISBN 80-902059-3-3 2. 05 zajímavých zapojení 1. díl. 1. české vydání. [s.l.] : HEL, 1995. 226 s. ISBN 80902059-4-1 3. SKALICKÝ, Petr. Procesory řady 8051. 2. rozš. vyd. Praha : BEN - technická literatura, 1998. 159 s. ISBN 80-86056-39-2 4. Fakulta informatiky Masarykovy univerzity [online]. 2003 [cit. 2011-05-09]. Historie a vývoj počítačové myši - Myš letos slaví 40. narozeniny. Dostupné z WWW:
5. SteelSeries [online]. 2009 [cit. 2011-05-09]. SteelSeries – World of Warcraft® MMO Gaming Mouse:. Dostupné z WWW: 6. HOLČÍK, Tomáš. Živě.cz [online]. 2000-10-11 [cit. 2011-05-09]. Invex: optická vibrující myš Logitechu. Dostupné z WWW: 7. Clojure Companion Cube [online]. 2010-12-09 [cit. 2011-05-25]. Anecdotal Experiences of a Dvorak Keyboard Layout Typist. Dostupné z WWW: 8. ČERVINKA, Radek. Netcode.cz [online]. 2008 [cit. 2011-05-11]. Wii Remote (Wiimote) hardware a informace. Dostupné z WWW: 9. GALI-3D : Aktivní stereoskopie [online]. 2011-05-24 [cit. 2011-05-24]. Co je to 3D stereoskopie. Dostupné z WWW:
44
10. GALI-3D : Pasivní stereoskopie [online]. 2011-05-24 [cit. 2011-05-24]. Co je to 3D stereoskopie. Dostupné z WWW: 11. 3D TV Technology [online]. 2011-01-11 [cit. 2011-05-24]. Parallax Barrier 3D Technology - 3D Without Glasses. Dostupné z WWW: 12. OLMR, Vít. HW.cz [online]. 2005-12-12 [cit. 2011-05-15]. HW server představuje Sériová linka RS-232. Dostupné z WWW: 13. OptiTrack [online]. 2011-05-24 [cit. 2011-05-24]. Dostupné z WWW: 14. Awesomium [online]. 2011-05-25 [cit. 2011-05-25]. Web-Browser Framework. Dostupné z WWW: 15. Bullet physics library [online]. 2011-05-26 [cit. 2011-05-26]. Game Physics Simulation. Dostupné z WWW: 16. Ogre Wiki [online]. 2010-06-15 [cit. 2011-05-26]. OgreBullet. Dostupné z WWW: 17. Stehlik.net [online]. 2007-10-19 [cit. 2011-05-26]. Ovládání sériových portů. Dostupné z WWW: 18. VÁGNER, Vlastimil. Svetelektro.com [online]. 2010-10-05 [cit. 2011-05-26]. OVLÁDÁNÍ IO 4094 SÉRIOVÝM PORTEM PC. Dostupné z WWW: 19. Ogre Wiki [online]. 2010-12-19 [cit. 2011-05-26]. OgreNewt 2. Dostupné z WWW: 20. ShareCG [online]. 2009 [cit. 2011-05-26]. Hand - 3D Model - ShareCG. Dostupné z WWW: 21. YouTube [online]. 2010-10-21 [cit. 2011-05-26]. Ogre Bullet Character Controller Test . Dostupné z WWW:
45
22. Ogre Add-ons Forum [online]. 2009-11-10, 2009-11-11 [cit. 2011-05-26]. Kinematic Character Controller Falling Through the Floor. Dostupné z WWW: 23. Ogre Add-ons Forum [online]. 2010-12-04, 2010-12-18 [cit. 2011-05-26]. Compound shapes and Character Controller to Plane collision. Dostupné z WWW: 24. Ogre Add-ons Forum [online]. 2008-10-05, 2008-12-07 [cit. 2011-05-26]. Mesh to convex hull shape. Dostupné z WWW: 25. CG Textures [online]. 2011-05-26 [cit. 2011-05-26]. Grass0073. Dostupné z WWW: 26. CG Textures [online]. 2011-05-26 [cit. 2011-05-26]. TilesOrnate0046. Dostupné z WWW: 27. CG Textures [online]. 2011-05-26 [cit. 2011-05-26]. Fruit0010. Dostupné z WWW: 28. CG Textures [online]. 2011-05-26 [cit. 2011-05-26]. Fruit0005. Dostupné z WWW: 29. CG Textures [online]. 2011-05-26 [cit. 2011-05-26]. Plastic0027. Dostupné z WWW: 30. CG Textures [online]. 2011-05-26 [cit. 2011-05-26]. Plastic0114. Dostupné z WWW: 31. VÍTEK, Jan. Svět hardware [online]. 2006-08-21 [cit. 2011-05-26]. Klávesnice a jejich historie. Dostupné z WWW: 46
11. Přílohy Příloha č. 1 – Obsah přiloženého CD • zdrojové kódy v C++ • spustitelné aplikace • tuto práci ve formátu pdf • data sheety obvodů 4094 a ULN2003A • návod ke spuštění aplikací (readme.txt) • licenční text Ogre3D
Příloha č. 2 – Odkazy na nákup použitých součástek • Převodník z USB na RS-232: http://www.ges.cz/cz/usb-1-1-rs232k-GES06915001.html • Konektor RS-232 pájecí: http://www.gme.cz/cz/can-9-z-p801-040.html • rezistor uhlíkový 10 kOhm: http://www.gme.cz/cz/rru-10k-p119-041.html • Zenerova dioda 4,7 V: http://www.gme.cz/cz/bzx83v004-7-p222-017.html • 4094 (8-bitový posuvný registr): http://www.gme.cz/cz/4094-p427-083.html • ULN2003A (7x darlingtovoné pole): http://www.gme.cz/cz/uln2003a-p380-005.html • rezistor uhlíkový 47 Ohm: http://www.gme.cz/cz/rru-47r-p119-027.html • Adaptér síťový spínaný 5 V 1000 mA: http://www.gme.cz/cz/adapter-sitovy-spinany-5v-1000ma-mw0510sz1-p751516.html • vibrační motorek: http://www.stmobil.cz/ • tlačítkový spínač: http://www.gme.cz/cz/p-b1715-blue-p630-005.html • Elektromagnetické relé: http://www.ges.cz/cz/m4-5-h-GES05700014.html
47