České vysoké učení technické v Praze Fakulta elektrotechnická
Diplomová práce
Virtuální cyklistický trenažér Bc. Michal Černohorský
Vedoucí práce: Ing. David Sedláček
Studijní program: Elektrotechnika a informatika, strukturovaný, navazující magisterský Obor: Výpočetní technika Prosinec 2009
ii
iii
iv
Poděkování Rád bych na tomto místě poděkoval všem, kteří mi jakýmkoliv způsobem pomáhali při tvorbě této diplomové práce. Zvláště pak děkuji svému vedoucímu, Ing. Davidu Sedláčkovi za odbornou pomoc, podnětné nápady a čas, který mi při tvorbě návrhu, konstrukci a implemetaci řešení věnoval. Dále bych rád poděkoval Ing. Zdeňkovi Trávníčkovi za odbornou pomoc a Institutu intermédií ČVUT za zapůjčení techniky pro realizaci projektu. V neposlední řadě bych rád vyjádřil poděkování svému otci Ing. Miroslavu Černohorskému za odbornou pomoc v hardwarové části projektu. v
vi
Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Hradci Králové, dne 3. 1. 2010
........................................................ vii
viii
Abstract This thesis deals with design and implementation of the virtual cycle trainer. The project consists of three parts. The first one (hardware) gathers bicycle speed and steering information and regulates feedback (terrain braking effect). The second part deals with filming of stereoscopic movies of bicycle tracks and capture altitude data by GPS receiver. The last part is the implementation of bicycle simulator software. This application displays the track data in reaction of user behaviour, shows statistical figures and control the terain braking system.
Abstrakt Tato práce se zabývá konstrukcí a implementací cyklistického trenažéru. Projekt se skládá ze tří částí. První, hardwarová část, dodává potřebné informace o rychlosti a poloze natočení řidítek a zároveň slouží pro zpětnou vazbu uživateli ve formě simulace nerovnosti terénu. Druhou částí práce je zachycení a testování stereoskopického videa ukázkových tras pro cyklistický simulátor a získání dat výškového profilu těchto tras pomocí GPS přijímače. Třetí fází je implementace samotného simulátoru. Ten v reakcích na získaná data přehrává úseky cesty, zobrazuje statistické údaje o jízdě a ovládá brzdný systém pro simulaci výškového profilu trasy.
ix
x
Obsah 1 Úvod..................................................................................................................................................1 1.1 Úvod do projektu.....................................................................................................................1 1.2 Záměr práce.............................................................................................................................2 1.3 Struktura práce.........................................................................................................................2 1.4 Sběr dat a zpětná vazba............................................................................................................3 1.5 Vizuální vjem............................................................................................................................4 1.5.1 Úvod.................................................................................................................................4 1.5.2 Stereoskopie.....................................................................................................................4 2 Existující řešení................................................................................................................................9 2.1 Úvod..........................................................................................................................................9 2.2 Tacx..........................................................................................................................................9 2.3 Computrainer..........................................................................................................................11 2.4 Porovnání a shrnutí................................................................................................................13 3 Hardware........................................................................................................................................15 3.1 Teoretický rozbor...................................................................................................................15 3.1.1 Brzdný systém................................................................................................................15 3.1.2 Ovládání brzdného systému...........................................................................................16 3.1.3 Senzory...........................................................................................................................17 3.1.4 Možnosti ovládání přes sériový port USB.....................................................................19 3.1.5 Použité řešení.................................................................................................................20 3.2 Vývojová deska Arduino s procesorem ATMega328............................................................21 3.3 Schéma zapojení....................................................................................................................23 3.4 Programování mikroprocesoru..............................................................................................23 3.4.2 Vývojové prostředí Arduino..........................................................................................24 3.4.3 Řešení pro cyklotrenažér...............................................................................................25 4 Software..........................................................................................................................................27 4.1 Úvod.......................................................................................................................................27 4.2 Teoretický rozbor...................................................................................................................27 4.2.1 Komunikace po sériovém portu.....................................................................................27 xi
4.2.2 Stereoskopie v OpenGL.................................................................................................29 4.2.3 Zpracování videozáznamu.............................................................................................31 4.2.4 Utilita Merge..................................................................................................................33 4.5 Systémové požadavky a instalace..........................................................................................37 5 Záznam stereoskopického videa...................................................................................................39 5.1 Vytvoření záznamu pro stereoskopické promítání................................................................39 6 Testování a zhodnocení výsledků.................................................................................................41 6.1 Testování v průběhu projektu ...............................................................................................41 6.2 Věrohodnost celkového vjemu..............................................................................................41 7 Závěr...............................................................................................................................................43 7.1 Shrnutí projektu.....................................................................................................................43 7.2 Další vývoj.............................................................................................................................44 7.2.1 Přenos aplikace do modelovaného prostředí..................................................................44 7.2.2 Možnosti realizace větvení videa...................................................................................44 7.3 Ukázky...................................................................................................................................44 8 Použitá literatura...........................................................................................................................47 A Schéma zapojení...........................................................................................................................49 B Uživatelská příručka.....................................................................................................................51 C Obsah DVD...................................................................................................................................53
xii
Seznam ilustrací Blokové schéma projektu.....................................................................................................................1 Hotové komerční řešení firmy Tacx.....................................................................................................3 Paralaxy................................................................................................................................................5 Parametry pro stereoskopický záznam a zobrazování..........................................................................6 Zatmívací LCD brýle............................................................................................................................6 Schéma zobrazení využitím rozdílné polarizace obrazů......................................................................7 Ukázka z balíku programů Tacx Trainer software II firmy Tacx ......................................................11 Ukázka z aplikace Interactive Real Course Video.............................................................................12 Ukázka programu SpinScan™ Pedal Stroke Analyzer......................................................................13 Ilustrace vzdušné brzdy......................................................................................................................15 Ilustrace magnetické brzdy.................................................................................................................16 Servomotor Hi-tec HS-645MG..........................................................................................................17 Princip indukčního snímače...............................................................................................................18 Principy optických snímačů...............................................................................................................19 Realizace snímání frekvence otáček...................................................................................................20 Vývojový kit Arduino Deumilanove..................................................................................................21 Blokové schéma Arduina Deumilanove.............................................................................................22 Realizace řízení trenažéru...................................................................................................................23 Vývojové prostředí Arduina...............................................................................................................25 Grafická karta nVidia Quadro FX......................................................................................................29 Geometrie "toed-in"............................................................................................................................30 Geometrie asymetrického komolého jehlanu.....................................................................................31 Legenda programu VRCycle..............................................................................................................35 Funkční klávesy programu VRCycle.................................................................................................35 Ilustrace geometrie pro zachycení a následné zobrazení scény..........................................................39 Znázornění změny prostorového vjemu vzhledem k pozici pozorovatele.........................................40 Uchycení videokamer.........................................................................................................................40 Testování projektu cyklistického trenažéru........................................................................................42 Ukázka uživatelského rozhraní programu VRCycle..........................................................................44 Ukázka trasy Chvojno cyklistického simulátoru VRCycle................................................................45 Ukázka trasy Hradec cyklistického simulátoru VRCycle..................................................................45
xiii
xiv
Seznam tabulek Tabulka 1: Harmonogram vývoje projektu..........................................................................................2 Tabulka 2: Srovnání systémových požadavků produktů firem Taxt a RacerMate.............................13 Tabulka 3: Komponenty realizace trenažéru......................................................................................20 Tabulka 4: Specifikace vývojové desky Arduino Deumilanove........................................................22 Tabulka 5: Srovnání použitých videokodeků.....................................................................................32 Tabulka 6: Přehled struktury nabídek programu VRCycle................................................................34
xv
xvi
KAPITOLA 1. ÚVOD
1 Úvod V úvodu tohoto dokumentu se seznámíme se záměry projektu, popíšeme jeho strukturu a stručně rozebereme jednotlivé části realizace a problematiku stereoskopie. Jsou zde popsány základní principy, které jsou podrobněji rozebrány v dalších kapitolách. 1.1 Úvod do projektu Představme si simulátor cyklistického závodu. Jakých detailů můžeme dosáhnout, abychom se co nejvíce přiblížili realitě? V tomto projektu se budeme zabývat řešením tohoto problému z několika pohledů – ovládací zařízení, vizuální vjem a zpětná vazba uživateli. Realizace ovládání zahrnuje jízdní kolo, které se ve spojení se senzory pro rychlost a měření stavu naklopení řidítek stává jedinečným herním ovladačem. Vizuální stránku tvoří stereoskopický videozáznam, který je v závislosti na rychlosti jízdy závodníka promítán na zobrazovací zařízení (monitor, projekční plátno). Jedná se o tzv. „aktivní stereoskopii“, která je blíže popsána v kapitole 1.5.2. Zároveň je uživatel neustále informován o stoupání terénu či jiných statistických údajích trasy (rychlost závodníka, ujetá vzdálenost a jiné). Zpětnou vazbou je myšlena simulace obtížnosti terénu pomocí brzdného systému při stoupání či klesání (viz. kapitola 3.1.1). Brzda v dané chvíli klade odpor zadnímu kolu. Zjednodušené schéma celého projektu můžete vidět na obrázku č. 1. V dokumentu rozebereme použité algoritmy a řešení, zmíníme jejich alternativy a jejich porovnáním vyslovíme patřičné závěry. Jedná se především o způsoby stereoskopického promítání a jejich implementace, použití různých videodekodérů pro záznam tras a vhodný formát těchto souborů pro stereoskopické přehrávání.
Obrázek 1: Blokové schéma projektu
1
KAPITOLA 1. ÚVOD
1.2 Záměr práce Hlavním cílem práce je dosáhnout věrohodnosti, co nejvíce se přiblížit skutečnému prožitku závodníka. Existující aplikace (viz kapitola 2) poskytují poměrně kvalitní řešení. Úkolem tohoto projektu není vytvořit kopii, ale řešení o stupeň blíže skutečnosti na základě poskytnutí prostorového vjemu uživateli. Hardwarová část by měla být funkční, spolehlivá a bezporuchová. Samotný program by měl být vnořen do přehledného uživatelského rozhraní. Zde je kladen důraz na jednoduchost ovládání, úměrné množství zobrazených informací (legendy) a grafické zpracování. Další důležitou vlastností je simulace sportovního prožitku a tréninku skrze toto zařízení. Projekt jako celek by měl být schopen konkurovat současným aplikacím. Míra využitelnosti výsledného řešení je poměrně široká. Prvotním účelem je vznik tréninkového vybavení pro sportovní zařízení nebo v omezeném rozsahu i pro domácí účely. Po dalším rozšíření by mohl projekt sloužit pro virtuální prohlídky památkových i přírodních pamětihodností, měst či jiných prostředí. V neposlední řadě může tento projekt zajímavou formou prezentovat možnosti virtualizace.
1.3 Struktura práce V minulé kapitole jsme již zmínili, že projekt lze rozdělit na tři části. První nazveme hardwarovou podporou. Zahrneme sem konstrukci brzdného systému a jeho ovládání, realizaci zařízení pro sběr dat a pro komunikaci s počítačem. Podrobný popis hardwarového řešení naleznete v kapitole 3. Druhou částí je implementace aplikace pracovně nazvané VRCycle. Ta s uživatelem komunikuje formou grafického uživatelského rozhraní, poskytuje mu jednoduchou nabídku, osobní profil a statistické údaje tras a jízd. Hlavním obsahem této části je zpracování a zobrazení zdrojového videosignálu na základě dat získaných z připojeného zařízení. Pro stereoskopické promítání se využívá grafické karty, která obsahuje quadbuffer. Aplikace je vyvíjena na platformě Linux. Vývoj softwaru včetně popisu použitých knihoven je podrobně rozebrán v kapitole 4. Poslední částí je záznam a zpracování stereoskopického videosignálu cyklistických tras pro tuto aplikaci. Tomuto tématu je věnována kapitola 5. V tabulce č. 1 můžete vidět harmonogram vývoje celého projektu, který odpovídá skutečnému času stráveného prací jednoho člověka pro vznik konečného řešení.
N á z e v ú k o lu
D oba trvá ní (ve dnech) 1. H a r d w a r e - k o n s t r u k c e a o v lá d á n í 14 V y t v o ř e n í v id e o z á z n a m ů 5 S o ft w a r e - A k t iv n í s t e r e o s k o p ie 7 S o ft w a r e - P o d p o r a o v lá d a c íc h z a ř íz e n í a b r z d y 5 S o ft w a r e - G U I 7 S o ft w a r e - T e s t o v á n í, la d ě n í 7 D o k u m e n t a c e p r o je k t u 5
H a r m o n o g r a m g r a f ic k y ( v t ý d n e c h ) 2. 3. 4. 5. 6. 7. 8. 9. 10.
Tabulka 1: Harmonogram vývoje projektu
2
KAPITOLA 1. ÚVOD
1.4 Sběr dat a zpětná vazba Základem hardwarové části je zařízení, které nám přes počítačový port umožní číst vstupní data senzorů pro rychlost a polohu řidítek a ovládat servomotor brzdného systému. Ze široké škály vstupně-výstupních USB modulů byla vybrána vývojová deska s mikroprocesorem společnosti Atmel ATMega328 [1] nazvaná Arduino Duemilanove (viz obrázek 3). Arduino je schopné vnímat okolní prostředí pomocí digitálních a analogových vstupů z různých senzorů. Zároveň může ovlivňovat okolí připojenými LED diodami, servomotory a dalšími výstupními periferiemi. Mikroprocesor na desce Arduina se programuje pomocí programovacího jazyku Wiring (založeném na jazyku C) ve vlastním vývojovém prostředí [2]. Projekty založené na Arduinu mohou jednoduše komunikovat se softwarem na PC prostřednictvím sériového portu USB. Další důležitou výhodou je podpora více operačních systémů, zejména systému Linux, na kterém je náš projekt vyvíjen. Jako senzor pro čtení frekvence otáček poslouží indukční snímač TURCK Ni5K11-AP6x, pro získání polohy natočení řidítek pak potenciometr o odporu 50 kΩ. Podrobnější popis celého řešení najdete v kapitole 3. Alternativou by bylo využít některého z hotových komerčních řešení, které je již zhotoveno pro tento problém (viz obrázek č. 2). Čtení a případná rekonfigurace tohoto zařízení ve spojení s vyvíjenou aplikací by však bylo komplikované. Zpětnou vazbou je myšleno kladení odporu proti otáčení zadního kola ve smyslu simulace nerovnosti terénu. Jednoduše řečeno při stoupání do kopce musí závodník vynaložit větší sílu než při jízdě po rovině nebo z kopce. Pro realizaci existují různé principy brzdných systémů. Na trhu je poměrně široká nabídka těchto výrobků. Popis a porovnání všech druhů najdete v kapitole 3.1.1. Naše řešení zahrnuje brzdu magnetickou. Ta dokáže regulovat brzdný odpor až do výkonu 1500 W [4]. Jak již bylo zmíněno, ovládání brzdného účinku zajišťuje výkonný servomotor HITEC HS-645MG, který svou polohou nastavuje předem spočtený účinek magnetické brzdy. Více v kapitole 3.1.1.
Obrázek 2: Hotové komerční řešení firmy Tacx (zdroj: [3])
3
KAPITOLA 1. ÚVOD
1.5 Vizuální vjem 1.5.1 Úvod Základním prvkem virtuální reality aplikace VRCycle je stereoskopický videozáznam. V rámci této práce jsou zhotoveny 3 ukázkové trasy. Nabízí se otázka, proč není projekt situován do vymodelovaného prostředí, které poskytuje spoustu možností, neomezený plynulý pohyb a jiné výhody. Zobrazení prostorového videozáznamu skutečné trasy však účastníkovi přinese „živý“ pohled a to je jeden ze záměrů této práce. Přenést projekt do počítačové grafiky by však mohlo být dalším zajímavým rozšířením aplikace.
1.5.2 Stereoskopie 2 Prostorové vnímání člověka je založeno na dvou principech. Základní rozlišovací schopnost nám dává perspektiva – optický jev, při kterém jsou vzdálenější objekty zdánlivě menší než objekty blízké. Ke zlepšení orientace v prostoru a odhadu vzdáleností objektů nám však pomáhá i stereoskopické vnímání založené na principu spojení obrazů z levého a pravého oka. Tyto obrazy nejsou stejné a právě jejich rozdíly nám umožňují dosáhnout dojmu prostoru. Tento princip popsal již v roce 1838 Sir Charles Wheatstone. Tento britský vědec také zkonstruoval první stereoskopické zařízení [4]. Stereoskopie je technologie, která umožňuje vyvolat prostorový vjem ze dvourozměrné předlohy. Abychom tíženého efektu docílili, je nutné „oklamat“ lidský mozek. Ten si prostorový vjem vytváří ze dvou odlišných obrazů – levého a pravého oka. Všechny zobrazovací metody stereoskopie jsou proto založeny na principu oddělit informace pro obě oči a dodat každému odlišný obraz. Tento způsob vytváří „virtuální“ třírozměrný vjem. I přes správné nastavení introokulární vzdálenosti a dalších parametrů je vnímané prostředí nekonzistentní, protože každé oko vidí pouze plochý obraz. Tato nedokonalost je zrakovým systémem do určité míry „tolerována“. Z měření vyplívá, že maximální separace objektů na snímcích může být 1/30 vzdálenosti pozorovatele od zobrazovacího zařízení. To znamená, že pokud by se uživatel díval na stereoskopický displej ze vzdálenosti 1 m, maximální separace by měla být cca 3 cm. Pokud je zobrazovaný objekt za projekčním plátnem, vzniká tzv. pozitivní paralax (viz obrázek č. 3a). Ve druhém případě, kdy je objekt situován před projekční plátno je zobrazení pro levé oko posunuto doprava a pro levé oko doleva, vzniká tzv. negativní paralax (viz obrázek č. 3b). Analogicky platí, že pro předměty zobrazené v rovině plátna platí tzv. nulový paralax, nedochází k žádné separaci těchto objektů (viz obrázek č. 3c).
4
KAPITOLA 1. ÚVOD
Obrázek 3a: Pozitivní paralax (zdroj: [5])
Obrázek 3b: Negativní paralax (zdroj: [5])
Obrázek 3c: Nulový paralax (zdroj: [5]) 5
KAPITOLA 1. ÚVOD Záznam stereoskopického videa spočívá v použití dvou videokamer pevně umístěných ve vzdálenosti očí. Existuje několik modelů pozic a natočení snímacích zařízení. Většina z nich je postavena na experimentálním zkoumání. Na obrázku č. 4 je vidět, jakými parametry je potřeba se pro správné postavení kamer zabývat. Z empirického výzkumu vycházejí dvě základní geometrie pro záznam i promítání stereoskopicky. Jsou to metody asymetrického jehlanu a toed-in (více v kapitole 4.2.2 a 5.1). Podrobnější rozbor zpracoval Andrew Woods a kolektiv ve své práci o zkreslení obrazu ve stereoskopických systémech [6].
Obrázek 4: Parametry pro stereoskopický záznam (a) a zobrazování (b) (zdroj: [6])
Daleko složitějším problémem je samotný způsob stereoskopického promítání. V závislosti na možnostech a účelu je k dispozici několik technologií: Anaglyfické brýle (červeno-modré, červeno-zelené) – Na každé oko je jeden barevný filtr, přes červené sklo se zobrazí jen modře zobrazené objekty a přes modré sklo širší spektrum barev kromě objektů zobrazených modře. Různě polarizovaná skla brýlí a filtry na projektorech – Každé oko dostane svůj vlastní kompletní obraz, tuto technologii využívá například kino IMAX nebo digitální kina systému RealD. Schéma této metody je znázorněno na obrázku 6. Zatmívané brýle (shutter glasses) – Brýle mají skla z tekutých krystalů, jež střídavě zatmívají, synchronně s grafickou kartou počítače a každé oko dostává obraz zvlášť (obrázek č. 5).
Obrázek 5: Zatmívací LCD brýle (zdroj: [7]) 6
KAPITOLA 1. ÚVOD technologie INFITEC – Projektory promítají základní barvy (RGB) na mírně posunutých vlnových délkách a brýle dokážou tyto dva obrazy oddělit. autostereoskopické monitory – Vysílají různý obraz do různého směru. HMD zobrazovací jednotky – Využívají dva mikrodispleje. Více informací o zmíněných metodách najdete na internetovém portálu [7]). Naše řešení bylo testováno na principu zatmívaných brýlí (shutter glasses).
Obrázek 6: Schéma zobrazení využitím rozdílné polarizace obrazů (zdroj: [8])
7
KAPITOLA 1. ÚVOD
8
KAPITOLA 2. EXISTUJÍCÍ ŘEŠENÍ
2 Existující řešení Myšlenkou virtuálního cyklistického trenažéru se na světovém trhu zabývá několik společností. V této kapitole si po krátkém úvodu představíme některá komerční řešení a to od největšího evropského výrobce Tacx a produkt nazvaný CompuTrainer od firmy RacerMate, světového leadera v tomto oboru. 2.1 Úvod Cyklistický trenažér je sportovní vybavení, které umožní jízdu na kole bez pohybu vpřed. Toho je docíleno upnutím zadního kola do podstavce. Součástí konstrukce je válec, na který pevně doléhá pneumatika zadního kola. Po roztočení pedálů klade tento válec na základě daného mechanismu odpor proti směru pohybu. Pro tento brzdný efekt se používá několik principů (vzdušný, magnetický, kapalný nebo mechanický – viz kapitola 3.1.1). Uživatel zařízení ovládá pomocí mechanické páky nebo vestavěného počítače. Virtuální cyklistický trenažér je velice komplexní simulátor vybaven senzory pro sledování informací jako je rychlost, tempo nášlapů, polohy řidítek nebo závodníkova pulsu. Některá dražší řešení disponují i motorizovaným válcem, který roztáčením zadního kola simuluje jízdu z kopce. Celé zařízení je přes USB port spojeno s osobním počítačem nebo notebookem. Software dodaný výrobcem pak obsahuje trasy, ve kterých je uživateli promítán záznam ze skutečného cyklistického závodu nebo projížďky virtuální krajinou. Uživateli je nabídnut vysoce efektivní trénink s předem stanovenou charakteristikou, kontrolou průběhu a porovnáním s dlouhodobou statistikou uživatele včetně grafického zpracování. Poslední novinkou je možnost virtuálního závodů více uživatelů po internetové síti. Komerční cyklistické trenažéry jsou primárně využívány pro sportovní trénink závodníků, ale umožňují i instalaci v posilovnách nebo pro domácí účely. Mezi přední výrobce světového trhu cyklistických trenažérů patří společnosti Tacx, RacerMate, Kinetic, CycleOps a Blackburn [9]. Až na holandský Tacx se jedná o americké výrobce. Nás bude zajímat především nabídka firem Tacx a RacerMate, kteří narozdíl od ostatních výrobců poskytují kompletní řešení cyklistického simulátoru včetně softwaru.
2.2 Tacx Holandská společnost Tacx vyrábí širokou škálu cyklotrenažérů a jejich příslušenství. Jako jedna z mála je dostupná také na českém trhu. V její nabídce najdeme stojany s méně výkonnými magnetickými brzdami i kompletní řešení cyklistického simulátoru obchodně nazvané Fortius. To zahrnuje motorovou brzdou s max. výkonem 1500W, umožňující velice přesné dávkování brzdné síly podle profilu trati včetně jízdy z kopce. Ovládání je realizováno pomocí myši nebo ovládací jednotky, kterou lze umístit na řidítka. Přímé propojení přes ovládací jednotku k PC (přes USB port nebo bezdrátově pomocí Bluetooth) umožňuje trénink v přírodě pomocí virtuální reality nebo videoprojížďky zobrazované na monitoru. Uživatel si může zvolit závodění se soupeři na dráze, na silnici nebo MTB závod a sledovat uložené informace o rychlosti, ujeté vzdálenosti, frekvenci šlapání a tepové frekvenci. Softwarové vybavení se skládá z několika aplikací.
9
KAPITOLA 2. EXISTUJÍCÍ ŘEŠENÍ Virtual Reality Tento program nabízí jízdu virtuální krajinou. Soupeře v závodu tvoří virtuální jezdci, kteří přehazují, vstávají ze sedla a při kolizi padají z kola. Uživatel si může zvolit tým i vlastní bicykl, určit počasí, směr a sílu větru a další podmínky závodu. V základní nabídce je pět různých tratí – Extreme, Velodrome, Atlantis, Callisto a Olympus. Real Life Video & ErgoVideo Tato aplikace se nejvíce podobá projektu této diplomové práce. Nabízí řadu videozáznamů skutečných závodů a tratí o různých obtížnostech. Video je doprovázeno informacemi o výškovém profilu, rychlosti, ujeté vzdálenosti a dalšími statistickými údaji. K dispozici je 23 videozáznamů. Real Life Training Spojením jízdy na trenažéru a dat portálu Google Earth se zabývá aplikace Real Life Training. Uživatel si může zvolit prakticky jakoukoliv destinaci a pohybovat se ve 3D krajině, kterou známe z Google Earth. Catalyst (3D) Srdeční puls, síla nebo gradient. Tyto informace a mnoho dalších zpracovává program Catalyst. Slouží především pro nastavení profesionálního tréninkového programu. V jeho rozšíření 3D je trénink přenesen do virtuálního kurzu, ve kterém uživatel sleduje svůj pohyb po dráze a formou graficky zdařile zpracovaných dat je informován o statistikách své jízdy. Multiplayer Skrze kalendář závodů umístěném na webovém portálu Tacx [3] se můžete zůčastnit interaktivního závodu kdekoliv na světě. Vašimi oponenty jsou skuteční jezdci, uživatelé téhož produktu Tacx. Funkcí aplikace je tedy zprostředkování hromadných závodů přes internet. Všechny aplikace jsou součástí balíku Tacx Trainer software II (ukázka na obrázku č. 7). Systémové požadavky jsou shrnuty v tabulce č. 2. Produkt Fortius lze na českém trhu pořídit za 19 900 Kč. Více informací o virtuálním cyklotrenažéru firmy Tacx najde na webovém portálu [3].
10
KAPITOLA 2. EXISTUJÍCÍ ŘEŠENÍ
Obrázek 7: Ukázka z balíku programů Tacx Trainer software II firmy Tacx
2.3 Computrainer Druhým významným výrobcem kompletního řešení cyklistického simulátoru je RacerMate. Tato společnost se více než 15 let zaměřuje především na produkci softwaru spojeného s cyklotrenažéry. Krom toho nabízí i programy pro vytváření vlastních tratí (Course Builder a TOPO USA Course Creation Software). RacerMate vyrábí však i hardware a elektroniku cyklotrenažérů rozdělenou do kategorií podle náročnosti zákazníka. Elektronický pedál SpinScan™, který snímá sílu jednotlivých nášlapů závodníka a Adjustable Aerodynamic Drag Factor (nastavitelný aerodynamický odpor) jsou jedinečnou výbavou této firmy. RacerMate nabízí dva komplexní produkty. Prvním z nich je Velotron – počítačově kontrolovaný elektronický bicykl. Ten je krom osobního užití určený i pro rehabilitační zařízení. Druhým produkt nazývaný CompuTrainer se velice podobá komplexnímu řešení simulátoru konkurenční firmy Tacx. Ten je vybaven magnetickou brzdou o síle 1500 W a prodává se v základní verzi Pro nebo rozšířené verzi s větší přesností získaných dat Lab. Propojení s PC je ve všech verzích realizován přes USB port. Na rozdíl od produktů společnosti Tacx nepodporuje snímání polohy řidítek. Do softwarové výbavy patří kromě již zmíněných aplikací pro tvorbu tras tyto programy: Interactive 3D Pro virtuální jízdu krajinou je určena aplikace Interactive 3D. V porovnání s řešením firmy Tacx není příliš graficky propracovaná, nabízí však více statistických informací (spálené kalorie, aerodynamický odpor, rozbor stisku pedálů). Po skončení jízdy je uživateli poskytnut detailní report. Interactive Real Course Video Jedná se o velice podobnou aplikaci Interactive3D, namísto virtuální krajiny však zobrazuje videozáznamy skutečných tras. K dispozici je 31 videozáznamů. Ty jsou kódovány pomocí Xvid kodéru v rozlišení PAL. Obrazová kvalita je nižší než u produktů společnosti Tacx. Ukázka z tohoto programu je na obrázku č. 8. 11
KAPITOLA 2. EXISTUJÍCÍ ŘEŠENÍ SpinScan™ Pedal Stroke Analyzer Unikátní řešení firmy RaceMate nabízí aplikaci pro analýzu rozložení síly a polohy chodidla při nášlapech. Uživatel pak pozná nevhodné postavení těla a naučí se vytěžit ze svého výkonu maximum. Snímek z tohoto programu můžete vidět na obrázku č. 9. Coaching Software Aplikace pro detailní analýzu trasových dat a přípravu tréninkového programu. S přesností 30krát za sekundu zpracovává vstupní data a formou grafů nabízí uživateli náhled do statistik své jízdy. Závodník si dané informace může uložit v textové formě, která je čitelná programy třetích stran jako je Cycling PeaksTM Software. MultiRider 3D Tento program dokáže propojit více trenažérů a umožnit tak více uživatelům společného tréninku nebo závodu. Může sloužit jako vybavení sportovního zařízení. Nejedná se o spojení těchto aplikací přes počítačovou síť jako u řešení firny Tacx, ale o možnost připojení více trenažérů na jeden počítač.
Obrázek 8: Ukázka z aplikace Interactive Real Course Video
12
KAPITOLA 2. EXISTUJÍCÍ ŘEŠENÍ
Obrázek 9: Ukázka programu SpinScan™ Pedal Stroke Analyzer I společnost RacerMate dodává svůj software v balících dle náročnosti uživatele. Cena skupiny produktů nazvaná Lab se v přepočtu pohybuje kolem 28 000 Kč. Systémové požadavky jsou značně nižší než u předchozího řešení. Srovnání těchto informací můžete vidět v tabulce č. 2. Více o produktech RacerMate na webovém portálu [10].
Systém. požadavky Tacx Trainer software II Procesor Paměť Volné místo na disku Grafická karta Paměť gr. Karty operační systém
RacerMate Computrainer Lab
Pentium 4 (3.0 GHz) Pentium 4 (2.0 GHz) 1024 MB (XP), 2048 MB (Vista) 256 MB (XP), 512 MB (Vista) 2 GB neuvedeno kompatibilní s DirectX 9 kompatibilní s DirectX 9 256 MB 128 MB MS Windows XP/Vista/7 MS Windows XP/Vista/7 (verze 32-bit/64-bit) (verze 32-bit/64-bit)
Tabulka 2: Srovnání systémových požadavků produktů firem Taxt a RacerMate
2.4 Porovnání a shrnutí 3 Některá srovnání zmíněných produktů společností Tacx a RaceMate již byla zmíněna nebo jsou patrné z textu. CompuTrainer disponuje zajímavou hardwarovou výbavou elektronického pedálu, ale poměrně důležitý senzor pro snímání polohy řidítek v řešení zahrnut není. To je sice při promítání videozáznamů tras postradatelné, ale pro účely virtuální reality velice omezující. Zpracování brzdného systému je u obou konstrukcí velice podobné. Výhodou modelu Fortius je bezdrátová komunikace s PC. Co se týče softwarových balíků, nabízí oba výrobci ucelený komplet velice podobných aplikací. I v této kategorii je ale řešení firmy Tacx výhodnější. Po stránce počítačové grafiky je tento projekt lépe propracován, nabízí animace, umělou inteligenci i lépe zpracovanou legendu. Spojení s aplikací Google Earth přináší velice zajímavou funkci. I přesto, že 13
KAPITOLA 2. EXISTUJÍCÍ ŘEŠENÍ se CompuTrainer chlubí unikátními funkcemi, jedná se spíše o marketingový tah, celkově proti konkurenčnímu produktu firmy Tacx o několik let zaostává. Výhodou mohou být nižší systémové nároky produktu CompuTrainer. Zákazníci Tacx poukazují na omezený počet volně stažitelných tras a horší technickou podporu společnosti. Pokud bychom chtěli srovnat existující řešení s vyvíjeným systémem, má cenu zaměřit se pouze na hardware a aplikace pro promítání videozáznamů. V softwarové části sice nejsou nabídnuty tak zajímavé lokace tras, ale přínos třetího rozměru je pro závodníka jedinečným zážitkem. Systémové nároky (viz kapitola 4.5) jsou díky této funkci velice specifické a zařízení pro stereoskopické zobrazování poměrně nákladné. Podrobnější srovnání bude vysloveno v závěru práce (kapitola 7).
14
KAPITOLA 3. HARDWARE
3 Hardware První fází realizace projektu je konstrukce trenažéru a instalace zařízení pro čtení potřebných dat a ovládání brzdného systému přes sériový port. V této části vezmeme v úvahu možné alternativy řešení, ze kterých vyslovíme závěry pro projekt cyklistického trenažéru. 3.1 Teoretický rozbor 3.1.1 Brzdný systém Systém pro odpor, který je kladen proti pohybu zadního kola a dává tak uživateli pocit stoupání terénu, může být realizován několika způsoby. U jednotlivých přístupů hodnotíme výkon, hlučnost, opotřebení a finanční náklady. V následujícím si tyto principy rozebereme. Vzdušná brzda Hlavní součástí jednotky je vzdušná turbína (větrák), kterou cyklista svou silou roztáčí. Regulací přívodu vzduchu je možné měnit účinnost této brzdy. Toto řešení je velice známé ze vzdušných veslovacích systémů. Výhodou je věrohodnost účinku odporu, který se zvyšující se rychlostí závodníka stoupá. Nevýhodou je hlučnost systému a relativně nízký maximální výkon brzdy. Jedná se o nejlevnější řešení. Ukázku vzdušné brzdy můžete vidět na obrázku č. 10.
Obrázek 10: Ilustrace vzdušné brzdy (zdroj: [11]) Magnetická brzda Tento systém se skládá ze tří kotoučů, které jsou radiálně sesouhlaseny. Krajní kotouče jsou obloženy permanentními magnety, které v dané vzájemné poloze vytvářejí magnetické pole. Toto pole působí proti roztáčení kotouče mezi nimi, který je spojen s hřídelí, na kterou doléhá zadní kolo. Brzdný efekt lze regulovat vzájemnou polohou permanentních magnetů. Na obrázku č. 11 je vidět ukázka uložení permanentních magnetů (vlevo) a prostředního roztáčeného kotouče (vpravo). Předností tohoto systému je velice tichý provoz, omezením pak maximální výkon brzdy. Finanční náklady jsou v porovnání s ostatními přístupy průměrné.
15
KAPITOLA 3. HARDWARE
Obrázek 11: Ilustrace magnetické brzdy
Kapalinová brzda Principem je kombinace magnetické brzdy, kde je roztáčený kotouč tvořen setrvačníkem ponořeným do komory s kapalinou. Důsledkem je vyšší výkon této brzdy za poměrně tichého chodu. Při opakovaném zahřívání kapaliny však vlivem její expanze dochází ke snadnému opotřebení systému. Řešení s kapalinou brzdou je poměrně nákladné. Mechanická brzda Nejpoužívanějším řešení dnešních rotopedů je brzda mechanická. Brzdný efekt zajišťuje tření textilních pásek o roztáčený setrvačník. Jedná se o nejjednodušší a poměrně výkonné řešení, dochází však k zahřívání kotouče a rychlému opotřebení systému. Odstředivá brzda Malé procento trenažérů využívá princip odstředivá brzdy. Odstředivá síla vychyluje pláty na obvodu roztáčeného kotouče. Ty jsou pak třeny o vnější kolejnici a vytváří tak brzdný odpor. Systém může být stejně jako magnetická brzda ponořen do kapaliny. Účinnost této brzdy však nelze regulovat.
3.1.2 Ovládání brzdného systému V této části si popíšeme možnosti ovládání brzdného systému, tedy regulaci brzdného odporu, které zařízení vyvíjí. Zde je potřeba prozradit, že pro realizaci jsme vybrali brzdu magnetickou, která je cenově dostupná, není náchylná k opotřebení a umožňuje snadné ovládání. Účinnost brzdy lze regulovat natočením vnějšího kotouče s permanentními magnety. V řešení, které používáme, je toho docíleno táhlem (ocelové lanko), které danou polohu nastaví. Nejvhodnější řešení pro ovládání brzdy je instalace servomotoru, který bude táhlem pohybovat. Servomotor je motor, u kterého lze na rozdíl od běžného motoru nastavit přesnou polohu natočení osy. Je řízen prakticky výhradně tranzistorovými měniči s pulzně-šířkovou modulací. Poloha hřídele servomotoru je zjišťována elektricky pomocí fotoelektrického snímače. Signál snímače polohy je přiveden pomocí zpětné vazby na regulátor, který porovnává skutečnou polohu motoru s žádanou polohou. Na základě rozdílu žádané a skutečné polohy regulátor řídí měnič a tak nastavuje motor na žádanou polohu. 16
KAPITOLA 3. HARDWARE Pro naše účely je potřeba výkonnější modelářské servo. Napájecí napětí těchto zařízení se pohybuje v rozsahu 5-6 V. Šířky pulzů krajních poloh natočení hřídele jsou 600 μs a 2400 μs. Tahy modelářských serv se pohybují mezi 2-11 kg/cm (tah 1kg/cm udává, že servo utáhne předmět o váze 1kg zavěšený ve vzdálenosti 1cm od osy otáčení hřídele). Použitý servomotor (Hi-tec HS 645MG) o tahu 7,7 kg/cm je znázorněn na obrázku č. 12.
Obrázek 12: Servomotor Hi-tec HS-645MG (zdroj: [12])
3.1.3 Senzory Pro zjištění informace o rychlosti jízdy závodníka je potřeba snímat otáčky válce, který zadní kolo roztáčí. Obvod válce je 92 mm, rozsahu rychlostí 1 – 100 km/h budou odpovídat frekvence otáček 3 – 300 Hz. Při výběru si kromě možné četnosti pracovních cyklů všímáme parametrů napájení a snímací vzdálenosti. Uvažme následující možná řešení. Indukční snímač Indukční snímač slouží pro vyhodnocování přítomnosti kovového materiálu. Je možné ho použít v prostředí prašném i venkovním. Snímač je určen pro zapojení do stejnosměrných obvodů s rozsahem napájecího napětí 10-30V nebo obvodů střídavých v rozsazích 22-250V. Různé typy indukčních snímačů nabízí spínací vzdálenosti v rozsahu 1 – 50 mm a maximální četnost cyklů v rozsahu 5-1000Hz. Základ snímače tvoří oscilátor pracující na principu změny činitele jakosti jádra Q při přiblížení kovového materiálu (viz obrázek č. 13). Tato změna se projeví útlumem kmitů oscilátoru. Vysazení kmitů oscilátoru vyhodnotí prahový detektor, který řídí klopný obvod ovládající výkonový koncový stupeň. Odstraněním kovového materiálu z aktivní spínací zóny oscilátor obnoví kmitání. Podle toho o jaký druh spínače jde (spínací nebo rozpínací), se výstup spojí nebo rozpojí při přiblížení kovového materiálu do aktivní zóny snímače. Na snímač může mít vliv elektromagnetické rušení. Rušivý efekt může do obvodů snímačů pronikat jak rezonanční cívkou, tak i napájecími přívody. Nelze ani vyloučit možnost infiltrace rušení přes kapacitní vazbu kovového pouzdra snímače. Ve snaze zabránit těmto vlivům se do snímačů zapojují filtry, které mají vliv na spínací frekvenci snímače. Všeobecně platí, že čím je snímací frekvence nižší, tím je odolnost snímače proti rušení vyšší.
17
KAPITOLA 3. HARDWARE
Obrázek 13: Princip indukčního snímače (zdroj: [13])
Magnetický snímač Magnetické snímače reagují na vnější magnetické pole. Rozdělujeme je podle vnitřního zapojení na hallové a jazýčkové. Spínací vzdálenost určuje síla použitého magnetu, specifikuje se velikostí magnetické indukce (6-18 mT). Snímají do frekvence 1000 Hz, rozsah napájecího napětí se dle typu pohybuje mezi 10-60 V. Senzor pracuje na základě rozpoznání změny magnetického pole způsobené permanentním magnetem. Skutečnost, že magnetické pole procházející nemagnetickým kovem umožňuje, aby senzor identifikoval polohu permanentního magnetu i přes kovovou stěnu. Detekovat lze všechna běžně používaná provedení permanentních válcových magnetů různé intenzity. Optický snímač Tyto snímače fungují na principu vysílání a příjmu světelného paprsku. Dělí se na transmisní – mezi vysílačem a přijímačem je předmět, který cloní paprsek (obrázek č. 14a), reflexní – světlo je vysíláno na odrazovou plochu odkud se vrací zpět do přijímače (předmět cloní paprsek, obrázek č. 14b) a difúzní – vysílač a přijímač snímají odraz paprsku od reflexního povrchu (obrázek č. 14c). Optické snímače nacházejí upotřebení v oblasti robotiky, automatizace a montáže. Každá konstrukční řada má své výhody a je specializovaná na svou vlastní oblast použití. Pracovní rozsah těchto snímačů je až 10 m. Napájení optických snímačů nabývá rozsahu 15 -40 V. Kapacitní snímač Kapacitní snímače vyhodnocují změnu kapacity vyvolanou předmětem, který vstoupí do elektrického pole kondenzátoru. To znamená, že mohou snímat nejen vodivé ale i nevodivé materiály, jejichž permitivity jsou dostatečně velké (např. sklo, kapaliny, sypké materiály). Pracují v rozsahu jmenovitého napájecího napětí 6–36 V. Snímače se nejčastěji používají na měření hladiny vody, olejů, sypkých hmot přes stěnu nádrže, kontrolu počtu výrobků na balících linkách, kontrolu přítomnosti výrobků na linkách, řízení vypouštění nebo plnění vodních nádrží, snímání a určování tloušťky dřeva při jeho zpracování.
18
KAPITOLA 3. HARDWARE
Obrázek 14: Principy optických snímačů (zdroj: [13]) Druhým snímacím zařízením, které budeme v našem projektu potřebovat je součástka, která nám určí stav polohy řidítek. Jako nejjednodušší a nejlacinější řešení se nabízí použití otočného lineárního odporového děliče napětí (potenciometru). Informace o senzorech byly nastudovány z webového portálu [13].
3.1.4 Možnosti ovládání přes sériový port USB Pro ovládání brzdného systému, čtení frekvence otoček válce a snímání polohy řidítek je potřeba zařízení s alespoň jedním analogovým vstupem pro potenciometr, jedním digitálním vstupem pro snímač otáček (za předpokladu, že snímač vrací logický signál) a digitálním výstupem pro ovládání servomotoru brzdného systému. Český trh nabízí velké množství vstupně-výstupních USB modulů určené především pro průmyslové využití. Pořízení těchto zařízení (bez analogových vstupů) je poměrně nákladné (ceny se pohybují od 1300 Kč). Nepřítomnost analogových vstupů by navíc vyžadovala přídavný AD převodník. Ceny zařízení s vestavěnými vstupy pro spojitý signál jsou zhruba dvojnásobné. Další řešení nabízí vývojové desky založené na programovatelných 8-32 bitových mikročipech, které nabízí například společnosti PIC nebo Atmel. Tyto desky jsou vyráběny jak samotnými výrobci mikroprocesorů, tak i samostatnými subjekty. Cenově příznivé moduly nabízí česká společnost PK-Design [14]. Jejich zásadní nevýhodou je opět nedostupnost analogového vstupu pro měření napětí, které je teprve v budoucích produktech plánováno. Nejvhodnějším řešením je projekt Arduino od italských vývojářů. Nabízí přímé výstupy pro ovládání servomotorů, 19
KAPITOLA 3. HARDWARE digitální i analogové vstupy. Disponuje jednoduchým naprogramováním a podporou operačního systému Linux. Díky dostupnosti a rozšíření existuje uživatelská komunita zveřejňující řadu příkladů, tutoriálů a knihoven. Cena tohoto produktu se pohybuje kolem 800 Kč. Více o projektu Arduino a zmíněné platformě je popsáno v kapitole 3.2.
3.1.5 Použité řešení Výsledné řešení vychází z předchozí analýzy. Součásti trenažéru byly vybírány s ohledem na vhodné parametry, náklady na pořízení a dostupnost na českém trhu. Použitý indukční snímač detekuje frekvenci otáček roztáčeného válce na základě montáže dvou detekovatelných kovových pásků po obvodu setrvačníku (viz obrázek č. 15). Neumožňuje detekovat směr otáčení válce, nedokážeme tedy detekovat směr pohybu závodníka. V tabulce č. 4 jsou všechny použité komponenty systému a jejich specifikace popsány.
Obrázek 15: Realizace snímání frekvence otáček
Funkce komponenty
Použitá technologie
Specifikace produktu
Stojan trenažéru
-
Tacx Speedmatic
Brzdný systém
magnetická brzda
Tacx Speedmatic
Ovládání brzdy
servomotor
Hi-tec HS 645MG
890 Kč
Snímač otáček
indukční snímač
TURCK Ni5-K11-AP6x
1900 Kč
Snímač polohy řidítek
lineární potenciometr
50 KΩ
10 Kč
Komunikace s PC
Vývojový kit mikroprocesoru ATMEL
Arduino Duemilanove
790 Kč
Tabulka 3: Komponenty realizace trenažéru 20
Orientační cena 3 450 Kč
KAPITOLA 3. HARDWARE
3.2 Vývojová deska Arduino s procesorem ATMega328 Arduino je dostupný vývojový kit založený na mikroprocesoru ATMega328 (obrázek č. 16). Má 14 digitálních vstupně-výstupních pinů (z toho 6 s podporou PWM – pulzně-šířková modulace) a 6 analogových vstupů. Projekt si od počátku zakládá na své tvůrčí otevřenosti a vstřícnosti, ať už mluvíme o hardwaru nebo podpůrnému softwaru. Jsou k dispozici všechny zdrojové soubory a je dodržována kompatibilita (ať už pomocí jazyka Java, ve kterém je napsáno vývojové prostředí (IDE) nebo díky použití USB-to-RS232 převodníkového čipu, který nám zajistí virtuální sériovou linku a pro který jsou běžně dostupné ovladače na všechny platformy). Projekt Arduino získal ocenění v kategorii digitálních komunit na Prix Ars Electronica 2006 [9]. Schémata a návrh plošného spoje jsou šířeny pod licencí Creative Commons Attribution Share-Alike 2.5 a pro některé verze jsou volně dostupné na oficiálním webu Arduina [2]. Zdrojový kód vývojového prostředí a knihovny pro procesor jsou volně dostupné pod licencí GPLv2. Napájení desky je přístupné přes externí zdroj (6 – 20 V) nebo přes USB port (5 V). Zařízení připojená k desce lze napájet z daných pinů o napětí 5V (vhodné pro serva) nebo 3,3 V o maximálním proudu 50 mA. Všech 14 digitálních výstupů operuje s napětím 5V, může poskytovat nebo přijmout maximálně proud 40 mA a má vnitřní rezistor o odporu 20-50 kΩ. Některé piny nabízí speciální funkce jako je SPI komunikace nebo vestavěná LED dioda pro detekci signálu. Arduino obsahuje podpůrná zařízení pro komunikaci s počítačem i jinou deskou. Softwarové vybavení podporuje sériovou komunikaci po kterémkoliv digitálním pinu, USB portu, I2C konektoru nebo SPI komunikaci. Mikroprocesor na desce Arduina se programuje pomocí speciálního Arduino programovacího jazyku (založený na jazyku Wiring - podobný jazyku C) ve vlastním Arduino vývojovém prostředí. Deska obsahuje vlastní bootloader, který poskytuje nahrání nového kódu bez použití externího programátoru. Komunikace probíhá na protokolu STK500 [2]. Projekty založené na Arduinu mohou jednoduše komunikovat se softwarem na stolním počítači nebo notebooku (např. Flash, Processing, MaxMSP), v našem případě s programem VRCycle. Použití je nezávislé na platformě (Windows/Linux/MacOS). V tabulce č. 3 nalezneme specifikaci použitého modelu Deumilanove.
Obrázek 16: Vývojový kit Arduino Deumilanove (zdroj: [15])
21
KAPITOLA 3. HARDWARE Název modelové řady
Deumilanove
Procesor
Atmel ATMega328
Architektura
Atmel AVR
Připojitelnost k PC
USB, RS-232
Napájení
5 V USB, 6-20 V adaptér
I/O piny
14 digitálních (6 x PMW) 6 vstupních analogových
Proud na I/O pin
40-50 mA DC
Paměť typu Flash
32 KB (2 KB použity pro bootloader)
Paměť SRAM
2 KB
Paměť EEPROM
1 KB
Taktovací frekvence
16 MHz
Programovací jazyk
Wiring s Processing IDE
Tabulka 4: Specifikace vývojové desky Arduino Deumilanove
Arduino má 14 digitálních I/O pinů (0-13, na obrázku č. 17 označeny zeleně). Piny 0 a 1 slouží pro sériovou komunikaci, piny 9-11 umožňují 8bitový PWM výstup. PWM je výstup s pulzně-šířkovou modulací určen mimo jiné pro ovládání serv. Dále je k dispozici 6 analogových vstupů (0-5, na obrázku č. 17 označeny modře) s 10bitovým rozlišením. Pin 3,5 a 6 opět může sloužit pro PWM výstup. Oranžově jsou vyznačeny piny napájení - zem, 5 V a 3,3 V. Tlačítko S1 je hardwarový reset, umožní znovuspuštění nahraného programu.
Obrázek 17: Blokové schéma Arduina Deumilanove (zdroj: [16]) 22
KAPITOLA 3. HARDWARE
3.3 Schéma zapojení Následující popis zapojení odpovídá schématu v příloze A. Elektronické obvody zajišťují napájení snímače otáček a polohy řidítek jízdního kola, servopohonu magnetické brzdy a dále slouží pro přenos, případně převod úrovně signálu. Jednočipový počítač Arduino Duemilanove je napájen samostatně po USB z PC. Síťový transformátorový napájecí zdroj s usměrňovačem NZ má výstupní stejnosměrné napětí 12V a je připojen přes konektor X1 na obvody integrovaného stabilizátoru napětí IO na bázi známého 7805 v provedení s posíleným výstupním proudem do 2A, tj. 78S05. Stabilizaci napětí a odolnost proti rušení posilují kondenzátory C1 až C4 v elektrolytickém a keramickém provedení. Výstup stabilizátoru 5V slouží zejména k napájení servopohonu magnetické brzdy. Tlumivka L a kondenzátor C5 tvoří filtr, který brání pronikání rušivých kmitočtů a vyšších harmonických z impulsně řízeného motorku servopohonu. Indukční snímač otáček musí být napájen ze vstupu stabilizátoru 12V, neboť minimální povolené napájecí napětí tohoto snímače je 10V. Výstup indukčního snímače tvoří otevřený kolektor transistoru typu PNP. Pracovním odporem tohoto transistoru je odpor R1, přes který se přivádí spínací proud do báze tranzistoru T. Vzhledem k tomu, že kolektor tranzistoru T je připojen k napětí 5V, tvoří tento obvod převodník z 12V na 5V, neboť vstupy a výstupy Arduina jsou na úrovních TTL. Na výstupu transistoru se objevují impulsy se střídou 1:1 a frekvencí odpovídající rychlosti jízdního kola. Snímač polohy řidítek tvoří potenciometr PR. Je napájen přímo z pomocného napětí 5V Arduina a napětí z jezdce je přiváděno na analogový vstup Arduina. Polovina napájecího napětí odpovídá nulové odchylce řidítek. Oddělením napájecího napětí dosáhneme lepší filtrace rušivých napětí ze servopohonu. Zapojení všech součástek je realizováno na plošném spoji a ten je společně s Arduinem umístěn v malé plastové krabici s vyvedenými konektory X1 až X4 pro připojení vnějších komponentů. Na obrázku č. 18 můžete vidět fyzickou podobu zapojení.
Obrázek 18: Realizace řízení trenažéru
3.4 Programování mikroprocesoru 3.4.1 Systémové požadavky Jak již bylo zmíněno, Arduino je podporováno více platformami (Windows, Linux, MacOS). Náš projekt je realizován pod operačním systémem Linux, proto je další text situován právě do 23
KAPITOLA 3. HARDWARE tohoto prostředí. Pro instalaci vývojového prostředí desky je potřeba následující: ● ●
● ● ●
Sun's Java Runtime Envirement (balík sun-java6-jre) avr-binutils - balíček poskytující nízkoúrovňové vybavení potřebné pro vytváření objektů - obsahuje AVR assembler (avr-as), linker (avr-ld), librarian (avr-ar a avr-runlib) avr-gcc verze 4.3.2 a výše (GNU Compiler Collection) - sada kompilátorů jazyka C s podporou mikrokontrolerů Atmel AVR avr-libc - knihovna programovacího jazyku C pro mikrokontrolery Atmel AVR avrdude - program pro download/upload pamětí ROM a EEPROM mikroprocesorů
Jádro systému musí být vybaveno ovladačem FTDI pro USB sériový port. Pokud je nainstalován balíček brltty (podpora zobrazení pro nevidomé), je nutné ho odstranit. Po splnění všech podmínek jste připraveni k instalaci vývojové prostředí Arduina. Jeho nejnovější verzi pro linuxové distribuce lze stáhnout na serveru [2].
3.4.2 Vývojové prostředí Arduino IDE Arduina je založeno na open-source platformě Wiring, se kterou sdílí drtivou většinu svých funkcí. Obsahuje řadu knihoven, které umožňují spolupracovat jak s vybavením PC (např. sériový port, webová kamera nebo jiný software) tak i s hardwarem, který k Arduinu připojíme (např. serva, LCD, EEPROM). Seznam knihoven je volně dostupný na webovém portálu Arduina Databázi těchto knihoven rozšiřuje jak samotná uživatelská komunita, tak i výrobci HW. Patří mezi ně knihovna pro ovládání serv a knihovna pro čítání četnosti pulzů, které jsme v našem řešení využili. Součástí prostředí je i řada příkladů pro konkrétní použití. IDE obsahuje vše nutné pro tvorbu, kompilaci a nahrání programu do Arduina. Pro nahrání je potřeba vybrat cílový procesor a seriový port (součástí instalace je virtuální sériový port přes USB). Součástí programu je funkce pro sledování komunikace na sériovém portu. Programovací jazyk Arduina vychází z C/C++. Základem programu jsou metody setup() a loop(). První z nich se provede po restartování desky, metoda loop() se následně ve smyčce opakuje. Programové struktury, typy proměnných, klíčová slova a hlavní funkce, stejně tak i velice zdařile a přehledně zpracovaná dokumentace k celému projektu jsou vystaveny na internetovém portálu Arduina [2]. Na obrázku č. 19 můžete vidět ukázku IDE s jednoduchým programem pro blikání LED diody.
24
KAPITOLA 3. HARDWARE
Obrázek 19: Vývojové prostředí Arduina
3.4.3 Řešení pro cyklotrenažér 4 Úkolem našeho programu jsou tři základní funkce – umožnit ovládání serva přes sériový port, posílat počítači data o četnosti pulzů vyvolaných indukčním snímačem a posílat informace o poloze řidítek. Veškerá komunikace pak bude kontrolována aplikací VRCycle. Ovládání serva je v našem případě zrealizováno softwarově (knihovna SoftwareServo [2]). To znamená, že nevyužíváme hardwarového 16ti-bitového časovače Arduina, jehož použití by bylo sice vhodnější, ale časovač budeme potřebovat pro jinou funkci mikrokontroleru. Nejprve je určen výstupní pin a určeny mezní hodnoty úhlů, ve kterých se bude poloha hřídele serva nacházet. Tato hřídel se může pohybovat v rozmezí 0˚ - 180˚ (to odpovídá vysílaným pulzům o délce 544 – 2400 μs). My však využijeme pouze rozmezí 48˚ - 125˚. To nám k využití regulace brzdného systému v plném jeho rozsahu stačí. Samotné ovládání funguje na principu naslouchání sériovému portu. Pokud počítač pošle přípustnou hodnotu pro polohu serva, je tato informace zpracována a šířka mikropulzů se na digitálním výstupu pro servo změní. Pro čtení četnosti otáček je využita knihovna freqCounter [17] vytvořena uživateli Arduina. Ta využívá zmíněného 16ti-bitového čítače pro velice přesné určení frekvence. Maximální vstupní frekvence odpovídá až 8 MHz, my však této hodnoty zdaleka nedosáhneme (maximální hodnoty toček trenažéru se pohybují okolo 1 KHz). Indukční snímač mění hodnoty svého stavu, ty jsou převedy na logické hodnoty 0/1. Jeden pulz odpovídá detekci náběžné hrany (změna 0 na 1). Každých 500 ms je počet pulzů vyhodnocen a poslán na komunikační port. A na závěr funkce, která není v našem projektu přímo využita, ale je připravena pro jeho další možné rozšíření – čtení polohy řidítek. Na analogový vstup je připojen potenciometr. Poloha hřídele potenciometru odpovídá napětí na vstupu Arduina. To je v rozlišení 8 bitů (hodnoty 0 – 1024) digitalizováno a zpracováno programem mikroprocesoru. Abychom zbytečně nezahlcovali komunikaci po sériovém portu, je zde hodnota polohy řidítek vystavena pouze při její změn. Pro 25
KAPITOLA 3. HARDWARE rozlišení od informace o frekvenci je k této hodnotě přidán příznak p. Následuje stručný přehled důležitých metod: SoftwareServo::attach(int pin) – přiřadí pin vývojové desky pro ovládání serva SoftwareServo::write(int position) – nastaví pozici serva na danou pozici (ve stupních) Serial::begin(int rate) – inicializuje komunikaci na sériovém portu o dané přenosové rychlosti (v bitech za sekundu) FreqCounter::start(int time) – spustí čítání pulzů (ukládá do proměnné f_count), po určeném čase nastaví příznak f_ready na 1 a ukončí se Serial::print(int value) – vypíše danou hodnotu na sériový port int analogRead(int pin) – vrátí zdigitalizovanou hodnotu analogového vstupu daného pinu Serial::bool available() – zjistí zda-li lze číst ze sériového portu Serial::char read() – vrátí znak přečtený ze sériového portu
26
KAPITOLA 4. SOFTWARE
4 Software V této kapitole se budeme zabývat softwarovou částí projektu. V teoretickém rozboru se seznámíme s potřebnou problematikou komunikace, stereoskopie ve spojení s grafickou knihovnou OpenGL a s knihovnami a vlastním zpracováním stereoskopického videozáznamu. Po zbytek popisu se budeme věnovat vývoji aplikace cyklistického trenažéru VRCycle. 4.1 Úvod Naším úkolem je vytvořit program využívající grafickou knihovnu OpenGL. Jeho struktura bude spojovat tři zajímavé funkce – využití quadbufferu grafické karty pro pro stereoskopické zobrazení, dekódování videozáznamu vstupního formátu Digital Video a MPEG-2 upravené pro prostorové promítání o variabilním snímkování a komunikace s vývojovou deskou Arduino (viz kapitola 3). Celá aplikace bude zapouzdřena do „herního“ uživatelského rozhraní s prvky sportovního trenažéru. Pro implementaci je zvolen programovací jazyk C++, pro překlad využit GCC C++ (g++). Vývoj programu probíhá pod operačním systémem Linux a to především z důvodu široké podpory open-source knihoven a jejich snadné instalaci. Další výhodou systému je podpora módu pro stereoskopického zobrazování a jeho jednoduché nastavení. Vzhledem k tomu, že je celý projekt poměrně speciální záležitostí (vyžaduje konstrukci HW, specifickou konfiguraci zobrazovacího zařízení), není její použitelnost pod nejrozšířenějším operačním systémem Windows přínosná. Platforma Linux byla zvolena i z důvodu možné instalace v pražském Institutu Intermediálních Technologií na ČVUT.
4.2 Teoretický rozbor 4.2.1 Komunikace po sériovém portu Jednou možností komunikace je využití sériového terminálu. V Unixu byla tato metoda jediným a základním způsobem, jak se připojit k operačnímu systému. Jak se Unix rozvíjel, vznikly i jiné terminály než sériový (např. konzole, xterm), avšak k terminálu a sériovému portu se z programů přistupuje stále stejně. Terminály se však liší jmény odpovídajících zařízení. Důležitou utilitou pro získání informací a nastavení základních charakteristik komunikace na sériovém portu je terminálový program stty [18]. Ke komunikaci pomocí jazyka C využíváme sadu informací a subrutin struktury termios. Zde jsou uloženy základní informace terminálu a slouží pro jeho nastavení. Jednotlivé struktury a hodnoty odpovídají standardům POSIX (Portable Operating System Interface [9]), což je přenosové rozhraní pro operační systémy (vycházející ze systémů Unix). Kompletní dokumentaci POSIX najdete na internetovém serveru [19]. V tabulce je náhled struktury termios.
27
KAPITOLA 4. SOFTWARE typedef unsigned char typedef unsigned int typedef unsigned int
cc_t; speed_t; tcflag_t;
struct termios { tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cflag; /* control mode flags */ tcflag_t c_lflag; /* local mode flags */ cc_t c_line; /* line discipline */ cc_t c_cc[NCCS]; /* control characters */ speed_t c_ispeed; /* input speed (new interface)*/ speed_t c_ospeed; /* output speed (new interface)*/ #define _HAVE_STRUCT_TERMIOS_C_ISPEED 1 #define _HAVE_STRUCT_TERMIOS_C_OSPEED 1 };
c_iflag – způsob zpracování vstupu c_oflag – způsob zpracování výstupu (jak jsou zpracovány znaky před odesláním) c_cflag – nastavení řízení terminálu (počet datových bitů, počet stop bitů, parita a jiné) c_lflag – lokální konfigurace terminálu (charakteristiky chování terminálu) c_cc – řídící znaky pro různé akce terminálu (nastavení VMIN a VTIME, viz dále) c_ispeed, c_ospeed – nastavení rychlosti přenosu (v bitech za sekundu) V závěru popisu struktury zmíním funkci tcgetattr, která zjistí aktuální parametry terminálu a tcsetattr, která nastaví parametry nové. Podrobná dokumentace s popisem dalších metod struktury termios je k dispozici na internetovém portálu [20]. Sériový port lze provozovat v kanonickém nebo nekanonickém režimu. V kanonickém režimu (ten je implicitní) se data z terminálu odesílají až do ukončení řádku. To nám dává možnost je editovat. V nekanonickém režimu (nastaví se parametrem -icanon) se data z terminálu odesílají okamžitě, jak se objeví. V našem řešení využijeme režim nekanonický. Pro čtení je nutné nastavit parametry VTIME a TMIN. Po přijetí prvního znaku se zapne vnitřní časovač, je vynulován vždy po přijetí nového znaku. Čas VTIME udává hodnotu, kterou pokud čítač dosáhne, funkce čtení se ukončí a vrátí uložená data. Parametr VMIN určuje minimální počet znaků, které chceme přijmout bez ukončení funkce. Naše realizace nastavujeme VMIN = 0 a VTIME = 20, jde tedy o časově řízené čtení. Pokud jsou data ve vstupní frontě, jsou přenesena do maximálně možného počtu bytů a ihned vrácena volající funkci. Pokud na vstupu data nejsou po dobu VTIME k dispozici, je vrácena nulová hodnota. V implementaci aplikace VRCycle používáme pro komunikaci následující funkce: int serialport_write(int fd, const char* str) int serialport_read_until(int fd, char* buf, int index, char until) int serialport_init(const char* serialport, int baud)
serialport_write – zápis posloupnosti znaků na výstup (hodnoty pro ovládání serva) serialport_read_until – čtení ze sériového portu po ukončující znak (hodnoty frekvence a polohy) serialport_init – nastavení parametrů pro komunikace (port, rychlost, mód, atd.)
28
KAPITOLA 4. SOFTWARE
4.2.2 Stereoskopie v OpenGL Grafická knihovna OpenGL nabízí podporu stereoskopického zobrazování. Podmínkou tohoto režimu je grafická karta s implementovaným quadbufferem. Jak název napovídá, jedná se o 4 vyrovnávací paměti pro ukládání snímků. Narozdíl od běžné konfigurace o dvou pamětích, jsou zde k dispozici dvě pro levý a dvě pro pravý snímek (a to vždy jeden buffer pro ukládání aktuálně zobrazovaného snímku a druhý buffer, kde je uložen právě zobrazený snímek). Oba snímky lze zobrazovat za pomoci dvou projekčních zařízení (např. na principu rozdílné polarizace, viz kapitola 1.5.2) nebo na jednom displeji s využitím výstupu pro zatmívané brýle (viz kapitola 1.5.2). Mezi podporovaný hardware patří například grafické karty řady Quadro (viz obrázek č. 20) od společnosti nVidia (všechny podporované karty naleznete na serveru [21]).
Obrázek 20: Grafická karta nVidia Quadro FX (zdroj: [21])
Prvním krokem pro prostorové zobrazení scény je inicializace knihovny GLUT pro stereoskopické operace. glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH| GLUT_STEREO)
Pro zjištění, zda-li váš systém tento režim podporuje, můžete použít funkci glGetBooleanv() s argumenty GL_STEREO nebo GL_DOUBLEBUFFER. Použití bufferů pro levý a pravý snímek je velice jednoduché. Nejprve zvolíme paměť, do které chceme vykreslovat pomocí funkce glDrawBuffer() s paramatry GL_BACK_RIGHT/GL_BACK_LEFT, pak postupujeme stejným způsobem jako při běžném vykreslování scény. Struktura kódu pro stereoskopické vykreslování je tedy následující:
29
KAPITOLA 4. SOFTWARE if (stereo) { . . glDrawBuffer(GL_BACK_RIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); . . glDrawBuffer(GL_BACK_LEFT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); . .
Nyní přichází část samotného vykreslování. Základním předpokladem je pochopení geometrie pohledů. Pro stereoskopické promítání existují dva základní přístupy (Toed-in a Asymmetric frustum parallel projection). Toed-in je rychlá a jednoduchá metoda, která s sebou nese postraní efekt tzv. Keystone distortion. Jde o to, že oba snímky jsou díky rozdílné zobrazovací rovině znehodnocené. Tento problém se projeví především v krajních polohách scény a pro lidské oko nemusí být tudíž příliš rušivý. Princip zobrazení touto metodou je ilustrován na obrázku č. 21. Roviny NearZ/FarZ spolu s úhlem pohledu určují perspektivu scény a rovina ScreenZ ilustruje požadovanou projekční rovinu s nulovým paralaxem. Po nastavení kamer (směřujících do středu roviny ScreenZ) pro oba pohledy můžeme vidět odchylky zobrazených ploch od požadované roviny, který vytváří zmíněný efekt.
Obrázek 21: Geometrie "toed-in" (zdroj: [22]) Zobrazení metodou Asymmetric frustum parallel projection (asymetrické zobrazení komolého jehnanu) je ekvivalentní ke stereoskopickým fotoaparátům s posunutými objektivy, jejichž snímky jsou používány ve stereokotoučích. Tento způsob projekce odstraní zkreslení po stranách scény a zobrazí vykreslovanou scénu v poloze požadované projekční roviny a to ve stejné orientaci. Je zřejmé, že tato technika se svým vykreslováním více přibližuje geometrii skutečného prostorového vidění. Díky rozdílným vstupním podmínkám pozorovatele jako je vzdálenost očí, úhel pohledu, vzdálenost od projekčního plátna a velikost plátna mohou být však rušivé efekty vyšší než u Toed-in. Základní princip je následující. Nejprve nastavíme asymetrický komolý jehlan 30
KAPITOLA 4. SOFTWARE projekce určující výhled scény. To se v OpenGL nastavuje pro pozici kamery v souřadnicovém počátku. Teprve potom provedeme translaci pozice kamer v ose x o IOD/2 vlevo, resp. vpravo (IOD je introokulární vzdálenost). Nyní vzniká na projekční rovině ScreenZ nulový paralax. Pro výpočet asymetrického komolého jehlanu projekce je důležitá velikost jeho posunutí. Z geometrie je zřejmé, že poměr tohoto posunutí k přední ořezávací ploše odpovídá poměru rozpětí pozice kamer k projekční ploše. Na obrázku č. 22 je tento princip ilustrován pro zobrazení pravého snímku.
Obrázek 22: Geometrie asymetrického komolého jehlanu (zdroj: [22])
V našem projektu je použita metoda asymetrického komolého jehlanu. Je potřeba dodat, že je aplikována pro modelované scény programu VRCycle (například nabídku aplikace). Správná geometrie projekce stereoskopického videosignálu je dána již při jeho záznamu.
4.2.3 Zpracování videozáznamu Významnou součástí aplikace VRCycle je implementace zpracování vstupních videozáznamů. Ty byly testovány ze dvou pohledů – formát kódování videa a způsob jeho uložení na disku. Zkoumanou veličinou byl především čas čtení a dekódování snímku. Pro kódování byly použity formáty Digital Video (DV) a MPEG-2. DV je formát vyvinut výrobci digitálních videokamer. Jednotlivé snímky jsou komprimovány pomocí DCT (diskrétní cosinová transformace) podobně jako u obrázků JPG. Zároveň je odstraněna část barevné informace pomocí metody chroma subsampling. Existuje v několika variantách podle jednotlivých výrobců. My používáme formát DVCAM od společnosti Sony. Více o Digital Video naleznete na serveru [9]. MPEG-2 je velice rozšířený datový formát z řady Motion Picture Experts group. Používá se na discích DVD nebo pro signál DVB digitální televize. Kromě datové komprese v rámci jednotlivých snímků je zde navíc přidána komprese mezisnímková. Snímky jsou označeny jako I – klíčové snímky, P – pomocné snímky a B – pomocné snímky obousměrné. Snímky P a B přenáší pouze rozdíly obrazů od předchozího (v případě B i následujícího) snímku. Vzhledem k 31
KAPITOLA 4. SOFTWARE proměnlivému snímkování v realizaci VRCycle, nastává s tímto formátem problém. Pokud totiž chceme zobrazovat například každý třetí snímek, musíme zpracovat i všechny pomocné snímky. Více o MPEG-2 na serveru [9]. Kvalitou obrazu a rychlostí zpracování vítězí kodek DV. Pro nižší šířku datového proudu a tím i celkový objem dat je však vhodnější kodek MPEG-2. Způsobem uložení je myšleno fyzické umístění na disku. Zkoumáním byl zjištěn zásadní vliv tohoto faktoru. Je nutné si uvědomit, že pro stereoskopické promítání budeme vždy číst levý a následně pravý snímek dvou videozáznamů. Pokud jsou tyto záznamy uloženy ve dvou samostatných souborech, je rychlost čtení omezena nutným přemístěním čtecí hlavice disku a to po každém snímku. Pokud jsou však záznamy uloženy v jednom souboru, kde se levé a pravé snímky za sebou střídají (tudíž i jejich fyzické uložení na disku je s velkou pravděpodobností souvislé), je celý proces urychlen. Doba čtení snímku se v průměru pětinásobně zkrátila. V tabulce č. 5 můžete vidět srovnání všech testovaných řešení. Kódování
Datový tok
Průměrný čas čtení dekódování snímku Verze dvou souborů
Verze jednoho souboru
Digital Video
10 Mbit/s
30 ms
8 ms
MPEG-2
1 Mbit/s
32 ms
nerealizováno
Tabulka 5: Srovnání použitých videokodeků Ve výsledném produktu je využito kódování DV. Pro zobrazení snímků pomocí OpenGL je potřeba video dekódovat a převést z komprimovaného formátu Digital Video (DV) do RGB24, kde jsou jednotlivé body uloženy v barevných složkách. Knihovny libavcodec, libavformat a libswscale, které jsou například součástí známého balíku ffmpeg, poskytnou pro tuto konverzi potřebné funkce. Podrobný popis všech funkcí najdete v dokumentaci zmíněných knihoven [23]. Zjednodušená struktura části programu pro zpracování dat videa je uvedena na následující straně.
32
KAPITOLA 4. SOFTWARE /* Inicializace a alokace paměti pro dekódování snímku */ avcodec_init(); //inicializace avcodec_register_all(); //registrace kodeků codec = avcodec_find_decoder(CODEC_ID_DVVIDEO); //výběr kodeku transform_ctx = sws_getContext(720,576,PIX_FMT_YUV420P,720,576,PIX_FMT_RGB24, SWS_BICUBIC, 0, 0, 0); //kontext pro převod formátu f_rgb = alloc_picture(PIX_FMT_RGB24,720,576); //alokace paměti pro snímek rgb24 c= avcodec_alloc_context(); //alokace paměti pro převod f_yuv = avcodec_alloc_frame(); //alokace paměti pro snímek yuv420p /* Funkce pro vlastní dekódování snmíku do formátu rgb24 */ int video_decode(FILE *f, uint8_t *image_copy, int skips_nr) { size = fseek( f, (skips_nr-1)*DVFRAMESIZE, SEEK_CUR); size = fread(inbuf, 1, DVFRAMESIZE, f); len = avcodec_decode_video(c, f_yuv, &got_picture, inbuf, DVFRAMESIZE); //dekódování snímku z formátu DV do yuv420p sws_scale(transform_ctx, f_yuv->data, f_yuv->linesize,0,576, f_rgb->data, f_rgb->linesize); //dekodování snímku z yuv420p do rgb24 memcpy(image_copy, f_rgb->data[0], f_rgb->linesize[0]*c->height); } //uložení snímku do textury použité v openGL /* uvolnění paměti */ avcodec_close(c); av_free(c); av_free(picture);
Parametry hlavní metody kódování videa jsou adresa vstupního souboru, reference pro výstup ve formě textury rgb24 a hodnota skip_nr. Ta udává počet snímků, o které se v tomto kroku posuneme. Pro pochopení je potřeba rozebrat způsob snímkování videa. Rychlost přehrávání záznamu závisí na rychlosti závodníka, je tedy proměnlivá. Z informací o frekvenci otáček válce brzdného systému, snímkovací frekvence záznamu (25 snímků/s) a rychlosti pohybu při natáčení projekce si vypočítáme požadovanou snímkovací frekvenci přehrávání. Tento výpočet se provádí každých 500 ms. Před čtením nového snímku se v závislosti na čase uplynulém od zobrazení posledního snímku a požadované snímkovací frekvenci vypočte hodnota skip_nr.
4.2.4 Utilita Merge Program Merge vytvořený v rámci tohoto projektu slouží jako pomůcka pro předzpracování videozáznamů pro stereoskopické promítání. Program čte střídavě snímky ze dvou vstupních souborů ve formátu DV a ukládá je do jedné sekvence výstupního souboru také ve zmíněném kódování. Účelem je vytvořit souvislý stereoskopický záznam a urychlit tak jeho zpracování v programu VRCycle. Více informací o tom, proč je vhodné toto předzpracování, najdete v kapitole 4.2.1. Aplikace využívá knihovny libavcodec a libavformat a jeho použití má následující syntaxi: merge leftFile rightFile outputFile
33
KAPITOLA 4. SOFTWARE
4.3 Implementace GUI Při tvorbě grafického uživatelského rozhraní byl kladen důraz především na jednoduchost, přehlednost a použitelnost. Uživatel by neměl mít problém zorientovat se v nabídce bez jakýchkoliv návodů. Nabídka se skládá z možností výběrů trasy, osobního profilu, nastavení aplikace, informacích o projektu a spuštění závodu. Pro přehlednost uvedeme strukturu úvodní nabídky v následující tabulce č. 6: Nabídka:
CYCLE
Popis nabídky: - přehled před spuštěním závodu
TRACK
PROFILE
OPTIONS
- výběr trasy
- výběr - nastavení osobního profilu aplikace - rozlišení - stereo mód - introokulární vzdálenost - simulace cyklotrenažéru
ABOUT - popis projektu VRCycle
Ukázka:
Tabulka 6: Přehled struktury nabídek programu VRCycle
V možnostech aplikace je nastavení stereoskopického módu (jeho vypnutí, introokulární vzdálenost) nebo simulace trenažéru. Ta připouští spustit videozáznam i bez připojeného hardwaru trenažéru. Pohyb závodníka je pak ovládán klávesnicí. Po zvolení osobního profilu uživatele se časy jeho dokončených závodů ukládají do souboru (viz kapitola 4.4), nejlepší z nich je pak zobrazen v přehledu před spuštěním závodu. Implementace osobního profilu je však otevřena dalšímu vývoji. Může sloužit pro ukládání detailních statistik závodu a pro následnou analýzu závodníkova výkonu (například pomocí jiné aplikace, která bude umět soubory profilů zpracovat). V základní instalaci jsou k výběru tři trasy o různých vzdálenostech a výškových profilech. Trasy lze do aplikace jednoduchým způsobem přidávat (viz kapitola 4.4). Po spuštění závodu je uživatel informován o statistických údajích své jízdy formou průsvitného panelu. Tuto legendu má možnost skrýt, případně vertikálně umístit na pozici, kde mu bude nejvíce vyhovovat. Legenda čerpá informace jednak ze zdrojových souborů trasy (výškový profil, délka okruhu) a jednak z připojeného zařízení (rychlost, ujetá vzdálenost). Podrobný popis legendy můžete vidět na obrázku č. 23. Ovládání všech nabídek je realizováno pomocí sedmi kláves. Předmětem dalšího vývoje by mohlo být umístění ovládacího zařízení na řidítka jízdního kola. Prozatím je ovládání situováno do numerické klávesnice, která může být k počítači připojena samostatně. Na obrázku č. 24 jsou 34
KAPITOLA 4. SOFTWARE vyznačeny použité klávesy (červeně pro pohyb v nabídkách, žlutě pro potvrzení nabídky, modře pro zrušení výběru nebo ukončení aplikace a zeleně pro zobrazení legendy).
Obrázek 23: Legenda programu VRCycle
Obrázek 24: Funkční klávesy programu VRCycle
4.4 Struktura implementace Pro aplikaci VRCycle bylo zhotoveno 13 zdrojových souborů, které jsou pro překlad a následný správný chod programu nutné. V následujícím přehledu je obsah všech souborů stručně popsán. fonts.cpp fonts.h Obsahuje metody pro načtení určeného systémového písma do struktury XfontStruct knihovny GLX, pro výpis textu v OpenGL a pro uvolnění paměti po dokončení textových operací. Těchto funkcí je využito pro úvodní nabídky aplikace VRCycle. Jedná se o tzv. bitmapové fonty, jejichž nevýhodou je nemožnost rotace (vždy je uvidíme zepředu) a pixelizace při zvětšení, to nám však pro uvedené použití nevadí.
35
KAPITOLA 4. SOFTWARE freetype.cpp freetype.h Více možností pro výpis textů na obrazovku OpenGL nabízí knihovna FreeType2. Ta umožňuje načtení jakéhokoliv písma ve formátu .ttf a výpis určeného textu na dané souřadnice. Zároveň podporuje následnou manipulaci s texty. Více o knihovnách FreeType a FreeType2 na internetovém portálu [24]. Těchto metod využíváme pro implementaci grafiky legendy simulátoru. main.cpp Obsahuje funkci main(), která po spuštění programu inicializuje celoobrazovkový mód OpenGL (zajišťuje knihovna GLUT). K tomu je použita funkce glutEnterGameMode() (více na [25]). Při spuštění je nastaveno implicitní rozlišení 800 x 600 pixelů, tyto hodnoty si uživatel může změnit v nabídce Options. Dále jsou v tomto souboru naprogramovány funkce pro vykreslení nabídky (stereoskopicky metodou asynchronního komolého jehlanu – viz kapitola 4.2.2), ovládání pomocí klávesnice a inicializace kontextu simulátoru. profile.h Třída osobního profilu uživatele je uložena v tomto souboru. Krom názvu obsahuje seznam uložených tras a časů a osobní rekordy. Tyto údaje lze načíst z textového souboru. Ten se skládá s položek, které obsahují identifikaci trasy a čas závodníka. Položka je do souboru zaznamenána vždy po ujetí okruhu trasy. serial_com.cpp serial_com.h Zde jsou naprogramovány metody pro komunikaci přes sériový port USB. Využívají se pro čtení frekvence otáček a ovládání servomotoru brzdného systému trenažéru. Více o této komunikaci najdete v kapitole 4.2.1. stereo_play.h Slouží pro stereoskopické přehrávání záznamu a zobrazení legendy. Jsou zde implementovány metody pro zpracování videozáznamu ve formátu DV (více v kapitole 4.2.3.), pro výpočet a vykreslení statistických údajů závodu, pro výpočet proměnné snímkové frekvence a metody pro stereoskopické vykreslování videozáznamu pomocí OpenGL. texts.h V tomto souboru je uložena třída TextMenu. Ta popisuje veškeré možnosti nabídky – texty, jednotlivé položky voleb a grafiku profilu trasy. Proměnné této třídy ukládají nastavení zvolené uživatelem. Jsou zde metody pro načtení názvů tras a profilů z definovaných adresářů. texture.h texture.cpp Popisuje metody pro načtení textur ve formátu .bmp. V programu je použito celkem 24 36
KAPITOLA 4. SOFTWARE textur o různých rozměrech. Slouží pro grafiku uživatelského prostředí po spuštění aplikace. track.h Jak název napovídá, jedná se o třídu, která načítá informace o trase. Jedná se o název, jednoznačnou identifikaci, vzdálenost trasy, pole výškových dat a dalších údajů získaných při záznamu trasy pomocí GPS přijímače. Jsou zde připraveny data (např. horizontální směr pohybu) pro další vývoj aplikace. Metody této třídy počítají celkové převýšení trasy, průměrnou rychlost záznamu a načítají veškerá data z textových souborů. Dále se zmíníme o struktuře trasových a profilových souborů. Ty musí pro správné načtení aplikací specifický textový formát. Název souboru vždy odpovídá názvu trasy, resp. jménu uživatele, které je následně programem VRCycle uvedeno. Zdrojový formát osobního profilu se skládá z položek (ID_TRASY CAS_V_MS) oddělených odřádkováním. Program do těchto souborů ukládá doby ujetí okruhů trasy zvoleného uživatele. Profily jsou umístěny v adresáři profiles/. Struktura trasového souboru je také poměrně jednoduchá. Na prvním řádku je uvedena číselná identifikace trasy. Druhým řádkem počínaje jsou uloženy položky trasových bodů (NV_M VZD_M R_KMH SM_ST), jednotlivé hodnoty popořadě popisují nadmořskou výšku bodu, vzdálenost od předchozího bodu, průměrnou rychlost při záznamu od předchozího bodu a horizontální směr ve stupních. Informace pro ukázkové trasy VRCycle byly získané pomocí navigačním přijímačem GPSMap 60CSx od společnosti GARMIN a zpracovány programem MapSource [26]. Rozpětí jednotlivých bodů trasy získaných zmíněným zařízením se pohybuje v průměru kolem třiceti metrů. V aplikaci je implementována detekce chybných formátů souboru. V následujícím kódu je uveden obsah zdrojového souboru trasy o čtyřech bodech. Jedná se o ilustrativní ukázku. 1 286 286 286 286
1 32 51 67
14 14 15 14
92 92 93 94
4.5 Systémové požadavky a instalace 5 Aplikace VRCycle je vyvíjena pro operační systém Linux (testována na distribuci Ubuntu). Vyžaduje intalaci knihoven binutils (> v2.19), avr-gcc (> v4.3.3), avr-libc (> v1.6.6), freetype (> v2.1.2) a to v tomto pořadí. Tyto balíky nejsou v distribuci Ubuntu implicitně instalovány. Dále program využívá knihoven X11, GLUT, GLX, avcodec, swscale, avformat, avutil, STL a termios. Pro stereoskopický mód je nutná grafická karta podporující OpenGL quadbuffer (viz kapitola 4.2.2) a správná konfigurace souboru xorg.conf (konfigurační soubor X serveru, typicky umístěn v adresáři /etc/X11/). V sekci Device je uvést aktivaci stereoskopického mód (viz následující kód). Section "Device" Identifier Driver BoardName Option
"Videocard1" "nvidia" "NVIDIA Quadro" "Stereo" "3"
37
KAPITOLA 4. SOFTWARE Parametr tohoto nastavení určuje použitou technologii promítání, v případě použití zatmívaných LCD brýlí (viz kapitola 1.5.2) se jedná o tzv. onboard stereo. Více na internetovém portálu [27]. Pro překlad aplikace byl používán kompilátor GNU C++ (> v4.2.4). Terminálový příkaz pro kompilaci je uveden v následujícím kódu: g++ -lX11 -lXi -lXmu -lglut -lGL -lGLU -lfreetype -lm -lavcodec -lswscale -lavformat -lavutil
38
KAPITOLA 5. ZÁZNAM STEREOSKOPICKÉHO VIDEA
5 Záznam stereoskopického videa Tato kapitola se zabývá způsobem zachycení prostorového videa, popisuje vhodnou konfiguraci videokamer a zpracování zaznamenaných dat. Tato část navazuje a částečně doplňuje kapitolu o stereoskopickém zobrazování (4.2.2). 5.1 Vytvoření záznamu pro stereoskopické promítání 6 V předchozí kapitole jsme uvažovali stereoskopické promítání z hlediska geometrie modelované scény s podporou OpenGL. Při popisu záznamu skutečného světa pomocí videokamer budeme vycházet ze stejných principů. Klíčem úspěchu je správné postavení dvou záznamových zařízení, které simulují pohled levým a pravým okem pozorovatele. Tyto obrazy jsou časově synchronizovány a promítány uživateli (viz kapitola 4.2.2), který jejich složením vnímá prostorové rozložení filmované scény. Pro správnou konfiguraci systému kamer jsou důležité tři parametry: introokulární vzdálenost, pozice kamer s ohledem na výřez zobrazované scény a úhel záběru. Lidský mozek dokáže do určité míry tolerovat nepřesnosti obrazů, při větší distorzi působí složený obraz nepříjemně a po delší době promítání může vyvolávat bolest hlavy. I proto je důležité tato nastavení neopomenout. Průměrná vzdálenost očí (introokulární vzdálenost) dospělého člověka je 6,5 cm. V této vzdálenosti by proto měli být ohniska objektivů obou videokamer. Pro zvětšení prostorového vjemu může být tato vzdálenost mírně vyšší. Dále je potřeba sesouhlasit osy směrů pohledů obou zařízení. Přímky protínající střed objektivu a střed snímané scény by měly být rovnoběžné. Jedná se o věrohodnější způsob záznamu v porovnání s principem toed-in (viz kapitola 4.2.2), kdy se tyto přímky protínají v bodě požadovaného nulového paralaxu. Zároveň je tato konfigurace jednodušší pro fyzické ukotvení kamer. Je důležité, aby vertikální i horizontální natočení celého systému a úhel záběru odpovídal předpokladům následného promítání, resp. pozici pozorovatele vzhledem k promítacímu zařízení. Pro větší úhly záběrů může dojít k soudkovitému zkreslení, které vede k narušení prostorového efektu. Na obrázku č. 25 je ilustrováno správné postavení kamer vzhledem k následnému promítání.
Obrázek 25: Ilustrace geometrie pro zachycení a následné zobrazení scény (zdroj: [28])
39
KAPITOLA 5. ZÁZNAM STEREOSKOPICKÉHO VIDEA Na dalším obrázku (č. 26) je patrná změna vnímané hloubky prostorového vjemu daného objektu v závislosti na vzdálenosti pozorovatele od promítacího zařízení.
Obrázek 26: Znázornění změny prostorového vjemu vzhledem k pozici pozorovatele (zdroj: [28]) Další poznámka patří barevné synchronizaci kamer. Pro filmování je téměř nutné použít dvě totožná zařízení. Jednotlivé typy podávají obrazy o různém barevném složení a jasu. To je dáno jak použitým obrazovým senzorem, tak elektronikou obsluhující expozici, vyvážením bílé barvy a dalšími parametry. Menší prostorové nepřesnosti lze upravit v postprodukci (viz níže), oprava rozdílů v barvě, jasu nebo ostrosti je však problematičtější. Odchylky od požadované konfigurace lze částečně opravit v programech pro zpracování 3D záznamů. Patří mezi ně například v tomto oboru vyhledávaná freeware aplikace StereoMovie Maker. Ta umožňuje korekci časové i prostorové synchronizace i ukládání stereoskopického záznamu v různých formátech včetně tvorby anaglyfů. Více o tomto programu najdete na internetovém serveru [29]. Pro zachycení ukázkových tras pro aplikaci VRCycle byly použity dvě videokamery Sony DCR-VX2100E, jejichž osy objektivů byly ukotveny ve vzdálenosti 7 cm na střešní nosič automobilu (viz obrázek č. 27). Při filmování jsme se snažili dodržet rychlost pohybu okolo 15 km/h. Ta se podle experimentálního zkoumání jeví jako nejvhodnější. Na jedné straně je potřeba dodržet plynulost záznamu i pro pomalejší přehrávání. Frekvence, při které je záznam ještě sledovatelný, je asi 15 snímků/s a odpovídá v našem případě rychlostem závodníka okolo 9 km/h. Na druhé straně je potřeba dodržet alespoň relativní věrohodnost pohybujících se objektů na scéně, která by se při nižších rychlostech záznamu zhoršila. V našem případě se při rychlosti závodníka okolo 30 km/h přehrává záznam dvakrát rychleji, než byl ve skutečnosti zachycen. Výsledná hodnota 15 km/h je proto kompromisem obou těchto přístupů. Lepším řešením by bylo použití vysokorychlostních kamer se snímkovou frekvencí alespoň 60 snímků/s (použitá zařízení filmovala s frekvencí 25 snímků/s).
Obrázek 27: Uchycení videokamer 40
KAPITOLA 6. TESTOVÁNÍ A ZHODNOCENÍ VÝSLEDKŮ
6 Testování a zhodnocení výsledků Nedílnou součástí projektu je testování navržené aplikace a celkové zhodnocení výsledků. V této části se dočtete, jakým způsobem testování probíhalo a jak vybraní uživatelé hodnotili přiblížení cyklistického simulátoru realitě. 6.1 Testování v průběhu projektu Program cyklistického trenažéru byl vyvíjen ve třech fázích - konstrukce trenažéru a instalace hardwaru, zachycení podkladů cyklistických tras a implementace samotné aplikace. Každá z těchto částí podlehla testování a výsledná podoba projektu vychází z úprav a korekcí vycházejících z empirického výzkumu. U hardwarové části se zkoumalo především použití vybrané technologie brzdného sytému a jeho ovládání, dále technologie měření snímaných otáček a tolerance spínací vzdálenosti indukčního snímače. U záznamu stereoskopického videa byly testovány různé konfigurace videokamer pro dosažení prostorového efektu a rychlost pohybu při záznamu. V rámci implementace aplikace VRCycle byl pozorován stereoskopický vjem za použití různých přístupů (toed-in vs. asymetrické frustum) a parametrů jako je introokulární vzdálenost. Rozbory dílčích zkoumání a jejich závěry jsou rozepsány v příslušných kapitolách této práce. Následovalo testování uživateli z řad studentů, sportovců i programátorů. Závěry průzkumu vedly k ladění programu především z hlediska synchronizace zobrazovaných dat legendy a vlastním videozáznamem a úpravám vedoucím k efektnímu využití brzdného systému. Vybraní uživatelé zhodnotili realizaci trenažéru jako unikátní zajímavé řešení pro sportovní trénink i jiné využití. Poukázali však na fakt, že přenesení projektu pro širší veřejnost by vyžadovalo další vývoj, dlouhodobější testování a zaručení spolehlivosti systému. Na obrázku č. 28 je zachycen snímek z testování projektu.
6.2 Věrohodnost celkového vjemu 7 Simulaci pocitu skutečného prožitku zajišťuje aplikace dvěma způsoby: Přehráváním stereoskopického videozáznamu v závislosti na ovládání trenažéru a pomocí zpětné vazby ve formě brzdného systému. Věrohodnost celkového vjemu závisí jednak na přesnosti a rychlosti odezvy aplikace a jednak na kvalitě získaných dat (videozáznamu, výškopisu trasy). Rychlost závodníkova pohybu je snímána každých 500 milisekund. Pro současnou konstrukci je to nejkratší možná odezva systému. Kratší snímací dobu indukčního snímače by znamenala snížení rozlišovací schopnosti měření, která nyní činí cca 0,3 km/h. Řešením pro snížení doby při zachování této schopnosti by byla montáž většího počtu detekovatelných objektů po obvodu válce setrvačníku. Doba odezvy nastavení magnetické brzdy a připravené komponenty pro snímání natočení řidítek (v aplikaci nevyužito) je zanedbatelná. Zachycený videozáznam poskytuje standardní obrazovou kvalitu a díky nízkému šumu, malé kompresi a téměř bezchybné obrazové synchronizaci přináší dojem prostorového vidění bez větších rušivých elementů. Topografická data byla získávána s rozlišením trasových bodů v průměru 30 metrů a přesností 1 metr nadmořské výšky. Nižší terénní nerovnosti a nerovnosti mimo rámec rozlišovací schopnosti měření nejsou do dat zahrnuty. Možným vylepšením by bylo použití přístrojů s větším rozlišením, resp. přesností nebo manuální doplnění důležitých dat.
41
KAPITOLA 6. TESTOVÁNÍ A ZHODNOCENÍ VÝSLEDKŮ
Obrázek 28: Testování projektu cyklistického trenažéru
42
KAPITOLA 7. ZÁVĚR
7 Závěr V závěru tohoto dokumentu zhodnotíme výsledky projektu a přínos celé práce. V porovnání se záměry projektu uvedeme úspěchy i slabá místa hardwarové a implementační části. Nakonec popíšeme možné náměty pro další vývoj cyklistického trenažéru včetně nástinu řešení. 7.1 Shrnutí projektu Primárním záměrem projektu bylo vnést uživatele do virtuální reality, která se bude co nejvíce blížit skutečnému prožitku. Věrohodnost celkového vjemu jsme již popsali v kapitole 6.2. V závěru lze říci, že v tomto ohledu je slabým místem málo výkonná brzda a zároveň chybí instalace zařízení pro simulaci jízdy po svažujícím se terénu. V softwarové části je závodníkův zážitek závislý především na kvalitě a rozlišení obrazu zachycených tras. Současný formát (PAL) je sice pro většinu promítací zařízení dostačující, u větších formátů obrazu je však patrný jeho rastr. Samotná technologie pro promítání stereoskopického obrazu také přispívá k celkovému zážitku. Jako nejlepší řešení se nabízí použití dvou projektorů s různě polarizovanými obrazy (viz kapitola 1.5.2. Výhodou tohoto principu jsou lehké brýle s polarizovanými skly a minimální rušivé faktory při pozorování videozáznamu. Sportovní prožitek uživatele a možnost tréninku je na vyvíjeném cyklistickém trenažéru relativně průměrná. Aplikace nabízí zajímavé statistiky a možnosti ukládání výkonů do osobních profilů, i v tomto ohledu jsou však možnosti dalších rozšíření nemalé (grafy statistik, tréninkový plánovač, měření pulzu a další). Je potřeba zmínit, že projekt nekopíruje existující řešení. Při práci byly vyvíjeny originální postupy ať už v případě konstrukce trenažéru a jeho ovládání, tak i v implementaci aplikace VRCycle. Díky prostorovému vnímání videozáznamu tras i uživatelského prostředí se práce stává jedinečnou. Implicitní nastavení trenažéru poskytuje přesná měření rychlosti i ujeté vzdálenosti a to se zpožděním maximálně 0,5 sekundy. Vzhledem k tomu, že měření otáček je zrealizováno na válci stojanu, není potřeba žádné kalibrace pro různé typy jízdních kol, které by přinášely do měření nepřesnosti. Spolehlivost konstrukce a ovládání trenažéru je závislá na mechanickém opotřebení zařízení. To je však díky použití magnetické brzdy a kvalitního servomotoru s kovovými převody minimální. Uživatelské rozhraní aplikace VRCycle poskytuje intuitivní a přitom graficky zajímavé prostředí s jednoduchým ovládáním. To je situováno výhradně do numerické klávesnice pro možnost samostatného použití. Další vývoj by mohl umožnit ovládání prostřednictvím zařízení ukotveného na řidítkách trenažéru. Míra využitelnosti je závislá především na technologii stereoskopického zobrazování, která se liší náklady a velikostí prostoru instalace. Při použití vhodného řešení lze trenažér instalovat do sportovních zařízení, prostor pro virtuální prohlídky či prezentaci nových technologií i pro domácí účely.
43
KAPITOLA 7. ZÁVĚR
7.2 Další vývoj 7.2.1 Přenos aplikace do modelovaného prostředí Poměrně zásadním rozšířením aplikace VRCycle by byla možnost virtuální projížďky modelovanou scénou ať už smyšlenou nebo postavenou na reálných podkladech. Tato funkce nás přivádí k možnosti implementace ovládání směru pohybu, pro které je konstrukce trenažéru předpřipravena. Zpracovaná problematika geometrie stereoskopického promítání v OpenGL a její využití v projektu nabízí poměrně jednoduchou implementaci tohoto doplňku. Pro toto rozšíření je nutné naprogramovat vykreslovací funkci pro modelované scény a upravit ovládání pohybu v této scéně. Dále je potřeba určit způsob uložení výškopisných dat (například formou výškové mapy) a výpočet gradientu stoupání uživatele. Nejpracnější částí by však bylo samotné modelování tras.
7.2.2 Možnosti realizace větvení videa Pokud bychom chtěli alespoň částečně využít možnosti ovládání pomocí polohy naklonění řidítek v spojení s přehráváním videozáznamů, nabízí se realizace větvení videa. Jedná se implementaci doplňku, který by na předem určených bodech trasy (nazveme je křižovatky), přepínal zdroje videozáznamu na základě směru závodníkova pohybu. Možným řešením je vytvoření struktury videozáznamů popsané v textových souborech. Ten by se skládal z časových známek (například počet snímků od začátku videosekvence) označujících křižovatky, intervaly úhlů pro výběr následující souboru videa a názvy těchto souborů. Nejtěžší částí tohoto doplňku by bylo co nejplynuleji navázat videosekvence zaznamenané v různých časech za různých podmínek. To by obnášelo přesnou práci při filmování tras, vhodné úpravy v postprodukci záznamů a v neposlední řadě i implementace struktur a funkcí pro prolínání snímků videa v samotné aplikaci trenažéru.
7.3 Ukázky Na úplný závěr jsou prezentovány ukázky z aplikace VRCycle (obrázky č. 29 - 32).
Obrázek 29: Ukázka uživatelského rozhraní programu VRCycle 44
KAPITOLA 7. ZÁVĚR
Obrázek 30: Ukázka trasy Chvojno cyklistického simulátoru VRCycle
Obrázek 31: Ukázka trasy Hradec cyklistického simulátoru VRCycle
45
KAPITOLA 7. ZÁVĚR
46
KAPITOLA 8. POUŽITÁ LITERATURA
8 Použitá literatura [1] Webový portál společnosti ATMEL, výrobce programovatelných mikročipů, 2009. http://www.atmel.com [2] Internetová dokumentace vývojové desky Arduino, 2009. http://arduino.cc [3] Web firmy Tacx, evropského výrobce virtuálních cyklotrenažérů, 2009. http://www.tacx.com [4] Internetová encyklopedie Wikipedia, článek o stereoskopii, 2009. http://en.wikipedia.org/wiki/Stereoscope [5] Studie o stereoskopickém zobrazování, Ozan Çetinaslan, Bogaziçi University, 2009. www.cmpe.boun.edu.tr/medialab/VW/StereoReport_rev1.pdf [6] Webové publikace o stereoskopii, Andrew Woods, Curtin University of Technology, 2009. www.3d.curtin.edu.au [7] Webový portál o technologiích stereoskopie, 2009. http://www.stereo3d.com [8] Webový portál o stereoskopii, 2009. http://www.stereoscopy.com [9] Internetová encyklopedie Wikipedia, 2009. http://en.wikipedia.org [10] Webový portál společnosti Racermate, australský výrobce cyklotrenažérů, 2009. http://www.racermateinc.com [11] Internetový obchod sportovních trenažérů, 2009. http://www.veslovaci-veslarske-trenazery.cz [12] Internetový obchod s RC modely, 2009. http://www.mz-racing.net [13] Webový portál společnosti Kotlín senzory s r.o., 2009. http://www.kotlinsenzory.cz [14] Webové stránky firmy pk-design, výrobce platforem pro mikročipy Atmel, 2009. http://www.pk-design.net [15] Internetový portál Fektasm, 2009. http://www.fektasm.com
47
KAPITOLA 8. POUŽITÁ LITERATURA [16] Webové publikace o vývojové desce Arduino, 2009. http://blog.tepper.cz/archive/2008/11/13/arduino---seznaacutemeniacute.aspx [17] Webová dokumentace knihovny Frequency Counter pro Arduino Deumilanove, 2009. http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library [18] Webová dokumentace programu stty, 2009. http://www.opengroup.org/onlinepubs/009695399/utilities/stty.html [19] Internetová dokumentace POSIX (Portable Operating System Interface), 2009. http://www.knosof.co.uk/posix.html [20] Webový článek Seriová komunikace pod Linuxem, Katedra řídící techniky, FEL ČVUT, 2009. http://dce.felk.cvut.cz/pos/cv5 [21] Web výrobce grafických karet nVidia, 2009. http://www.nvidia.com [22] Webové publikace o stereoskopii v oblasti medicíny, 2009. http://www.orthostereo.com [23] Internetová dokumentace knihovny Ffmpeg, 2009. http://ffmpeg.org [24] Webová dokumentace knihovny Freetype, 2009. http://www.freetype.org [25] Webová dokumentace grafické knihovny OpenGL, 2009. http://pyopengl.sourceforge.net [26] Internetový portál společnosti Garmin, výrobce navigačních systémů GPS, 2009. http://www.garmin.com [27] Internetový server linuxové dokumentace, konfigurace xorg.conf, 2009. http://linux.die.net/man/1/nvidia-xconfig [28] Webový článek o zachycení stereoskopických filmů, Universtity of Western Australia, 2009. http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/stereographics/stereo_film [29] Webový portál o softwarových produktech pro stereoskopii, 2009. http://stereo.jpn.org
48
PŘÍLOHA A: SCHÉMA ZAPOJENÍ
A Schéma zapojení
SCHÉMA ZAPOJENÍ CYKLISTICKÉHO TRENAŽÉRU
NZ IO
X1
L1
56 µ H
C1
470 µ F
C2 220nF
C3
200 µ F
C4
C5
47nF
100nF
R2
ARDUINO DUEMILANOVE
2,2k Ω
IS
X2
HITEC HS-645MG X43
R1
100k Ω
T
PR
X3
Potenciometr 50kΩ
USB
50
PŘÍLOHA B: UŽIVATELSKÁ PŘÍRUČKA
B Uživatelská příručka A.1 Návod na instalaci programu Aplikace VRCycle je určena pro operační systém Linux. Vyžaduje instalaci následujících knihoven a to v tomto pořadí: • • • •
binutils (> v2.19) avr-gcc (> v4.3.3) avr-libc (> v1.6.6) freetype (> v2.1.2)
Program dále využívá knihoven X11, GLUT, GLX, avcodec, swscale, avformat, avutil, STL a termios. V závislosti na distribuci systému Linux bude možná potřeba instalovat některé z nich. Pro stereoskopický mód je nutná grafická karta podporující OpenGL quadbuffer a správná konfigurace souboru xorg.conf (konfigurační soubor X serveru, typicky umístěn v adresáři /etc/X11/). V sekci Device je uvést aktivaci stereoskopického módu: Section "Device" Identifier Driver BoardName Option
"Videocard1" "nvidia" "NVIDIA Quadro" "Stereo" "3"
Před instalací progamu si můžete ověřit správnou konfigurace systému pomocí příkazu configure. Samotný překlad spustíte příkazem make all.
A.2 Ovládání programu Ovládání aplikace je situováno do numerické klávesnice (pro možnost samostatného použití). Po spuštění je zobrazena nabídka pro volbu trasy, profilu, nastavení programu, zobrazení informací o projektu a spuštění trenažéru. Ovládání těchto nabídek je následující: • • •
klávesy 2, 4, 6, 8 (kurzory num. klávesnice) – pohyb v nabídkách a volbách nastavení klávesa Enter – potvrzení zvoleného nastavení/spuštění simulátoru klávesa . – zrušení volby/ukončení aplikace
Mód simulátoru umožňuje ovládání: • • • •
klávesy 4, 6 (kurzory num. klávesnice) – nastavení rychlosti jízdy (v módu simulace) klávesy 2, 8 (kurzory num. klávesnice) – volba umístění legendy klávesa 0 – volba formátu legendy klávesa . – ukončení simulátoru
51
52
PŘÍLOHA C: OBSAH CD
C Obsah DVD •
EXE ▪
•
•
HTML ▪
abstractaj.html – rozšířený abstrakt v angličtině
▪
abstractcz.html – rozšířený abstrakt v češtině
▪
abstract.html – krátký abstrakt
▪
index.html – webové stránky diplomové práce
SRC ▪
•
VRCycle.zip – instalační balíček aplikace (včetně ukázkových dat)
*.* - zdrojové kódy projektu
TEXT ▪
dp.pdf – text diplomové práce v pdf
▪
dp.odt – text diplomové práce ve formátu Open Office Document
•
index.html – výchozí stránka projektu
•
readme.txt – popis struktury tohoto DVD
•
install.txt – popis instalace programu
53