MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨  AKULTA INFORMATIKY !"#$%&'()+,-./012345

Flexibilní GPS navigace pro mobilní zaˇrízenís OS

BAKALÁRSKÁPRÁCEˇ

Martin Kolman

Brno, jaro 2010

Prohlášení

Prohlašuji, že tato bakaláˇrskápráce je mým p ˚uvodnímautorským dílem, které jsem vypracoval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování používal nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj.

Vedoucí práce: RNDr. Aleš Horák, Ph.D.

ii Podˇekování

Dˇekujivedoucímu mé bakaláˇrsképráce RNDr. Aleši Horákovi, Ph.D. za odborné vedení, zajímavé podnˇetya pomoc pˇritestování modRany. Rovnˇež mu dˇekujiza poskytnutí techniky a zdroj ˚u,bez kterých by tento projekt nemohl být realizován.

iii Shrnutí

První ˇcástpráce obsahuje úvod do problematiky navigaˇcníhosoftwaru a po- kraˇcujepˇrehledema srovnáním navigaˇcníchsystém ˚u,dostupných pro mo- bilní linuxové platformy. Dále se práce zamˇeˇrujena výbˇervhodného navi- gaˇcníhosystému k úpravám a popisu tˇechtoúprav ve formˇenového navi- gaˇcníhosystému modRana. Je zde také popsáno vývojové prostˇredía uži- vatelská základna systému modRana. Závˇereˇcná ˇcástse zabývá dalšími možnými smˇeryvývoje. Navigaˇcnísystém modRana byl implementován v jazyce Python s pomocí PyGTK a Cairo.

iv Klíˇcováslova

GPS, navigace, navigaˇcnísystém, Linux, mobilní zaˇrízení,OpenStreetMap, modRana, Maemo, N900

v Obsah

1 Navigaˇcnísoftware pro mobilní zaˇrízenís OS Linux ...... 2 1.1 Klasifikace navigaˇcníchsystém ˚u ...... 2 1.1.1 Navigaˇcnísoftware používající bitmapové dlaždice . 2 1.1.2 Navigaˇcnísoftware používající vektorové mapové pod- klady ...... 3 1.1.3 Navigaˇcnísoftware nepoužívající mapové podklady 3 1.2 Hledání cesty ...... 3 1.2.1 Hledání cesty z lokálních dat ...... 4 1.2.2 Hledání cesty pomocí internetové služby ...... 4 1.2.3 Manuální výbˇercesty ...... 5 1.2.4 Cesta ze záznamu ...... 5 1.3 Pˇrehleddostupných navigaˇcníchsystém ˚u ...... 5 1.3.1 TangoGPS ...... 5 1.3.2 Navit ...... 6 1.3.3 Rana ...... 8 1.3.4 OmGPS ...... 9 1.3.5 Maemo Mapper ...... 10 1.3.6 McNavi ...... 11 1.3.7 Simple geocaching tool for Linux ...... 12 1.3.8 Advanced Geocaching Tool for Linux ...... 13 2 Požadavky a návrh ...... 15 2.1 Výbˇernavigaˇcníhosystému pro modifikaci ...... 15 2.1.1 Navigaˇcnísystém Rana ...... 16 Python ...... 16 PyGTK a Cairo ...... 16 Modulární struktura ...... 16 2.2 Návrh implementace požadovaných funkcí ...... 16 2.2.1 Konfigurovatelnost ...... 16 2.2.2 Auto, kolo a pˇešípoužití ...... 17 2.2.3 Podpora mapových podklad ˚u ...... 17 2.2.4 Stahování a offline použití mapových podklad ˚u . . . 18 2.2.5 Cílová platforma a multiplatformnost ...... 18

vi 2.3 Návrh implementace dodateˇcnýchfunkcí ...... 19 2.3.1 Hledání cesty a POI ...... 19 2.3.2 Práce s trasami ...... 19 2.3.3 Informaˇcníukazatele ...... 20 2.3.4 Profil trasy ...... 20 2.3.5 Pˇrekrývánímapových vrstev ...... 20 3 Implementace navigaˇcníhosystému modRana ...... 21 3.1 Úpravy uživatelské rozhraní ...... 21 3.1.1 Zobrazení pˇrizp˚usobenépomˇeru stran ...... 21 3.1.2 Konfigurovatelné rozhraní ...... 21 3.1.3 Formát konfiguraˇcníhosouboru ...... 22 3.1.4 Nový ukazatel pozice ...... 24 3.1.5 Vylepšený systém zobrazování dlaždic ...... 25 3.2 Vyhledávání cesty ...... 26 3.2.1 Režimy vyhledávání trasy ...... 26 3.2.2 Formát startu a cíle ...... 26 3.2.3 Zadávání startu a cíle v modRanˇe ...... 27 3.2.4 Informace dostupné o nalezené cestˇe ...... 27 3.2.5 Ukládání nalezených cest mezi trasy ...... 27 3.3 Práce s trasami ...... 28 3.3.1 Podpora tras ve formátu GPX ...... 28 3.3.2 Výškový profil ...... 28 3.3.3 Zobrazení aktuálního výškového profilu ...... 29 3.3.4 Optimalizované vykreslování tras ...... 29 3.3.5 Správce tras ...... 30 3.4 Dávkové stahování mapových dílc ˚u ...... 30 3.4.1 Režimy dávkového stahování ...... 30 3.4.2 Souvislé pokrytí nespojité trasy ...... 31 3.4.3 Doplnˇenídlaždic z dalších úrovní pˇriblížení . . . . . 32 3.4.4 Stahování dlaždic a metainformací ...... 32 3.5 Inovovaný systém ukládání dílc ˚u ...... 32 3.6 Pˇrekrytímapových vrstev ...... 33 3.7 Integrace internetových služeb ...... 34 3.7.1 Doplnˇenívýškových dat k trase ...... 34 3.7.2 Hledání POI pomocí Google Local Search ...... 34 3.8 N900 ...... 35 3.8.1 Instalaˇcníbalíˇcek ...... 36 3.8.2 Podpora pro Location API ...... 36 3.8.3 Alternativní adresáˇrpro ukládání mapových dílc ˚u . 36 3.9 Neo FreeRunner ...... 37

vii 3.10 Rozšíˇrenápodpora mapových podklad ˚u ...... 37 3.10.1 Úpravy ...... 37 3.10.2 Rozšíˇrenípodporovaných mapových podklad ˚u . . . 37 3.10.3 , Google Satelite ...... 38 3.10.4 Yahoo Maps, Satelite ...... 38 3.10.5 Virtual Earth ...... 38 3.11 Vývojové prostˇredí ...... 39 3.11.1 Neo FreeRunner ...... 39 3.11.2 Smart Q7 ...... 39 3.11.3 Maemo 5 SDK ...... 40 3.12 Konference Openmobility 2010 ...... 40 3.13 Uživatelé modRany ...... 40 4 Závˇer ...... 41 4.1 Podpora více poskytovatel ˚uonline služeb ...... 41 4.2 Práce s offline katalogy POI ...... 41 4.3 Integrace funkcí specifických pro platformu ...... 42 4.3.1 Podpora klávesnice ...... 42 4.3.2 Akcelerometr ...... 42 4.3.3 Alternativní metody zjištˇenípolohy ...... 42 4.4 Podpora dalších formát ˚upro záznamy trasy ...... 43 A Snímky obrazovky ...... 48 B Obsah CD ...... 61

viii Úvod

V souˇcasnédobˇeexistuje pˇrekvapivˇevelké množství linuxových navigaˇc- ních aplikací. Tento jev je relativnˇenový a podle mého názoru je zp ˚usoben vˇetšídostupností mobilních linuxových zaˇrízení,jako jsou napˇríkladNeo FreeRunner nebo na Maemu založené tablety spoleˇcnostiNokia. Existuje již nˇekolikvelkých a pokroˇcilýchprojekt ˚u,poskytujících kom- plexní funkcionalitu, jako jsou napˇríkladTangoGPS, Navit nebo Maemo Mapper. Tyto projekty sice nejsou zcela bez závady, jsou však již použitelné k navigaci v terénu. Kromˇevelkých navigaˇcníchprojekt ˚uexistuje také ˇradamenších apli- kací, které ˇcastopostrádají i základní funkcionalitu. Nabízejí však r ˚uzné zajímavé vlastnosti, které ale nejsou ve "velkých"navigaˇcníchsystémech k dispozici. V rámci této práce jsem provedl pr ˚uzkumdostupných navigaˇcníchsys- tém ˚u,srovnával jsem jejich vlastnosti, klady a zápory. Na základˇetohoto pr ˚uzkumujsem si k modifikaci vybral navigaˇcnísystém Rana. Pˇriprová- dˇeníúprav jsem se snažil implementovat zajímavé a praktické funkce, do- stupné v ostatních navigaˇcníchsystémech. Výsledkem tˇechtoúprav je na- vigaˇcnísystém modRana. Poznatky, které jsem získal bˇehempˇrípravytéto práce, a navigaˇcnísys- tém modRana jsem prezentoval 24. dubna 2010 na konferenci Openmobi- lity, která probˇehlana Fakultˇeaplikované informatiky Univerzity Tomáše Bati ve Zlínˇe.

1 Kapitola 1 Navigaˇcnísoftware pro mobilní zaˇrízenís OS Linux

Vˇetšinadostupného navigaˇcníhosoftware pro mobilní Linux patˇrímezi svobodný software, výjimku tvoˇrínapˇríkladnavigaˇcnízaˇrízenífirmy Tom- Tom, používající proprietární navigaˇcnísoftware nebo zdarma dostupné, ale proprietární Ovi Maps od spoleˇcnostiNokia. Vzhledem k tomu, že mým úkolem bylo vybrat a upravit vhodný navigaˇcnísystém, budu se dále vˇe- novat pouze volnˇešiˇritelnémunavigaˇcnímusoftwaru.

1.1 Klasifikace navigaˇcníchsystém ˚u

Navigaˇcnísoftware lze rozdˇelitpodle zp ˚usobupráce s mapovými pod- klady na 3 skupiny: ∙ navigaˇcnísoftware používající bitmapové dlaždice

∙ navigaˇcnísoftware použivající vektorové mapové podklady

∙ navigaˇcnísoftware nepoužívající mapové podklady D ˚uležitýmzdrojem volnˇešiˇritelnýchvektorových dat i bitmapových dlaždic je projekt OpenStreetMap, popsaný v knize autor ˚uFrederika Ra- mma a Joechena Topfa [1].

1.1.1 Navigaˇcnísoftware používající bitmapové dlaždice Tento typ navigaˇcníchsystém ˚upoužívá mapové podklady ve formˇeˇctver- cových dlaždic, ze kterých vytváˇrísouvislou vrstvu. Tato vrstva pak tvoˇrí výslednou mapu. Mˇeˇrítkomapy urˇcujetakzvaná úroveˇnpˇriblížení1, která urˇcujemˇeˇrítkokonkrétní vrstvy. Nízká úroveˇnpˇriblíženíznamená vysoké mˇeˇrítkoa menší celkový poˇcetdlaždic ve vrstvˇe.Vysoká úroveˇnpˇriblížení znamená menší mˇeˇrítkoa vˇetšípoˇcetdlaždic. Celková mapa je pak tvoˇrena souborem vrstev, odpovídajících jednotlivým mˇeˇrítk˚um.

1. z anglického zoomlevel

2 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Hlavní výhodou bitmapových dlaždic jsou nízké nároky na výkon zob- razujícího zaˇrízenía proto, jelikož na sobˇedlaždice nezávisí, je možné dlaž- dice snadno stahovat podle aktuální potˇreby, popˇrípadˇestažené dlaždice aktualizovat. Pro velké oblasti s nízkým mˇeˇrítkemvšak výraznˇeroste poˇcetdlaždic a nároky na úložný prostor. Bitmapové dlaždice také neobsahují žádné in- formace o svém obsahu, takže napˇríkladhledání cesty a upozorˇnovánína body zájmu musí navigaˇcnísystém ˇrešitjinými prostˇredky. Dlaždice používají napˇríkladwebové mapové aplikace nebo navigaˇcní systémy Rana a TangoGPS. Tˇemtonavigaˇcnímsystém ˚umse podrobnˇejivˇe- nuji v sekcích 1.3.3 a 1.3.1

1.1.2 Navigaˇcnísoftware používající vektorové mapové podklady Vektorové mapové podklady fungují na principu vektorové grafiky, jed- notlivé geografické vlastnosti jsou popsány pomocí ˇretˇezc˚usložených ze znak ˚ua ˇcísel. Na rozdíl od binárních dílc ˚unelze tato data zobrazit pˇrímo a je nutné nejdˇríveprovést zpracování do grafické podoby. Takto ostatnˇetaké vzniká vˇetšinabinárních mapových dílc ˚u(s výjimkou oskenovaných historických map a satelitních snímk ˚u).Generování mapy z grafických dílc ˚uje pomˇernˇe nároˇcnouˇcinností, ale na druhou stranu umožˇnujez jednoho souboru dat vykreslit mnoho úrovní pˇriblížení anebo stejná data využít pro hledání trasy. Mezi navigaˇcnísystémy, které používají vektorové mapové podklady, patˇrínapˇríkladnavigaˇcnísystém Navit a mnoho komerˇcníchjednoúˇcelo- vých navigaˇcníchpˇrístroj ˚u.Navit je popsán v sekci 1.3.2.

1.1.3 Navigaˇcnísoftware nepoužívající mapové podklady Existují navigaˇcnísystémy, které pro sv ˚ujprovoz nepotˇrebujímapové pod- klady. Pˇríklademm ˚užebyt aplikace SGTL, které jsem vˇenovalsekci 1.3.7. Tento jednoduchý program ukazuje aktuální smˇera vzdálenost k zada- nému bodu. Dalším pˇríklademnavigace bez použití mapy je GPS infor- maˇcníobrazovka v SHR [2], zobrazující souhrn dostupných informací z GPS pˇrijímaˇce.

1.2 Hledání cesty

Hledání optimální trasy mezi dvˇemabody je užiteˇcnouvlastností nˇekte- rých navigaˇcníchsystém ˚u.Hledání cesty m ˚užemezpravidla rozdˇelitpodle

3 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX toho, jestli je výpoˇcetoptimální trasy provádˇenpˇrímona zaˇrízeníz lokálnˇe dostupných dat nebo jestli se jedná o podání dotazu internetové službˇe, kdy zaˇrízenípouze zobrazí výsledek tohoto dotazu.

1.2.1 Hledání cesty z lokálních dat Díky tomu, že výpoˇcetoptimální cesty probíhá z lokálnˇedostupných dat, je tento zp ˚usobnezávislý na dostupnosti internetu a internetové vyhledávací služby. Je však nutné mít k dispozici data pro všechny oblasti, ve kterých má hledání cesty fungovat, což m ˚uževést k velkým nárok ˚umna úložný prostor zaˇrízení.Uložená data také mohou postupem ˇcasuzastarat, je tedy vhodné zajistit jejich aktualizaci, která však vzhledem k velikosti tˇechtodat2 klade pomˇernˇevysoké nároky na pˇrenosovoukapacitu a také prakticky vyluˇcuje aktualizaci tˇechtodat pomocí GPRS. Další nevýhodou lokálního hledání trasy je nároˇcnostvýpoˇctu,která stoupá s délkou a složitostí trasy.

1.2.2 Hledání cesty pomocí internetové služby Tento zp ˚usobhledání cesty spoˇcíváv odesláni dotazu internetové službˇe. Odpovˇedína dotaz jsou pak údaje o nalezené cestˇenebo upozornˇenína to, že cesta nebyla nalezena. Pˇríklademtakové služby je Google Directions. Tato služba je souˇcástíGoogle Maps, jejichž fungování ve své knize popisují Gibson a Erle [4]. Hlavní výhodou internetové služby je rychlost nalezení trasy. Funkci této služby zpravidla zajišt’uje jeden nebo více výkonných server ˚u,jejichž výkon vysoce pˇrevyšujevýkon bˇežnéhomobilního zaˇrízení,a proto je vý- poˇcetcesty hotový mnohem rychleji, než kdyby probíhal na mobilním za- ˇrízení. Nevýhodou použití internetových služeb k nalezení cesty je závislost na pˇripojeník internetu. Objem pˇrenesenýchdat nutných pro zjištˇenítrasy je však velmi malý3. Lze tedy použít napˇríkladGPRS, které je dnes již široce dostupné. Další možností je cestu pˇredemvyhledat a uložit.

2. vektorová OSM data z Cloudmade [3] pro CRˇ mají 69MB a pro Evropu 1.2 GB 3. cesta z Prahy do Brna, navrácená službou Google Directions ve formátu JSON, má ve- likost 11.8 KB

4 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

1.2.3 Manuální výbˇercesty Tento zp ˚usobvýbˇeru cesty spoˇcíváv manuálním vytyˇcení cesty na mapˇe. Tato metoda výbˇeru cesty umožˇnujezvolit trasu podle vlastní zkušenosti a použít cesty, které nejsou v mapových podkladech zaneseny. Výbˇertrasy na delší vzdálenost však m ˚užebýt nepˇresnýnebo velice zdlouhavý.

1.2.4 Cesta ze záznamu Další možností je volba cesty, kterou již nˇekdoabsolvoval a zveˇrejnilv po- dobˇesouboru koordinát zaznamenaných pomocí GPS [5]. Existuje mnoho souborových formát ˚upro záznam trasy, od prostého seznamu NMEA vˇet z GPS pˇrijímaˇce,pˇresproprietární formáty nˇekterýchvýrobc ˚unavigaˇcních zaˇrízeníaž po otevˇrenéformáty KML [6] a GPX [7]. Soubory s trasou je možné získat ze specializovaných stránek, které se zamˇeˇrujína jejich sbˇer. K tˇemtointernetovým stránkám patˇrívšeobecné zamˇeˇrenéWikiloc.com [8] nebo projekt Bikemap.net [9], zamˇeˇrenýna cyklistické trasy.

1.3 Pˇrehleddostupných navigaˇcníchsystém ˚u

V souladu se zadáním jsem provedl srovnání navigaˇcníchsystém ˚udostup- ných pro mobilní linuxová zaˇrízení.

1.3.1 TangoGPS Tango GPS [10] je linuxová navigaˇcníaplikace, používající bitmapové ma- pové dílce. V základním nastavení jsou používány mapové dílce z posky- tované projektem OpenStreetMap [11], lze však pˇridati jiné zdroje dílc ˚u. TangoGPS funguje na linuxových PC i na mobilních linuxových zaˇrízeních. Distribuce SHR [2] pro Neo FreeRunner jej používá jako hlavní GPS apli- kaci. Novˇeje TangoGPS také výchozí GPS aplikací na Touchbooku [12]. Rozhraní je pˇrizp˚usobenodotykovému ovládání a umožˇnujepˇrepnutí do režimu plné obrazovky. Hlavní obrazovka s mapou se sestává z lišty hlavních ovládacích tlaˇcíteknahoˇre,posuvníku pro zmˇenuúrovnˇepˇriblí- žení vpravo a informaˇcnílišty dole. Na FreeRunneru jsou v horní lištˇetla- ˇcítkabohužel pˇrílišblízko sebe. Zároveˇnlze díky ˇcernébarvˇes oranžovými ikonami jednotlivá tlaˇcítkašpatnˇerozlišit, obzvláštˇena denním svˇetle. Ponˇekudrušivˇep ˚usobíukazatel rychlosti v levém horním rohu, který není možné vypnout. Tato skuteˇcnostse nejvíc projevuje právˇena FreeRun- neru, kde ukazatel zabírá znaˇcnouˇcástobrazovky.

5 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.1: TangoGPS

TangoGPS umí dynamicky stahovat mapové dílce pro aktuálnˇezobraze- nou lokalitu a obsahuje také základní podporu dávkového stahování dílc ˚u. Je možné zvolit stažení aktuální viditelné oblasti a také zvolit kolik dalších úrovní pˇriblíženímá být staženo. Probíhající stahování dlaždic je znaˇceno ˇcíselnýmúdajem v informaˇcnímpruhu vlevo dole, jediným upozornˇením na dokonˇcenéstahování je zmizení tohoto ˇcísla. Zajímavá je služba Friends4, kterou TangoGPS podporuje. Tato služba po aktivaci zobrazí pozici zaˇrízeníostatním uživatel ˚umTangoGPS a umož- ˇnujesledování pozice ostatních uživatel ˚uslužby na mapˇe. TangoGPS podporuje záznam trasy do vlastního formátu. K aktuální trase jsou také zobrazeny informace o pr ˚umˇernéa maximální rychlosti, cel- kovém ˇcasestráveném na trase a absolvované vzdálenosti.

1.3.2 Navit Navit [13] je pravdˇepodobnˇenejpokroˇcilejšímlinuxovým navigaˇcnímsys- témem používajícím vektorové mapy. Jedná se o velmi komplexní navi- gaˇcnísystém, poskytující mnoho funkcí.

4. http://www.tangogps.org/friends/

6 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.2: Navit

Navit dokáže používat data z OpenStreetMap, pˇrekonvertovanádo vlast- ního binárního formátu. Na stránkách projektu existuje webová aplikace pro výbˇeroblasti pro pˇrekonvertovánía stažení na mapˇe.K dispozici jsou také hotové extrakty pro jednotlivé zemˇeze služby Cloudmade [14]. Na- vit pracuje nejen s daty z OpenStreetMap, ale také s mapovými podklady z jiných zdroj ˚u[15]. Nevhodný mi pˇripadalzp ˚usobnastavení cesty k mapovému souboru. Ve verzi Navitu, kterou jsem testoval5 bylo totiž nutné nejdˇrívelokalizovat konfiguraˇcnísoubor navit.xml, poté nalézt ˇrádek s definicí cesty k dat ˚um z OpenStreetMap a na tomto ˇrádkunastavit odpovídající cestu. Také jsem musel nalézt ˇrádeks definicí pˇredinstalovanéukázkové mapy Mnichova a tuto mapu deaktivovat. Konfiguraˇcnísoubor navit.xml má víc jak 4000 ˇrádek. Díky tomu, že Navit vykresluje mapy pˇrímoz vektorových dat, nabízí r ˚uznévizuální styly map. K dispozici je napˇríkladnoˇcnínebo cyklistický režim. Mapu lze libovolnˇenatáˇcet,popˇrípadˇem ˚užebýt automaticky roto- vána podle smˇeru jízdy. Další zajímavou možností je 3D zobrazení mapy. Urˇcitéproblémy se zobrazením mapy však vznikají pˇripoužití vˇetšíhomˇe- ˇrítka,kdy Navit ˇcastonezobrazuje mˇesta. Využití vektorových mapových podklad ˚us sebou nese i podporu pro offline hledání cesty. Cestu lze vyhledat zadáním na mapˇeˇcizadáním ad- res startu a cíle. Podporované je rovnˇežvyhledání cesty na vybrané místo

5. navit 0.2.0 na PC a navit 0.2.0 3193 na Neo FreeRunneru

7 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.3: Rana z aktuální pozice. Rozhraní Navitu je dobˇre pˇrizp˚usobenoovládání pomocí dotykové ob- razovky. Jeho jednotlivé prvky lze nastavit v konfiguraˇcnímXML souboru. Existuje nˇekolikr ˚uznýchrozhraní, založených napˇríkladna GTK, nebo vy- užívajících OpenGL.

1.3.3 Rana Rana [16] je modulární navigaˇcnísystém s GUI, které je plnˇepˇrizp˚usobené k ovládání dotykovou obrazovkou. Rana podporuje automatické stahování a zobrazování mapových dílc ˚uz projket ˚uOpenStreetMap [11], OpenCycle- Map [17] a OpenAerialMap [18]. Umí pracovat také s vektorovými mapo- vými daty, tato funkcionalita ale ustrnula ve stádiu vývoje. Silniˇcnía uliˇcní sít’ se sice zobrazí, ale bez jakýchkoli textových popisek, což výraznˇelimi- tuje použití pro navigaci. Zajímavý je zp ˚usob,jakým je Rana implementována. Program tvoˇrímno- žina modul ˚ua hlavního skriptu, který je pˇristartu naˇcte.Tento skript také zajišt’uje pravidelné volání metod, díky kterým jednotlivé moduly napˇrí- klad kreslí na mapu nebo zobrazují vlastní menu. Moduly mohou mezi se-

8 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX bou komunikovat bud’to pˇredávánímzpráv, pomocí globálního slovníku nebo pˇrímýmvoláním metod ostatních modul ˚u. Na stejném principu funguje rovnˇežuživatelské rozhraní, kde po stisku tlaˇcítkadojde k odeslání zpráv ˇcinastavení hodnot v globálním slovníku. Reakcí na takto poslanou zprávu m ˚užebýt napˇríkladposunutí listovacího menu. Ranu je plnˇekonfigurovatelná pomocí grafického rozhraní a zmˇenyna- stavení se promítají do globálního slovníku. Ten je ukládán do souboru, takže zmˇenya ostatní nastavení jsou zachovány a pˇridalším startu apli- kace opˇetplnˇek dispozici. Rana je napsaná v jazyce Python a samotný program se sestává z hlav- ního spouštˇecíhoskriptu, adresáˇres moduly a adresáˇres ikonami ve for- mátu PNG. Grafické rozhraní používá PyGTK [19] a Cairo [20], což jsou kromˇePy- thonu jediné další externí závislosti. Proto je možné, navzdory tomu, že se jedná o navigaˇcnísystém primárnˇeurˇcenýpro NeoFreeRunner, provozovat Ranu na v podstatˇena každé libovolné linuxové distribuci, která dovoluje instalaci Pythonu, PyGTK a Cairo. Jediným vˇetšímproblémem v pˇrípadˇe provozu na jiných platformách je uživatelské rozhraní, pˇrizp˚usobenépro obrazovku FreeRunneru. To m ˚uževést k deformaci ikon nebo k neúmˇerné velikosti ovládacích prvk ˚u. Rana je v podstatˇevelmi zajímavˇeˇrešenýmnavigaˇcnímsystémem, ob- sahuje však také mnoho nadˇejnˇep ˚usobících,ale nedokonˇcenýchfunkcí. Jsou to napˇríkladdávkové stahování mapových dat nebo práce s POI. Bo- hužel však v souˇcasnostijiž další vývoj Rany neprobíhá6.

1.3.4 OmGPS OmGPS 7 [21] je navigaˇcnísystém, urˇcenýpro Neo FreeRunner. K dispo- zici jsou pouze balíˇckypro tuto platformu a na webových stránkách tohoto projektu nejsou jiné platformy zmínˇeny. Grafické rozhraní toho navigaˇcníhosystému mi nepˇripadalopro mo- bilní zaˇrízenís dotykovou obrazovkou, jakým je FreeRunner, pˇrílišvhodné. Jednotlivé ovládací prvky jsou pˇrílišmalé a zároveˇnnevhodnˇeblízko sebe. Rozhraní se proto prakticky nedá ovládat pomocí prst ˚u.I pˇripoužití sty- lusu je ˇcastoproblém používat nˇekteréz ovládacích prvk ˚u. Mezi podporované vrstvy patˇríOpenstreetmap, Opencyclemap, Google maps a Google satelite. Zajímavá je funkce pˇrekrývánídvou vybraných ma-

6. poslední aktivita autora na projektu byla v srpnu 2008 7. název této aplikace zˇrejmˇevznikl kombinací slov a GPS

9 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.4: OmGPS pových vrstev. Je možné stanovit, která vrstva bude tvoˇritpozadí a kterou vrstvou bude toto pozadí pˇrekryto.Lze také nastavit úroveˇnpr ˚uhlednosti. Pˇríkladempoužití této funkce je pˇrekrytívrstvy satelitních snímk ˚umapo- vou vrstvou. OmGPS podporuje využití asistenˇcníslužby u-blox Assist Online [22], což urychluje dostupnost údaj ˚uo poloze po aktivaci GPS. Bˇehemmého testování tato funkce vždy fungovala. Podrobný návod na konfiguraci této vlastnosti je k dispozici na stránkách projektu OmGPS [21].

1.3.5 Maemo Mapper Maemo Mapper [23] je zajímavou aplikací, urˇcenoupro internetové tablety s linuxovým OS Maemo od firmy Nokia. Novˇelze tento navigaˇcnísystém nainstalovat také na N900. Rozhraní je viditelnˇepˇrizp˚usobenodotykovému ovládání a díky integraci s Maemo zapadají ovládací položky v menu do celkového vzhledu systému. Rozhraní je ponˇekudnepˇrehlednédíky množ- ství r ˚uznýchmenu, která se otevírají z mnoha r ˚uznýchtlaˇcítek.Proto bych v tomto programu ocenil jednotné menu, které by zpˇrístupˇnovalovšechna nastavení z jednoho místa.

10 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.5: Maemo Mapper

Maemo mapper používá bitmapové mapové podklady, ve výchozím na- stavení jsou to vrstvy OpenStreetMap, Google Maps a Google Satelite. Další vrstvy m ˚užeuživatel pˇridatpˇrímoz GUI. Tato aplikace také podporuje práci s POI, které lze zadávat bud’to ruˇcnˇe, nebo stáhnou pomocí online služby. Hledání cesty využívá online služby a nalezenou trasu je možné uložit. Podporován je také záznam absolvované trasy, vˇcetnˇevkládání pozná- mek a ukládání záznamu do souboru. Maemo mapper jsem testoval v Maemo 5 emulátoru, proto jsem bohu- žel nemohl otestovat funkce, využívající GPS. Tato aplikace totiž zˇrejmˇe využívá location API [24], které ale v emulátoru nefunguje.

1.3.6 McNavi McNavi [25] je dílem ˇceskéhovývojáˇrea v souˇcasnídobˇese nachází v ak- tivní vývojové fázi. V porovnání s ostatními navigaˇcnímisystémy se zˇrejmˇe nejvíce podobá Navitu, jelikož také používá vektorová data z projektu Open- StreetMap, uložená ve vlastním binárním formátu. Binární soubory pro Mc- Navi však nejsou s Navitem kompatibilní a jsou také o poznání vˇetší.Bi- nární soubory s mapovými podklady je možné vyrobit z OpenStreetMap dat pomocí konvertoru, dostupného pro x86 a amd64 Linux. Hotové mapy pro vybrané evropské zemˇelze také stáhnout na stránkách projektu. Podle popisu na stránkách projektu využívá McNavi vektorová data nejen k vykreslování mapy, ale slouží také k vyhledávání trasy. Bohužel se mi však vykreslování mapy ani hledání cesty podle dostupných po-

11 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.6: McNavi kyn ˚uzprovoznit nepodaˇrilo.Mapa se nezobrazila ani s aktivní GPS. Do vyhledávání trasy je možné zadat pouze jedno písmeno, ovšem bez jakékoli reakce rozhraní. Uživatelské rozhraní je dobˇrepˇrizp˚usobenédotykovému ovládání, domnívám se však, že ovládací a informaˇcníprvky zabírají pˇríliš mnoho místa na úkor zobrazení mapy.

1.3.7 Simple geocaching tool for Linux SGTL [26] je pˇríklademnavigaˇcníhosoftwaru, který nepoužívá mapové podklady. Jak už název napovídá, má tato aplikace sloužit milovník ˚umge- ocachingu. Nejvýraznˇejšímprvkem uživatelského rozhraní je velká šipka, která za- bírá vˇetšinuobrazovku. Šipka ukazuje ke souˇradnicím,které je možné na- stavit pomocí velkých dotykovému ovládání pˇrizp˚usobenýchtlaˇcítek.Smˇer šipky je pravdˇepodobnˇeurˇcovánv závislosti na smˇeru pohybu udávaném GPS pˇrijímaˇcem.Uživatel je tedy nucen se pohybovat minimálnˇerychlejší ch ˚uzí,jinak šipka ukazuje špatným smˇerem.

12 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.7: Simple geocaching tool for Linux

1.3.8 Advanced Geocaching Tool for Linux AGTL [27] navazuje na Simple geocaching tool for Linux. Novinkou oproti SGTL je zobrazení mapových podklad ˚uz OpenStreetMap a pˇríménapojení na databázi "keší"Geocaching.com. Nejdˇríveje nutné se na Geocaching.com zaregistrovat a registraˇcníudaje vyplnit v AGTL. Následovnˇedojde k aktivaci zobrazování polohy keší, které se nacházejí na aktuálnˇezobrazeném výseku mapy. Keše lze vyhle- dávat podle jména nebo zadaných parametr ˚ua k jednotlivým keším jsou k dispozici podrobné informace. AGTL nabízí uživateli možnost vložení vlastních informací a pozná- mek, které lze nahrát na Geocaching.com pˇrímoz aplikace. Autor AGTL uvádí na svých internetových stránkách bezpapírové geocachování jako cíl tohoto projektu. Smˇerová šipka z ˚ustalazachována, jako cíl šipky lze zvolit koordináty nebo nˇekterou z keší. V souˇcasnostijsou jedinými podporovanými mapovými podklady bitma- pové dílce z OpenStreetMap, AGTL neumožˇnujepˇridánídalších zdroj ˚u mapových podklad ˚uze strany uživatele.

13 1. NAVIGACNÍSOFTWAREPROMOBILNÍZAˇ RÍZENÍSˇ OSLINUX

Obrázek 1.8: Advanced Geocaching Tool for Linux

AGTL je urˇcenaprimárnˇepro NeoFreerunner, novˇeexistuje také verze pro N900 a aplikace by mˇelafungovat i na bˇežnédeskopové linuxové dis- tribuci.

14 Kapitola 2 Požadavky a návrh

Požadavky

Zadání mé práce stanovuje tvorbu navigaˇcníhosystému, který bude zalo- žený na již existujícím softwaru. Tento nový systém má být široce konfigu- rovatelný a použitelný pro navigaci pˇricestování autem, na kole i pˇešky a má podporovat stahování mapových podklad ˚upro offline použití. Cílo- vým prostˇredímje podle zadání jedna vybraná mobilní linuxová platforma, systém má však být natolik flexibilní, aby byl snadno modifikovatelný pro použití na jiných platformách.

2.1 Výbˇernavigaˇcníhosystému pro modifikaci

Práci na novém navigaˇcnímsystému jsem zaˇcalvýbˇerem vhodného již exis- tujícího navigaˇcníhosoftwaru. Pˇrivýbˇeru jsem využil poznatky, které jsem získal pˇrisrovnávání navigaˇcníchsystém ˚udostupných pro mobilní linu- xová zaˇrízení.

Kritéria Vzhledem k tomu, že jsem si jako primární cílovou platformu vybral linu- xový operaˇcnísystém Maemo 5 na N900 [28], musel jsem zvolit takový soft- ware, jaký je na této platformˇemožné provozovat, pˇrípadnˇepro tuto plat- formu snadno upravit. Souˇcasnˇejsem ale chtˇelzachovat co nejvˇetšíkompa- tibilitu s ostatními platformami a co nejmenší poˇcetzávislostí na externích softwarových komponentách. Mým cílem také bylo vybrat takový systém, který umožní snadno inte- grovat další svobodný software za úˇcelemrozšíˇrenífunkcionality systému.

15 2. POŽADAVKY A NÁVRH

2.1.1 Navigaˇcnísystém Rana Navigaˇcnísystém Rana [16] jsem vybral jako základ k úpravám proto, že odpovídá mnou zvoleným kritériím.

Python Rana je implementována v programovacím jazyce Python [29]. Díky tomu, že se jedná o interpretovaný jazyk, není nutné Ranu pro každou platformu zvlášt’ kompilovat. Python je k dispozici pro širokou škálu platforem a ar- chitektur, napˇríkladprávˇepro N900, Neo FreeRunner ˇcivˇetšinulinuxových distribucí na PC.

PyGTK a Cairo Uživatelské rozhraní Rany využívá PyGTK [19] a Cairo [20], které spoleˇcnˇe s Pythonem tvoˇríjediné závislosti nutné pro bˇehRany. Oba tyto kompo- nenty jsou široce dostupné, na Neo FreeRunneru jsou k dispozici již v zá- kladní instalaci SHR [2] a na N900 je lze snadno doinstalovat pomocí balíˇc- kového systému z repozitáˇre.

Modulární struktura Rana je tvoˇrena souborem modul ˚u.Jednotlivé moduly mezi sebou mo- hou komunikovat posíláním práv, prostˇrednictvímperzistentního globál- ního slovníku nebo pomocí pˇríméhopˇrístupuk metodám a promˇenným jednotlivých modul ˚u.Je tak velmi snadné vytvoˇritnový modul rozšiˇrující funkcionalitu, nebo modifikovat nˇekterýze stávajících modul ˚u.Modulární architektura Rany také umožˇnujesnadnou integraci dalších volnˇešiˇritel- ných komponent. Zde se pozitivnˇeprojevuje použití Pythonu, jelikož pro tento jazyk exis- tuje velké množství [30] balík ˚us rozšiˇrujícífunkcionalitou. Pˇripoužití pouze takových balík ˚u,které nemají externí závislosti a jsou napsané v Pythonu, je možné efektivnˇerozšíˇritfunkce poskytované Ranou bez újmy na flexibilitˇe.

2.2 Návrh implementace požadovaných funkcí

2.2.1 Konfigurovatelnost Rana používala ke konfiguraci hodnoty pˇrímove zdrojovém kódu a perzis- tentní globální slovník. Velikost a pozice ovládacích a informaˇcníchprvk ˚u

16 2. POŽADAVKY A NÁVRH byla fixní, optimalizovaná pro Neo FreeRunner. Také cesta k adresáˇris ma- povými dílci a definice mapových vrstev byly napsány pˇrímove zdrojovém kódu. Do modRany jsem implementoval podporu textových konfiguraˇcních soubor ˚u,které slouží k nastavení uživatelského rozhraní, cest k dílc ˚um a trasám a k definici mapových vrstev. Popis hlavního konfiguraˇcníhosou- boru a konfigurovatelného uživatelského rozhraní je v sekci 3.1.3. V sekci 3.1.1 jsou podrobnˇejipopsány úpravy uživatelského rozhraní, které jsem provedl za úˇcelemlepšího pˇrizp˚usobenímodRany r ˚uznýmroz- lišením a pomˇer˚umstran.

2.2.2 Auto, kolo a pˇešípoužití Rana umožˇnovalajednoduchou volbu profilu. Tyto profily byly odvozeny od znaˇckování[31] používaného v projektu OpenStreetMap pro hledání cesty. Nastavený profil byl využíván pouze pˇrihledání cesty pomocí vek- torových map z OpenStretMap. Tuto funkci se mi podobnˇejako vˇetšinu funkcí, založených na implementaci vektorových map v Ranˇe,nepodaˇrilo zprovoznit. V modRanˇejsem profily pˇreorganizoval tak, aby byly pro uživatele pˇre- hlednˇejší.Ponechal jsem profily pro jízdu autem, na jízdním kole, pro pˇeší cestování, jízdu vlakem nebo autobusem Pomocí odpovídající sekce v kon- figuraˇcnímsouboru, popsaném v sekci 3.1.3, m ˚užeuživatel nastavit veli- kost a pozici jak ovládacích prvk ˚u,tak informaˇcníchukazatel ˚u. Informace o aktuálním profilu využívá ModRana pˇrivyhledávání cesty pomocí Google Directions. Bude-li aktivní pˇešíprofil, bude vyhledána pˇeší varianta cesty, bude-li aktivní profil pro automobil, bude vyhledána moto- ristická varianta atd.. Funkce pro vyhledávání cesty pomocí online služby je detailnˇejipopsána v sekci 3.2.

2.2.3 Podpora mapových podklad ˚u Rana podporovala vektorové mapové podklady, založené na datech z Open- StreetMap, a zobrazování mapových dílc ˚uz OpenStreetMap, OpenCycle- Map a OpenArialMap. V praxi však bylo zobrazování vektorových mapo- vých podklad ˚uvelmi nespolehlivé a chybˇelovykreslení jakýchkoli texto- vých popisek. Zobrazování dílc ˚uz OpenCycleMap nefungovalo pro zasta- ralé URL a projekt OpenArialMap pˇrestalposkytovat mapové dílce. V modRanˇejsem podporu vektorových mapových podklad ˚uvzhledem k nízké použitelnost deaktivoval. Dále jsem vzhledem k nedostupnosti dílc ˚u

17 2. POŽADAVKY A NÁVRH odebral mapovou vrstvu pro OpenArialMap. Vrstva OpenCycleMap po za- dání aktuální URL opˇetfunguje. Kromˇezmˇenp ˚uvodníchmapových vrstev jsem do modRany doplnil podporu mapových dlaždic z dalších zdroj ˚u.Pˇridaljsem mapové vrstvy založené na dlaždicích z Google Maps, Yahoo Maps a Virtual Earth. Popis implementace podpory nových mapových vrstev se nachází v sekci 3.10.2. P ˚uvodnízp ˚usobzobrazování mapových dílc ˚ujsem modifikoval tak, abych docílil vykreslení ostré a jednolité mapy. Popis tˇechtoúprav je v sekci 3.1.5.

2.2.4 Stahování a offline použití mapových podklad ˚u Rana podporovala automatické stahování bitmapových dlaždic v aktuálnˇe zobrazené oblasti. Stažené mapové dílce byly ukládány do jediného adre- sáˇre,do soubor ˚upojmenovaných podle vrstvy a souˇradnicstažené dlaž- dice. Nebylo tedy možné sdílet adresáˇrmapových podklad ˚unapˇr.s navi- gaˇcnímsystémem TangoGPS, které ukládá dlaždice do adresáˇrovéstruk- tury. SouˇcástíRany byla rozpracovaná podpora dávkového stahování vekto- rových dat v XML z OpenStreetMap, dávkové stahování mapových dlaždic Rana nepodporovala. V modRanˇejsem implementoval dávkové stahování mapových dlaž- dic, a to jak kolem aktuální pozice, tak kolem aktuálního pohledu na mapu ˇcivybrané trasy, vˇcetnˇenastavení polomˇeru a rozsahu úrovní pˇriblížení. Dávkové stahování mapových dlaždic používá vlákna a po dokonˇceníse zobrazí upozornˇení.Podrobný popis implementace se nachází v sekci 3.4. ModRana ukládá mapové díly do adresáˇrovéstruktury kompatibilní s TangoGPS, takže oba tyto navigaˇcnísystémy mohou sdílet adresáˇrs dílci. Tuto funkci jsem implementoval na základˇepodnˇet˚uzískaných od úˇcast- ník ˚ukonference Openmobility 2010, na které jsem modRanu prezentoval. Popisu vylepšeného ukládání mapových dílc ˚use vˇenujesekce 3.5.

2.2.5 Cílová platforma a multiplatformnost Navigaˇcnísystém Rana byl pˇrizp˚usobenpro linuxový mobilní telefon Neo Freerunner. Ranu lze sice spustit i na jiných linuxových zaˇrízeních.V tomto pˇrípadˇevšak dochází ke znaˇcenémuzkreslení uživatelského rozhraní, které je urˇcenopro dotykovou obrazovku Nea o rozlišení 480 na 640 pixel ˚u.Pro zjištˇenípozice byl podporován pouze gps démon, který napˇríkladna N900 není v ˚ubeck dispozici. Instalace Rany spoˇcívalave zkopírování programu ze SVN a k dispozici nebyly žádné instalaˇcníbalíˇckyˇcibalíˇckovacískripty.

18 2. POŽADAVKY A NÁVRH

V modRanˇejsem zmˇenilzp ˚usobvykreslování uživatelského rozhraní tak, aby se GUI lépe pˇrizp˚usobovalorozdílným rozlišením a pomˇer˚umstran. Více informací o zmˇenáchprovedených na uživatelském rozhraní je v sekci 3.1.1. Protože jsem si jako cílovou platformu vybral Maemo 5 na N900, dopl- nil jsem podporu Location API, které na této platformˇeumožˇnujepˇrístup k GPS, viz sekce 3.8.2. Pro usnadnˇeníinstalace jsem pomocí vlastního balíˇckovacíhoskriptu vytvoˇrilinstalaˇcníbalíˇckypro Maemo 5 na N900, SHR na Neo FreeRunneru a Deabin/.

2.3 Návrh implementace dodateˇcnýchfunkcí

2.3.1 Hledání cesty a POI Rana obsahovala rozpracovanou funkcionalitu pro hledání cesty za použití vektorových dat z OpenStreetMap. Pro práci s POI bylo k dispozici pouze hlavní menu bez jakékoli další funkcionality. Rana neumožˇnovalavyhledá- vání cest ani POI pomocí internetu. V modRanˇejsem implementoval hledání cesty za pomocí internetové služby Google Directions, která umožˇnujehledání cesty jak mezi souˇradni- cemi, tak textové zadanými adresami. Sekce 3.2 obsahuje podrobnˇejšípopis implementace hledání cesty. ModRana vyhledává POI pomocí služby Google Local Search [32]. Na- lezené výsledky se zobrazí na mapˇea lze je také uložit. Souˇcástívýsledku je zpravidla také adresa a telefonní ˇcíslo.Popis implementace online hledání POI se nachází v sekci 3.7.2.

2.3.2 Práce s trasami P ˚uvodnínavigaˇcnísystém Rana podporoval pouze naˇcítánítras ve formátu GPX pro simulaci GPS. Podporován bylo pouze starší GPX 1.0, zatímco v souˇcasnostipˇrevážnˇepoužívané GPX 1.1 podporováno nebylo. Pˇriimplementaci práce s trasami v modRanˇejsem použil víceúˇcelový modul Upoints [33], který mimo jiné podporuje naˇcítánía ukládání tras ve formátu GPX 1.1. Uložené trasy je možné zobrazit na mapˇe,lze doplnit data o nadmoˇrskévýšce, zobrazit výškový profil trasy ˇcizobrazit informaˇcní ukazatele s informacemi o trase. Práci s trasami v modRanˇeje vˇenována sekce 3.3. Online doplnˇenínadmoˇrskévýšky popisuje sekce 3.7.1.

19 2. POŽADAVKY A NÁVRH

2.3.3 Informaˇcníukazatele Rana obsahovala multifunkˇcníukazatel tvoˇrený ˇcernýmpruhem v dolní ˇcástiobrazovky, ve kterém se zobrazovaly aktuální informace jako napˇrí- klad rychlost pohybu ˇciaktuální ˇcas.Souˇcasnˇese vždy zobrazily pouze in- formace z jedné kategorie, mezi jednotlivými kategoriemi bylo možné pˇre- pínat kliknutím na informaˇcnípruh. Informaˇcnípruh, který zabíral podstatnou ˇcástobrazovky a zároveˇn vždy zobrazoval pouze jeden druh informace, jsem v modRanˇeodstranil a nahradil systémem pr ˚uhlednýcha konfigurovatelných informaˇcníchuka- zatel ˚u.Popis konfigurace informaˇcníchukazatel ˚uje souˇcástísekce 3.1.3, která je vˇenovánauživatelskému konfiguraˇcnímusouboru.

2.3.4 Profil trasy P ˚uvodníRana nepodporovala zobrazení profilu trasy. Zobrazení profilu sice nabízejí trasy nˇekteréwebové mapové služby, u mobilních navigaˇcníchaplikací se však prakticky nevyskytuje. ModRana automaticky vytváˇrívýškový profil pro každou trasu, která obsahuje data o nadmoˇrskévýšce. Dokáže také zobrazit výsek výškového profilu v po- dobˇeinformaˇcníhoukazatele. Popis tvorby výškového profilu se nachází v sekci 3.3.2.

2.3.5 Pˇrekrývánímapových vrstev P ˚uvodnísystém Rana neumožˇnovalpˇrekrývánímapových vrstev. K implementaci této funkce mne inspiroval program OmGPS, popsaný v sekci 1.3.4. Implementace v modRanˇeumožˇnujezvolit zvlášt’ v vrstvu v pozadí a zvlášt’ pˇrekrývající vrstvu. Stupeˇnpr ˚uhlednostipˇrekrývající vrstvy lze nastavit v rozsahu 25 až 100%. Pˇrekrývánímapových vrstev se vˇenujesekce 3.6.

20 Kapitola 3 Implementace navigaˇcníhosystému modRana

Novˇevznikající systém byl nazván modRana, protože se jedná o zásadní modifikaci navigaˇcníhosystému Rana.

3.1 Úpravy uživatelské rozhraní

Uživatelské rozhraní bylo upraveno tak, aby se lépe pˇrizp˚usobovalo r ˚uz- ným rozlišením a pomˇer˚umstran obrazovky.

3.1.1 Zobrazení pˇrizp˚usobenépomˇerustran P ˚uvodnígrafické rozhraní bylo navržené pro Neo FreeRunner a odpovídá pomˇeru stran jeho obrazovky. Rozhraní jsem upravil tak, aby reagovalo na zmˇenypomˇeru stran, ˇcímžjsem docílil konzistentního vzhledu rozhraní pro široký rozsah pomˇer˚ustran. Pˇrizp˚usobiljsem také rozvržení listovacích a informaˇcníchmenu tak, aby byly jednotlivé prvky v závislosti na aktuálním pomˇeru stran opti- málnˇeumístˇeny.

3.1.2 Konfigurovatelné rozhraní Podstatnou ˇcástobrazovky v Ranˇezabíral ˇcernýpruh, ve kterém se zob- razovaly aktuální informace. Tento pruh jsem odstranil a nahradil ho polo- pr ˚uhlednýmiinformaˇcnímiukazateli, které si uživatel m ˚uženastavit v kon- figuraˇcnímsouboru: user_config.conf Informaˇcníukazatele se zobra- zují podle aktuálnˇezvoleného profilu, pro každý profil je tak možné nasta- vit specifickou sadu ukazatel ˚u. Pro jednotlivé profily lze také nastavit velikost a pozici jednotlivých ovládacích prvk ˚u.Uživatel tedy pˇrijízdˇena kole využije napˇríkladvlastní rozvržení ovládacích a informaˇcníchprvk ˚u.Pˇredjízdou autem pak pouze pˇrepneprofil a bude mít k dispozici opˇetjiné specifické nastavení.

21 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

3.1.3 Formát konfiguraˇcníhosouboru Pro naˇcítáníkonfiguraˇcníchsoubor ˚ua práci s nimi využívá modRana mo- dul ConfigObj [34]. Tento modul tak urˇcujesyntaxi, použitou v konfiguraˇc- ním souboru. Cokoliv, co následuje na ˇrádkuza #, je bráno jako komentáˇr.Pro odli- šení komentáˇr˚uod zakomentovaných voleb používám u všech komentáˇr˚u ##. K pˇriˇrazeníhodnoty do promˇennéslouží rovnítko, do promˇennélze pˇriˇraditi seznam ˇcárkouoddˇelenýchhodnot. Konfiguraˇcnísoubor má stro- movou strukturu, která je vyjádˇrenanázvem sekce v hranatých závorkách. Poˇcethranatých závorek znaˇcíúroveˇnzanoˇrení.Volby, které nejsou v žádné sekci, patˇrído nejvyšší úrovnˇe. Takto vypadá nejvyšší úroveˇnv hlavním konfiguraˇcnímsouboru, na- zvaném user_config.conf:

## ** Global config start ** ## enabled=True ## urcuje,ˇ zda bude konfigurace použita tile_folder=cache/images ## cesta k~adresáriˇ s~dílci tracklog_folder=tracklogs ## cesta k~adresáriˇ s~trasami ## ** Global config end ** ##

Konfiguraˇcnísoubor obsahuje také sekci specifickou pro N900:

## * specific overrides start * ## [n900] ## specifická cesta pro n900 na 27 GB oddíl tile_folder = /home/user/MyDocs/.modRana_tiles/ ## * Nokia N900 specific overrides end * ##

Další sekce v konfiguraˇcnímsouboru odpovídají jednotlivým profil ˚um. Ne všechny profily musí mít svou sekci. Jednotlivé sekce mohou obsahovat další podsekce, nebo mohou být prázdné. Podporovanými podsekcemi jsou:

∙ [[override_main_buttons]]

∙ [[OSD]]

Podsekce [[override_main_buttons]] slouží ke zmˇenˇepolohy a ve- likosti hlavních ovládacích prvk ˚u.Nastavování probíhá pomocí tˇechtopro- mˇenných:

22 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

∙ menu : nastavení pozice tlaˇcítkapro menu

∙ zoom_in : tlaˇcítkopro pˇriblížení

∙ zoom_out : tlaˇcítkupro oddálení

∙ fullscreen : tlaˇcítkorežimu celé obrazovky

∙ centre : centrovací tlaˇcítko

∙ scalebar : ukazatel aktuálního mˇeˇrítka

∙ icon_size : nastavení velikosti všech ikon, znaˇcípodíl nejkratší strany obrazovky, tzn. pˇrizadání 0.2 a rozlišení obrazovky 800*480 budou mít všechny ikony rozmˇer96*96 pixel ˚u Aby bylo zadávání polohy flexibilní a fungovalo pro širokou škálu r ˚uz- ných rozlišení a pomˇer˚ustran obrazovky, zvolil jsem pomˇerové souˇradnice s pˇriˇcítáním/odeˇcítáním.Pˇríklademm ˚užebýt nastavení pozice pro tlaˇcítko menu: menu=0.0,1.0,0,-1 První dvˇeˇcíslaudávají 푥 a 푦 pozici levého horního rohu tlaˇcítkav pomˇeru k délce stran. Na uvedeném pˇríkladujsou na tˇechtopozicích ˇcísla0.0 a 1.0, což se napˇríkladna N900, která disponuje obrazovkou o rozlišení 800*480, promítne na pixelové souˇradnice0,480. Pokud by bylo použity pouze tyto souˇradnice,tlaˇcítkoby se zobrazilo mimo viditelnou oblast. Císlaˇ na tˇretía ˇctvrtépozici udávají, kolik velikostí tlaˇcítekmá být ode- ˇctenoˇcipˇriˇctenok 푥 a 푦 souˇradnicím.Na pˇríkladu,který jsem uvedl, je na tˇretípozici ˇcíslo0 a na ˇctvrtépozici -1. 푋 souˇradnicetedy z ˚ustanebeze zmˇeny, ale od 푦 souˇradnicebude odeˇctenavelikost jednoho tlaˇcítka,takže 푦 = 480 − 96. Výsledné souˇradnicejsou tedy 0,384 a tlaˇcítkodíky tomu bude zobrazeno v levém dolním rohu, nezávisle na aktuálním rozlišení ob- razovky. Tento zp ˚usobudávání pozice tlaˇcítektaké umožˇnuje snadné seskupo- vání tlaˇcítekvedle sebe. Viz pozice tlaˇcítkapro pˇriblížení: zoom_in=0.0,1.0,0,-2 Tlaˇcítkopro pˇriblíženíodeˇcítádvˇevelikosti tlaˇcítkaod 푦 souˇradnicea bude tedy zobrazeno nad tlaˇcítkempro menu. Podsekce [[OSD]] slouží k aktivaci a nastavení pozice informaˇcních ukazatel ˚u.ModRana zobrazuje pouze ukazatele, které jsou nastavené v kon- figuraˇcnímsouboru pro aktuálnˇezvolený profil. Každý ukazatel tvoˇrídalší podsekci s množinou promˇenných,které urˇcujípozici a vlastnosti ukaza- tele. Podporovány jsou následující ukazatele:

23 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

∙ [[[speed]]] nastavuje ukazatel aktuální rychlosti; lze nastavit po- zici, velikost písma a zarovnání

∙ [[[statistics]]] slouží k zobrazení pr ˚umˇernéa maximální rych- losti; lze nastavit pozici, velikost písma a zarovnání

∙ [[[coordinates]]] zobrazuje aktuální geografické souˇradnice; lze nastavit pozici, velikost písma a zarovnání

∙ [[[time]]] ukazuje aktuální ˇcasve formátu h:m; lze nastavit po- zici, velikost písma a zarovnání

∙ [[[route_profile]]] tento ukazatel zobrazuje výsek z výško- vého profilu trasy s indikátorem aktuální pozice; je možné nastavit nejen pozici, ale také výšku, šíˇrkua délku zobrazeného úseku v ki- lometrech

∙ [[[route_remaining_length]]] patˇríukazateli, který zobra- zuje zbývající vzdálenost vzhledem k aktuální pozici na trase; lze nastavit pozici, velikost písma a zarovnání

∙ [[[time_to_start]]] a [[[time_to_destination]]] jsou nastavení pro ukazatele odhadovaného zbývajícího ˇcasudo startu ˇcicíle; je možné nastavit jejich pozici, zarovnání a velikost písma

Obrázek 3.1 ukazuje pˇríkladkonfigurace uživatelského rozhraní. K jed- notlivým ovládacím prvk ˚umjsou na tomto obrázku pˇriˇrazenaodpovídající nastavení z konfiguraˇcníhosouboru.

3.1.4 Nový ukazatel pozice Rana obsahovala ukazatel pozice v podobˇevelké žluté šipky, která zakrý- vala znaˇcnouˇcástd ˚uležitéoblasti mapy v okolí aktuální pozice. Tento uka- zatel také nijak neindikoval absenci pohybu, pˇrikteré nemá smysl ukazovat smˇer, jelikož GPS neumí urˇcitpˇresnýsmˇerpˇrinízké ˇcinulové rychlosti. Když jsem navrhoval nový ukazatel pozice, inspiroval jsem se ukazate- lem polohy v TangoGPS. Nového ukazatele pozice tvoˇríkruh, jehož stˇredleží na aktuálních sou- ˇradnicích.Ve stˇredukruhu se nachází malý bod, který urˇcujepozici pˇri rychlosti menší než 1 푚푠2. Pokud je rychlost vyšší, lze urˇcitsmˇerpohybu. Ze stˇredukruhu v tomto pˇrípadˇevychází pˇrímka,která jej mírnˇepˇresahuje, a urˇcujetak aktuální smˇerpohybu.

24 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

[[[speed]]] px=0.90 [[[statistics]]] py=0.25 scalebar=0.0,0.0,1.2,0.2 px=0.15 font_size=50 py=0.05 align=right font_size=20 align=left fullscreen=0.0,0.0,0,0 centre=1.0,0.0,-1,0

[[[route_profile]]] px=0.67 py=0.4 pw=0.3 zoom_in=0.0,1.0,0,-2 ph=0.2 segment_length=5

menu=0.0,1,0,-1 zoom_out=0.0,1.0,1,-1

Obrázek 3.1: Ukázka konfigurace prvk ˚urozhraní

Tento typ ukazatele je dostateˇcnˇevelký na to, aby byl na mapˇedobˇrevi- ditelný. Zároveˇndíky nezakrytému okolí svého stˇredunezakrývá kritickou ˇcástmapy v bezprostˇredníblízkosti aktuální pozice.

3.1.5 Vylepšený systém zobrazování dlaždic P ˚uvodnímetoda vykreslování mapy zp ˚usobovalaneostrý vzhled mapo- vých dílc ˚ua také to, že mapové dílce na sebe nenavazovaly. Oba zmínˇené problémy mˇelana svˇedomíodchylka, která vznikala zaokrouhlováním pˇri pˇrevodusouˇradnicviditelných mapových dílc ˚uz ˇcísels plovoucí desetin- nou ˇcárkouna celá ˇcísla. Dílce tedy byly vykreslovány v menší než plné velikosti, proto dochá- zelo k jejich zmenšování, které zp ˚usobovalojejich neostrý vzhled. Menší velikost dílc ˚utaké zp ˚usobovalavznik mezer, které narušovaly celistvost mapy. Aby k tomuto problému nedocházelo, zmˇeniljsem systém výpoˇctusou- ˇradnic.V novém systému se na celá ˇcíslapˇrevádˇejípouze souˇradnicelevé horní viditelné dlaždice a zároveˇndochází ke zjištˇenípoˇctuviditelných dlaždic. Souˇradniceviditelných dlaždic lze pak získat jednoduchým in- krementováním koordinát levé horní dlaždice v rozsahu poˇctuviditelných dlaždic.

25 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Výsledkem této úpravy je souvislá a nezkreslená mapa a menší poˇcet volání externích funkcí bˇehemvykreslování dlaždic.

3.2 Vyhledávání cesty

Vyhledávání cesty v modRanˇeprobíhá prostˇrednictvímonline služby, kon- krétnˇese jedná o službu Google Directions. Pro pˇrístupk této službˇejsem použil modul googlemaps [35], stejný modul jsem použil také pro vyhledá- vání POI pomocí Google Local Search, které je popsáno v sekci 3.7.2.

3.2.1 Režimy vyhledávání trasy Pokud nejsou použity další parametry, pˇredpokládáslužba Google Directi- ons jízdu autem a bere v úvahu také zpoplatnˇenéúseky a dálnice. Pomocí parametru dirflg [36] lze nastavit další režimy:

∙ režim pro vyhýbání se dálnicím

∙ režim pro vyhýbání se zpoplatnˇenýmúsek ˚um

∙ režim pro vyhledávání cesty pˇešky

∙ režim pro vyhledávání cesty veˇrejnoudopravou

∙ režim pro vyhledávání cesty na kole

Výše zmínˇenýmodul googlemaps zadávání tohoto parametru nepodporo- val, musel jsem jej proto o tuto funkci rozšíˇrit. Typ dopravního prostˇredkupro vyhledávání je v modRanˇenastavován automaticky podle aktuálního profilu. Režimy pro vyhýbání se dálnicím a zpoplatnˇenýmúsek ˚umlze aktivovat v menu options v submenu Online routing.

3.2.2 Formát startu a cíle Služba Google Directions pˇrijímástart a cíl jako dvojici ˇretˇezc˚u.Každý ˇretˇe- zec m ˚užeobsahovat bud’to adresu nebo ˇcárkouoddˇelenégeografické sou- ˇradnice.Zp ˚usobyzadávání je možné kombinovat, tzn. napˇríkladnastavit start na adresu a cíl na souˇradnice.

26 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

3.2.3 Zadávání startu a cíle v modRanˇe V modRanˇejsem implementoval nˇekolir ˚uznýchzp ˚usob˚uzadávání startu a cíle. Nejjednodušší metoda spoˇcíváv manuálním zadání startu a cíle pˇrímo na mapˇe.Po aktivaci této funkce má uživatel k dispozici pr ˚uhlednémenu, zobrazené pˇrímov hlavní obrazovce s mapou. Zmínˇenémenu umožˇnuje zadat start, cíl a provést hledání cesty. Start je indikován ˇcervenýmterˇcí- kem, cíl terˇcíkemzeleným. Po aktivaci tlaˇcítka route je nalezena a vykres- lena výsledná trasa. Variantou tohoto zp ˚usobuje zadávání startu a cíle, kdy jeden z tˇechto bod ˚upˇredstavujeaktuální pozice uživatele. Je použito stejné menu jako pro manuální zadávání startu a cíle, avšak s tím rozdílem, že lze zadat vždy pouze start nebo cíl. Jako druhý bod je použita aktuální pozice uživatele. ModRana podporuje pˇrímézadání jak startu, tak cíle pomocí klávesnice v menu Address to Address. Vzhledem k tomu, že pˇrivyhledávání cesty není nutné rozlišovat mezi adresou a souˇradnicemi,m ˚užeuživatel do ad- resního pole napsat geografické koordináty. Menu rovnˇežumožˇnujepˇrímé vložení souˇradnicaktuální pozice. Další zp ˚usobhledání cesty v modRanˇepˇredstavujehledání cesty z ak- tuální pozice k vybranému POI. Postaˇcí,když uživatel vybere POI ze se- znamu, okamžitˇeje pak automaticky vyhledána a zobrazena nalezená cesta.

3.2.4 Informace dostupné o nalezené cestˇe Informace k aktuálnˇenalezené cestˇejsou v menu pro hledání cesty pod položkou Current route. K dispozici jsou odhadované adresy startu a cíle, získané pomocí reverzního geokódování. Menu zobrazuje dále délku trasy, odhadovaný ˇcaspotˇrebnýpro absol- vování cesty a zemˇepisnésouˇradnicestartu a cíle.

3.2.5 Ukládání nalezených cest mezi trasy ModRana podporuje ukládání nalezených cest. Cesty jsou ukládány do sou- bor ˚uve formátu GPX [7] a souˇcasnˇejsou naˇctenydo seznamu tras. Z na- lezených cest se uložením stanou normální trasy, a proto je možné použít funkci pro doplnˇenínadmoˇrskévýšky, popsanou v sekci 3.3.2, nebo podél nich hromadnˇestáhnout mapové dílce. Souvislému hromadnému staho- vání dílc ˚upodél trasy se vˇenujesekce 3.4.2.

27 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Obrázek 3.2: Ukázka výškového profilu trasy

3.3 Práce s trasami

Do modRany jsem implementoval ˇradufunkcí pro práci s uloženými tra- sami.

3.3.1 Podpora tras ve formátu GPX ModRana podporuje naˇcítánítras ve formátu GPX. Pro práci s tímto for- mátem založeným na XML je používán modul Upoints [33], který dokáže formát GPX jak naˇcítat,tak opˇetexportovat, a to vˇcetnˇepˇrípadnýchzmˇen, které byly na naˇctenétrase provedeny.

3.3.2 Výškový profil Pokud jsou k trase dostupné informace a nadmoˇrskévýšce jednotlivých bod ˚u,je zobrazen výškový profil. Pokud data o výšce k dispozici nejsou, lze je doplnit pomocí online služby Geonames [37]. Protože jsou body v záznamu trasy rozdˇelenyˇcastovelmi nerovnomˇernˇe a protože by tato skuteˇcnostmohla zp ˚usobitznaˇcnézkreslení grafu výško- vého profilu, je nutné vypoˇcítatdata o nadmoˇrskévýšce pro pravidelné intervaly.

28 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Pˇrivýpoˇctujsem tedy postupoval tak, že jsem nejdˇrívespoˇcítaldélku trasy, a pak jsem urˇcil2001 bod ˚uv pravidelných rozestupech, které se rov- 1 nají 200 celkové vzdálenosti. Kromˇeprvního a posledního bodu, se každý z tˇechtonových pravidelnˇeumístˇenýchbod ˚unachází mezi dvˇemabody trasy se známou nadmoˇrskouvýškou. Pomocí jednoduchého trigonomet- rického výpoˇctulze pak odhadnout nadmoˇrskouvýšku pro každý pravi- delnˇeumístˇenýbod. Výsledkem výpoˇctuje 200 dvojic údaj ˚uo nadmoˇrskévýšce a vzdále- nosti od zaˇcátkutrasy. Tato data se využijí pro vykreslení rovnomˇerného grafu, kde osa x reprezentuje vzdálenost a osa y nadmoˇrskouvýšku trasy.

3.3.3 Zobrazení aktuálního výškového profilu Výškový profil lze zobrazit také jako pr ˚uhlednýinformaˇcníukazatel na obrazovce s mapou. Tento ukazatel ukazuje aktuální úsek výškového pro- filu s vyznaˇcenoumomentální polohou. Délku zobrazeného úseku, velikost a pozici lze nastavit v konfiguraˇcnímsouboru.

3.3.4 Optimalizované vykreslování tras Dlouhé trasy se mohou skládat až z nˇekolikaset nebo i tisíc bod ˚urepre- zentovaných souˇradnicemi.Pˇrivykreslování trasy potˇrebapˇrevéstgeogra- fické koordináty pro všechny body na obrazovkové souˇradnice.Poté se po- stupnˇevšechny body všechny body propojí ˇcarou a ta se na obrazovce vy- kreslí pomocí vektorové knihovny cairo. Pˇritestování jsem zjistil, že nejnároˇcnˇejšíoperací je právˇepˇrevodsou- ˇradnic,režie vykreslování je oproti tomu minimální. Souˇradnicevšech bod ˚u je nutné pˇrepoˇcítatpˇrikaždé zmˇenˇepohledu ˇcizoomu, což znaˇcnˇezvyšuje nároky na výpoˇcetníprostˇredky. Castoˇ jsou pˇritomzbyteˇcnˇevypoˇcítávány obrazovkové souˇradnicebod ˚u,které jsou mimo viditelnou oblast. Nároˇcnostvykreslování tras jsem se rozhodl snížit tak, že budou pˇre- vádˇenysouˇradnicpouze u viditelných bod ˚u.Rozdˇeliljsem tedy trasy na shluky bod ˚u,které jsou geograficky blízko sebe. Pro každý shluk jsem pak nechal vypoˇcítatpolomˇera geografické koordináty stˇreduopsané kružnice. Pro rychlé zjištˇení,zda jsou body ve shluku viditelné, staˇcípouze vy- poˇcítatvzdálenost mezi stˇredemkružnice opsané kolem shluku a stˇredem obrazovky. Pokud je vzdálenost vˇetšínež souˇcetpolomˇeru kružnice kolem shluku a kružnice opsané kolem viditelné ˇcástimapy, není shluk vidˇet.Po- kud je tato vzdálenost menší, je pravdˇepodobné,že je shluk ve viditelné

1. 200 vyšlo jako nejoptimálnˇejšíhodnota po testování hodnot v rozsahu 50 až 500

29 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Obrázek 3.3: Ukázka nˇekolikakružnic opsaných kolem shluk ˚u oblasti. Souˇradnicebod ˚uv takovém shluku budou pˇrepoˇctenya shluk vy- kreslen jako úsek trasy. Ve výsledku tak napˇríkladpro trasu ze Znojma do Brna, ˇcítající364 bod ˚u,staˇcívypoˇcítatvzdálenost k 12 bod ˚umuprostˇredjednotlivých shluk ˚u a pˇrevéstsouˇradnicebod ˚uve viditelných shlucích. Pˇribˇežnéúrovni pˇriblí- žení jsou ve vˇetšinˇepˇrípad˚uvidˇetjeden až dva shluky, což ˇrádovˇesnižuje poˇcetpˇrepoˇcítanýchsouˇradnicz nˇekolikaset na nˇekolikdesítek.

3.3.5 Správce tras Menu správce tras zobrazuje naˇctenétrasy. Pro každou z nich se po kliknutí zobrazí detailní menu, které podává informace o trase, jako napˇríkladvýš- kový profil, a které také zpˇrístupˇnujefunkce pro práci s konkrétní trasou, napˇríkladfunkci pro doplnˇenínadmoˇrskévýšky.

3.4 Dávkové stahování mapových dílc ˚u

Již p ˚uvodnínavigaˇcnísystém Rana [16] zvládal stahování aktuálnˇezob- razených mapových dlaždic. Zejména bˇehemcestování však ˇcastonebývá k dispozici pˇripojeník internetu, a proto jsem implementoval funkci, která umožˇnujestáhnout dlaždice pro vybranou oblast ˇcitrasu už pˇredcestou.

3.4.1 Režimy dávkového stahování Dávkové stahování dílc ˚uumožˇnujestáhnout najednou velké množství dlaž- dic podle zadaných parametr ˚u.Lze zvolit cílovou oblast, polomˇertéto ob-

30 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA lasti a rozsah úrovní pˇriblížení.Zadání tˇechtoparametr ˚ufunguje na prin- cipu pr ˚uvodce,který uživatele provede pˇreszadání všech nutných para- metr ˚uaž na hlavní obrazovku, kde lze spustit stahování nalezených dílc ˚u. Cílovou oblastí m ˚užebýt oblast kolem aktuálních GPS souˇradnic,oblast kolem stˇreduaktuálního pohledu na mapu nebo oblast podél vybrané trasy. Polomˇercílové oblasti lze zadat v rozmezí 5 až 160 km kolem stˇredo- vého bodu. Pokud jsou dílce stahovány podél trasy, platí tento polomˇerpro všechny její body. Zadání rozsahu pro úrovnˇepˇriblíženíse odvíjí od aktuálnˇenastavené úrovnˇepˇriblížení.Pokud má napˇríkladuživatel na mapˇenastavenou úro- veˇnpˇriblíženi14 a v pr ˚uvodcinejdˇrívezvolí „+2“ pro vyšší pˇriblíženía poté „+3“ pro nižší pˇriblížení,budou staženy mapové dílce v rozmezí úrovní 16 až 11. Stahování mapových dílc ˚use sestává z nˇekolikaetap. Nejdˇrívealgo- ritmus zjistí souˇradnicedílce, na kterém se nachází zvolený výchozí bod. Potom jsou zjištˇenysouˇradnicevšech dlaždic ve zvoleném polomˇeru ko- lem tohoto dílce. Vzhledem k tomu, že souˇradnicesousedních dílc ˚ulze zís- kat prostým inkrementováním nebo dekrementováním x nebo y souˇradnic, jsou koordináty dalších dlaždic získávány postupnˇepo spirále kolem cen- trální dlaždice. Tato spirála se vždy po dokonˇceníobˇehurozšiˇruje,dokud není dosaženo požadovaného polomˇeru. Výsledkem jsou souˇradnicedílc ˚u ve ˇctvercové oblasti, kde je vzdálenost od stˇredudo bodu ležícího v polo- vinˇestrany ˇctverce rovna zadanému polomˇeru.

3.4.2 Souvislé pokrytí nespojité trasy V pˇrípadˇezískávání souˇradnicdílc ˚upro trasu, je tento postup aplikován na všechny body trasy. Nalezené koordináty se bˇehemvýpoˇctuukládají do setu, takže body, jejichž oblasti pokrytí se pˇrekrývají,negenerují duplicitní souˇradnice. Nˇekteréinternetové navigaˇcníslužby ˇcastogenerují trasy s dlouhými rozestupy mezi body, hlavnˇev pˇrípadˇerovných úsek ˚u.Proto je tˇrebamezi body, které jsou od sebe vzdáleny víc než je dvojnásobek zvoleného polo- mˇeru, vložit body další, jinak by vznikaly oblasti nepokryté staženými ma- povými dílci. Vkládání tˇechtodoˇcasnýchbod ˚uprobíhá rekurzivnˇemeto- dou p ˚ulení interval ˚u,dokud není dosaženo rozestupu menšího než je dvoj- násobek polomˇeru. Doˇcasnébody slouží pouze pro výpoˇcetnepˇrerušeného pokrytí trasy a nepromítají se zpˇetnˇedo zdrojové trasy.

31 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

3.4.3 Doplnˇenídlaždic z dalších úrovní pˇriblížení Tento zp ˚usobzjišt’ování koordinát ˚udlaždic probíhá vždy jen pro jednu úroveˇnpˇriblíženíze zadaného rozsahu. Takto nalezené dlaždice slouží jako vstup pro výpoˇcetdlaždic na ostatních úrovních pˇriblížení. Doplnˇenídlaždic z dalších úrovní využívá jak dˇeleníjednotlivých dlaž- dic na menší dlaždice z nižší úrovnˇe,tak pˇrepoˇcetsouˇradnicza úˇcelem zjištˇeníkoordinát dlaždic na vyšší úrovni pˇriblížení. V poslední fázi jsou pak ze seznamu dlaždic, urˇcenýchke stažení, od- stranˇenyty, které již existují v adresáˇrovéstruktuˇres dlaždicemi. Test toho, zda je už dlaždice stažená, je jednoduchý, jelikož cesta k jednotlivým ulo- ženým dlaždicím obsahuje jejich souˇradnice.Tato funkce je ve výchozím nastavení deaktivována, protože její pr ˚ubˇehpˇrivˇetšímpoˇctudlaždic kv ˚uli mnoha pˇrístup˚umk souborovému systému trvá pˇrílišdlouho. Po zjištˇeníkoordinát všech dlaždic podle zadaných parametr ˚udojde k zobrazení menu pro dávkové stahování dlaždic. Menu umožˇnujezmˇenu zadaných parametr ˚u 2, zjištˇenícelkové velikosti dlaždic urˇcenýchke sta- žení, spuštˇenístahování dlaždic nebo návrat do hlavního menu.

3.4.4 Stahování dlaždic a metainformací Pro zjišt’ování velikosti dlaždic i pro jejich stahování využívá modRana vlákna. Uživatel tedy m ˚užeprovádˇetjiné ˇcinnosti,zatímco tyto úlohy pro- bíhají na pozadí. U obou tˇechtoúloh se pr ˚ubˇežnˇezobrazuje, kolik dlaždic z celkového poˇctujiž bylo zpracováno. Jsou také pˇreskoˇcenyjiž uložené dílce. Jakmile je stahování dokonˇceno,zobrazí se s pomocí notifikaˇcního modulu na obrazovce upozornˇení.

3.5 Inovovaný systém ukládání dílc ˚u

V Ranˇebyly všechny dílce ukládány jako soubory do centrálního adresáˇre a jednotlivé soubory byly pojmenovány podle vrstvy a souˇradniculože- ného dílce. Tento zp ˚usobukládání dílc ˚uje sice jednoduchý, pˇrinášívšak celou ˇradunevýhod. Práce s adresáˇrem,který m ˚užeobsahovat ˇrádovˇede- setitisíce soubor ˚u,je složitá a ˇcasovˇenároˇcná.Uložení všech dílc ˚uv jednom adresáˇritaké znemožˇnujesdílení mapových dílc ˚us TangoGPS nebo podob- ným softwarem, který dílce ukládá do adresáˇrovéstruktury. Kompatibilita dílc ˚us TangoGPS byla nejˇcastˇejšíotázkou, která mi byla kladena na konfe- renci Openmobility, kde jsem modRanu pˇredstavil.

2. po zmˇenˇeparametr ˚udojde k pˇrepoˇctusouˇradnicdílc ˚u

32 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Upravil jsem tedy systém pro ukládání a naˇcítánídílc ˚upo vzoru Tan- goGPS. Tento zp ˚usobukládání dílc ˚uspoˇcíváve vytvoˇrenícesty k obrázku dílce podle tohoto vzoru: vrstva/zoom/x/y.pripona Dílec z url http://b.tile.openstreetmap.org/17/71579/44896.png tak bude uložen do: OSM/17/71579/44896.png. Domnívám se, že zp ˚usobukládání dílc ˚uv TangoGPS byl pˇrevzatz Open- StreetMap. Po této úpravˇem ˚užemodRana sdílet spoleˇcnýadresáˇrpro dílce s Tan- goGPS a dalším softwarem, používajícím stejnou adresáˇrovoustrukturu. Dílce stažené pomocí pokroˇciléhodávkového stahování v modRanˇelze tedy napˇríkladzobrazit jako mapu v TangoGPS.

3.6 Pˇrekrytímapových vrstev

K implementování této funkce mne inspiroval v sekci 1.3.4 popsaný navi- gaˇcnísystém OmGPS [21]. Využil jsem toho, že grafická knihovna Cairo [20], používaná pro vykreslování mapy, podporuje nastavení pr ˚uhlednostipro vykreslovaná obrazová data. Pˇrikaždém pˇrekreslení mapy proto staˇcípouze vykreslit pˇressebe místo jedné dlaždice dlaždice dvˇes použitím pr ˚uhlednosti.První dlaždice je pˇri- tom vykreslena bez pr ˚uhlednostia tvoˇrípozadí, druhá dlaždice již má na- stavenou pr ˚uhlednosta tvoˇrítak pˇrekrývajícívrstvu. Pˇríkladempoužití této funkce m ˚užebýt pˇrekrytívrstvy složené ze sate- litních snímk ˚u,která neobsahuje žádné popisky, vrstvou obsahující klasic- kou mapu. Získáme tak kombinovanou vrstvu, která ukazuje jak skuteˇcný pohled z výšky, tak názvy ulic a vyznaˇcenécesty. Nejlepších výsledk ˚ulze dosáhnout pˇripoužití pˇrekrývacívrstvy, která obsahuje pr ˚uhlednéoblasti. Pˇrekrývánímapových vrstev je v základním nastavení deaktivováno a lze jej aktivovat z mapového submenu v sekci s nastaveními. Jako pˇrední i zadní vrstvu je možné zvolit libovolnou podporovanou vrstvu. V tomto menu lze také nastavit úroveˇnpr ˚uhlednostipˇrekrývajícívrstvy v krocích od 25 do 100%3. Ukázka pˇrekrytímapových vrstev je na obrázku 3.4.

3. 100% slouží pro použití s pr ˚uhlednouvrstvou

33 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Obrázek 3.4: Ukázka pˇrekrytísatelitní vrstvy pr ˚uhlednouvrstvou se sil- niˇcnísítí a popiskami

3.7 Integrace internetových služeb

Existuje velké množství internetových služeb poskytujících geografické a na- vigaˇcníinformace. Umožˇnujínapˇríkladzjištˇenínadmoˇrskévýšku vybra- ných souˇradnic,nalezení cesty mezi dvˇemabody nebo zajímavých míst blízko aktuální pozice.

3.7.1 Doplnˇenívýškových dat k trase Funkce pro doplˇnovánívýškových dat využívá služby Geonames [37], tato služba pro zadané souˇradnicevrátí nadmoˇrskouvýšku. Použil jsem kon- krétnˇeAPI, které umožˇnujezjistit nadmoˇrskouvýšku až 20 souˇradnicna- ráz. Tato metoda je výraznˇerychlejší než dotaz na každý bod zvlášt’. Modul Upoints [33], používaný pro práci s trasami ve formátu GPX podporuje export naˇctenétrasy zpˇetdo GPX. Doplnˇenínadmoˇrskévýšky tedy staˇcíprovést pouze jednorázovˇea výsledný GPX soubor s výškovými daty je pak možné použít i v jiných navigaˇcníchsystémech.

3.7.2 Hledání POI pomocí Google Local Search Služba Google Local Search [32] umožˇnujevyhledávání POI v závislosti na geografické poloze. V kombinaci s použitím aktuální informace o po- loze získané z GPS lze vyhledat nejbližší body zájmu. Dotaz na na nejbližší restaurace kolem souˇradnicnacházejících se v oblasti Brna pak napˇríklad vypadá takto:

34 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Restaurant near 49.200000,16.616667.

ModRana využívá pro pokládání tˇechtodotaz ˚uprostˇrednictvímAPI Goo- glu modul GoogleMaps [35]. Tento modul pˇrevedevýsledek dotazu, JSON1 objekt, na standardní datový typ slovník jazyka Python. Pokud budou nale- zeny nˇejakébody odpovídající dotazu, bude tento tento slovník obsahovat informace o nalezených POI. Výsledek dotazu neobsahuje jen název a sou- ˇradnice,vˇetšinoujsou k dispozici také adresa a jedno ˇcivíce telefonních ˇcísel. Výsledky dotazu jsou zobrazeny v listovatelném seznamu v podobˇená- zvu a vzdálenosti od aktuální pozice. Maximální poˇcetvýsledk ˚ulze nastavit v rozmezí 8 až 32, dotazy s men- ším maximálním poˇctemvýsledk ˚uvrací Google výraznˇerychleji. Výbˇer jednoho z výsledk ˚uzp ˚usobípˇrechoddo detailního menu pro tento výsle- dek. Toto menu pak zobrazuje dodateˇcnéinformace o výsledku (adresa, telefonní ˇcísla,souˇradnice)a umožˇnujeuložení výsledku do seznamu POI nebo zvýraznˇenívýsledku na mapˇe. Pozice každého výsledku aktuálního vyhledávání je oznaˇcena ˇcerve- ným bodem s volitelnou popiskou, zmáˇcknutípopisky pak provede pˇre- chod do detailního menu výsledku, ke kterému popiska patˇrila.Zvýraz- nˇenívýsledku se projeví modrým kruhem kolem bodu, který k nˇemupatˇrí, a žlutým textem na popisce. Výsledky nového vyhledávání nahradí na mapˇe výsledky vyhledávání pˇredešlého, výsledky lze také z mapy odstranit po- mocí tlaˇcítkav hlavním vyhledávacím menu.

3.8 N900

Linuxový mobilní telefon N900 od spoleˇcnostiNokia jsem pro modRanu zvolil jako hlavní cílovou platformu, protože se podle mého názoru v sou- ˇcasnostijedná o nejperspektivnˇejšíkombinaci zaˇrízenía operaˇcníhosys- tému. PˇrestožeN900 obsahuje do znaˇcnémíry standardní linuxovou distri- buci, bylo nutné provést urˇcitéúpravy specifické pro toto zaˇrízení.Tyto úpravy byly provádˇenytak, aby se pˇrizadání ˇretˇezce n900 jako argumentu pˇrispuštˇenísamoˇcinnˇeaktivovaly, aby byla zachována multiplatformnost a flexibilita modRany.

1. JavaScript Object Notation

35 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

3.8.1 Instalaˇcníbalíˇcek Operaˇcnísystém Maemo 5 (kódové oznaˇceníFreemantle) na N900 využívá balíˇckovýsystém APT, pˇrevzatýz Debianu. Pro modRanu jsem tedy vytvoˇrilinstalaˇcníbalíˇcekvyhovující specific- kým vlastnostem N900. Spouštˇecískript /usr/bin/modrana spouští modRanu pomocí Pythonu 2.5, protože na N900 je pod bˇežnýmaliasem "python"pouze verze 2.3, která je pro provoz modRany již pˇrílišzastaralá. Spouštˇecískript také nastavuje první argument pˇrispuštˇenína ˇretˇezec n900, takže modRana použije specifický režim4 urˇcenýpro N900. Struktura balíˇckurovnˇežzajišt’uje instalaci do adresáˇre /opt v souladu s doporuˇcenímpro programy s velikostí nad 500 KB. Souˇcástíbalíˇckuje také skript postrm, podporující jak bˇežnéodstranˇeníprogramu se zachová- ním konfiguraˇcníchsoubor ˚u,tak kompletní odstranˇenípˇripoužití parame- tru –purge.

3.8.2 Podpora pro Location API N900 nepoužívá pro pˇrístupk informacím o poloze gpsd [38], jako napˇrí- klad Neo FreeRunner, ale vlastní knihovnu liblocation [24], která poskytuje Location API. Rana využívala pouze služeb GPS démona, podporu pro toto API bylo tedy do modRany nutné doplnit.

3.8.3 Alternativní adresáˇrpro ukládání mapových dílc ˚u Úložný prostor je na N900 rozdˇelendo nˇekolikaoddíl ˚u[39]: ∙ koˇrenovýadresáˇr / je na oddílu s pˇribližnˇe100 MB volného místa ∙ adresáˇr /opt, doporuˇcovanýpro instalaci aplikací vˇetšíchnež 500 KB, je na EXT oddílu s cca 1 GB volného místa ∙ /home/user/MyDocs je na VFAT oddílu s cca 27 GB volného místa Celková velikost stažených mapových dílc ˚upro velké oblasti se m ˚uže pohybovat v ˇrádugigabyt ˚u.Do konfiguraˇcníhosouboru jsem tedy pˇridal novou sekci, jejíž obsah se naˇctepouze tehdy, když je modRana spuštˇena s argumentem n9005. Právˇev této sekci je cesta k adresáˇris dílci nastavena na hodnotu: /home/user/MyDocs/modRana_tiles

4. použití Location API místo GPS démona, naˇctenísekce konfiguraˇcníhosouboru s na- staveními pro N900 místo obecné sekce 5. zadání tohoto parametru zajišt’uje instalaˇcníbalíˇcekpro N900

36 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Tuto hodnotu lze samozˇrejmˇelibovolnˇemˇenita uložit napˇríkladadresáˇr s dílci na pamˇet’ovou kartu. Použití samostatné sekce pro N900 v konfiguraˇcnímsouboru umožˇnuje distribuovat modRanu pro r ˚uznéplatformy s jediným konfiguraˇcnímsou- borem. V budoucnu takto lze ˇrešitspecifická nastavení pro další zaˇrízení.

3.9 Neo FreeRunner

Na popud úˇcastník˚ukonference Openmobility jsem pro Neo FreeRunner vytvoˇrilinstalaˇcní *.ipk balíˇcek.Protože Rana, na které je modRana za- ložená, byla p ˚uvodnˇeurˇcenápro FreeRunner, jsou všechny závislosti po- tˇrebnépro bˇehaplikace splnˇeny, a uživatelé na FreeRunneru proto nemusejí doinstalovávat další balíˇcky. Jako cílová distribuce byla zvolena SHR [2], je- likož se zˇrejmˇev souˇcasnédobˇejedná o nejrozšíˇrenˇejšídistribuci pro Free- Runner.

3.10 Rozšíˇrenápodpora mapových podklad ˚u

P ˚uvodníRana podporovala pouze mapové dílce projektu OpenStreetMap, OpenCycleMap a OpenAerialMap a vektorové podklady vytváˇrenépomocí PyRender.

3.10.1 Úpravy Z p ˚uvodníverze jsem odstranil podporu OpenAerialMap, jelikož tento pro- jekt zˇrejmˇejiž mapové dílce nenabízí. Podpora OpenCycleMap obsahovala staré nefungující url, po doplnˇeníaktuálního url ale zaˇcalaopˇetfungovat. Podpora vykreslování vektorových mapových podklad ˚uv Ranˇeje na na velice nízké úrovni, zobrazuje se zde pouze silniˇcnísít’ bez jakýchkoli popisek. Vykreslování je také velmi nestabilní a omezené na úzký rozsah úrovní pˇriblížení.Další vývoj projektu PyRender, využívaného pro vykres- lování vektorové mapy, již neprobíhá, a proto jsem se tedy rozhodl podporu vektorových mapových podklad ˚udeaktivovat.

3.10.2 Rozšíˇrenípodporovaných mapových podklad ˚u V souladu se zadáním jsem zkoumal možnost rozšíˇrenípodporovaných mapových podklad ˚uo další zdroje. Postupnˇese mi podaˇrilointegrovat ma- pové dílce z Google Maps, Virtual Earth a Yahoo Maps.

37 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

Potenciální uživatelé této funkcionality by si však mˇelibýt vˇedomitoho, že tyto služby ve svých podmínkách použití zakazují pˇrímýpˇrístupk ma- povým dílc ˚um.

3.10.3 Google Maps, Google Satelite Google Maps používají ˇctvercové mapové dílce ve formátu PNG. Adreso- vání tˇechtodílc ˚u[40] je stejné jako v OpenStreetMap. URL vypadá takto: http://mt1.google.com/vt/&x=281&y=175&z=9 Promˇenná 푥 znaˇcípoˇcetdílc ˚usmˇerem od levého okraje mapy, 푦 poˇcetdílc ˚u smˇerem od vrchního okraje mapy a 푧 znaˇcíúroveˇnpˇriblížení. Dílce Google Satelite jsou ve formátu JPEG a používají stejné adresování s touto URL: http://khm1.google.com/kh/v=54&x=281&y=175&z=9

3.10.4 Yahoo Maps, Satelite Mapové dílce Yahoo Maps jsou od úrovnˇepˇriblížení 12 ve formátu PNG, úrovnˇe11 a výš jsou ve formátu JPEG. URL vypadá takto: http://maps.yimg.com/hx/tl?&s=256&x=281&y=80&z=10&r=1 Použité souˇradnicese liší od OpenStreetMap a Google Maps v použitém 푦 a 푧 parametru a lze je vypoˇcítattakto: 푦푌 푎ℎ표표 = ((2푧) − 1) − 푦 푧푌 푎ℎ표표 = 푧 − 1 Zde jsou 푦 a 푧 souˇradnicepodle OSM/Google a 푦푌 푎ℎ표표 a 푧푌 푎ℎ표표 jsou jejich ekvivalenty pro použití v URL Yahoo Maps dílc ˚u. Yahoo Satelite používá pouze JPEG dílce, adresování je stejné jako u Ya- hoo Maps. URL je následující: http://maps.yimg.com/ae/ximg?&t=a&s=256&x=281&y=80&z=10&r= 1

3.10.5 Virtual Earth Mapové dílce Virtual Earth, známé též jako Bing Maps, jsou ve formátu PNG a používají URL v tomto tvaru: http://tiles.virtualearth.net/tiles/r120213223?g=452 Každý dílec má unikátní identifikátor, nazývaný Quadkey [41], který lze vypoˇcítatz bˇežných 푥, 푦, 푧 souˇradnic, používaných v pˇrípadˇeprojekt ˚u

38 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA

OpenStreetMap a Google Maps. Identifikátor v URL následuje za písmenem 푟, které znaˇcíklasické ma- pové podklady. Dílce se satelitními snímky jsou ve formátu JPG a používají stejné Quadkey adresování jako mapové dílce: http://tiles.virtualearth.net/tiles/a120213223?g=452 Jedinou odlišností v URL je písmeno 푎 pˇredQuadkey identifikátorem a pˇrí- pona jpg. Satelitní snímky obsahují vykreslenou silniˇcnísít’, která je však, alespoˇn na území Ceskéˇ republiky, v ˚uˇcisilnicím na snímcích mírnˇeposunutá.

3.11 Vývojové prostˇredí

Vývoj probíhal na 32 bitové verzi GNU/Linuxové distribuce Ubuntu. Jako vývojové prostˇredíjsem použil IDE Netbeans ve verzi 6.8 s pluginem pro jazyk Python. Stránky projektu fungují na systému TRAC, propojeném se SVN repozitáˇrem,který jsem využíval pro správˇekódu navigaˇcníhosys- tému modRana. Jak TRAC, tak SVN byly hostovány laboratoˇríNLP Fakulty informatiky MU v Brnˇe.

3.11.1 Neo FreeRunner Pro práci na projektu mi laboratoˇrNLP zap ˚ujˇcilaškolní Neo FreeRunner. Díky tomu, že jsem mˇelNeo FreeRunner k dispozici, mohl jsem testovat chování modRany na reálném linuxovém mobilním telefonu. Na Neu jsem otestoval rovnˇežnˇekoliknavigaˇcníchsystém ˚u,popsaných v první kapitole. Díky tomu, že jsem mˇelk dispozici mobilní linuxové zaˇrízenís GPS pˇrijímaˇcem,mohl jsem provádˇettesty navigaˇcníhosoftwaru a modRany pˇrímov terénu. Výsledkem tˇechtoterénních test ˚uje napˇríkladvylepšený algoritmus pro automatické stahování dílc ˚u,který vznikl jako reakce na mé zkušenosti se stahováním dílc ˚uprostˇrednictvímGPRS. Neo FreeRunner jsem také použil k poˇrízeníNMEA log ˚u,které jsem pozdˇejisouˇcasnˇes programem gpsfake [42] využíval k simulaci GPS pˇri vývoji modRany na PC.

3.11.2 Smart Q7 ModRanu jsem také testoval na svém sedmipalcovém tabletu Smart Q7 ˇcín- ské provenience, protože se v nˇekterýchparametrech podobá N900. Smart Q7 má stejné rozlišení obrazovky jako Nokia N900, tedy 800 na 480 pixel ˚uk,

39 3. IMPLEMENTACE NAVIGACNÍHOSYSTÉMUMODˇ RANA a jeho linuxový operaˇcnísystém je stejnˇejako Maemo 5 založen na Debianu, v tomto pˇrípadˇese konkrétnˇejedná o modifikované Ubuntu 9.10.

3.11.3 Maemo 5 SDK Pro testování funkˇcnostimodRany v operaˇcnímsystému Maemo 5 jsem používal prostˇredíScratchbox, obsažené v Maemo 5 SDK, ve kterém lze otestovat funkˇcnostaplikace s konfigurací operaˇcníhosystému, podobnou N900. Scratchbox mi také pomohl urˇcit,které konkrétní balíˇckyje nutné nastavit jako dependence pro balíˇceks modRanou. Ve Scratchboxu však nejsou simulovány všechno aspekty reálného hard- waru N900. Location API je sice napˇríkladk dispozici, nevrací však žádné informace o poloze. Pro testování podpory Location API v modRanˇejsem se tedy musel obrátit na uživatele skuteˇcnýchN900.

3.12 Konference Openmobility 2010

Pˇredbˇežnévýsledky své bakaláˇrsképráce jsem prezentoval na konferenci Openmobility [43] 2010, která se konala ve dnech 23. až 24. dubna ve Zlínˇe. V první ˇcástipˇrednáškyjsem provedl pˇrehledlinuxových navigaˇcníchsys- tém ˚ua v její druhé ˇcástijsem pˇredstavilprojekt modRana. Souˇcástíprezen- tace byla také ukázka fungování modRany na zaˇrízeníSmart Q7. V rámci Openmobility probíhala "FR rework party", kde se provádˇely aplikace buzz fix, bass fix a recamping fix pro Neo FreeRunner. Podle po- kyn ˚uvedoucího bakaláˇrsképráce jsem nechal provést aplikaci tˇechto fix ˚u na fakultní FreeRunner.

3.13 Uživatelé modRany

S testováním ModRany na platformˇeN900 mi pomáhal vedoucí mé baka- láˇrsképráce RNDr. Aleš Horák, Ph.D.. Spoleˇcnˇese nám podaˇriloovˇeˇrit funkˇcnostimplementace Location API, díky jeho upozornˇeníjsem docílil ostˇrejšíhozobrazení mapy. Na jeho podnˇet jsem rovnˇežvytvoˇrilzobrazo- vání profilu trasy. Po pˇredstavenímodRany na konferenci Openmobility mne zaˇcalikon- taktovat uživatelé s dotazy a pˇripomínkami. Díky jejich zpˇetnévazbˇejsem napˇríkladvylepšil práci s vlákny nebo implementoval nastavení cesty k ad- resáˇris trasami v konfiguraˇcnímsouboru. Ke komunikaci s nimi využívám projektové stránky, email a komunikaˇcníslužbu jabber.

40 Kapitola 4 Závˇer

Výsledkem mé práce na tomto projektu je flexibilní a multiplatformní navi- gaˇcnísystém modRana. Pˇrinávrhu tohoto systému jsem se inspiroval funk- cemi již existujících navigaˇcníchsystém ˚u,vlastními nápady i podnˇetyuži- vatel ˚u.

Výhled do budoucna

Pˇrinávrhu modRany jsem se setkal s mnoha funkcemi, které pˇrímone- spadaly do zadání bakaláˇrsképráce, pˇrestoby však mohly tento navigaˇcní systém výraznˇeobohatit. Tyto funkce bych v budoucnu rád doplnil.

4.1 Podpora více poskytovatel ˚uonline služeb

Google a Geonames nejsou jedinými poskytovateli online navigaˇcníchslu- žeb. Do modRany by se tedy v budoucnu hodilo doplnit další poskytova- telem, a to jak stávajících služeb, tak služeb nových. Noví poskytovatelé by pak mohli být alternativou stávajících posky- tovatel ˚u,nebo by bylo možné kombinovat a porovnávat výsledky z více zdroj ˚u.

4.2 Práce s offline katalogy POI

Mapová služba CloudMade poskytuje ke stažení pro jednotlivé zemˇe,vˇcetnˇe Ceskéˇ republiky, extrakty mapových podklad ˚u[14]. Ke stažení je k dispo- zici i obsáhlá databáze POI ve formátu GPX. Tyto POI sice neobsahují tolik informací jako POI z Google Local Search, offline katalog POI však m ˚užepˇrinedostupnosti pˇripojeník Internetu pˇrijít vhod. Navíc už modRana podporuje práci s formátem GPX, takže doplnit naˇcítáníPOI z tohoto formátu by nemˇelobýt složité.

41 4. ZÁVERˇ

4.3 Integrace funkcí specifických pro platformu

Cílem modRany je multiplatformnost, je však vhodné využívat specific- kých vlastností jednotlivých zaˇrízení.

4.3.1 Podpora klávesnice Ovládací rozhraní modRany je urˇcenék pohodlnému ovládání prsty, aniž by bylo nutné použít stylus. Nˇekterá mobilní zaˇrízenívšak nabízejí kromˇe dotykové obrazovky také hardwarová tlaˇcítka ˇcidokonce celou QWERTY klávesnici. ModRanu lze samozˇrejmˇeprovozovat i na linuxových PC, která klávesnici v drtivé vˇetšinˇepˇrípad˚umají. Do budoucna by tedy bylo vhodné doplnit podporu pro využití kláves- nice pro ovládání funkcí modRany, vˇcetnˇemožnosti uživatelského mapo- vání tlaˇcítekpro jednotlivé funkce.

4.3.2 Akcelerometr Nˇekterémobilní linuxové pˇrístroje, napˇríkladNeo FreeRunner ˇciNokia N900, obsahují integrovaný digitální akcelerometr, který mˇeˇrízrychlení, je- muž je zaˇrízenívystaveno, a který dokáže urˇcitorientaci zaˇrízenív gravi- taˇcnímpoli. Akcelerometr by modRana mohla využít napˇríkladpro automatickou rotaci zobrazení podle aktuální orientace zaˇrízení. K pˇrepnutí z režimu 푙푎푛푑푠푐푎푝푒 do režimu 푝표푟푡푟푎푖푡 a k otoˇcenízobrazení o 90∘ by staˇcilootoˇcit zaˇrízení"na výšku". Pokud by zaˇrízeníobsahovalo rovnˇeždigitální kompas, bylo by mapa být rotována podle aktuální orientace zaˇrízení.Spolu s mapovou vrstvou složenou ze satelitních snímk ˚uby tak bylo možné vytvoˇritvirtuální pohled z ptaˇcíperspektivy. Další možné využití dat z akcelerometru a kompasu tvoˇríjejich záznam a vyhodnocování. Výsledkem by pak byl napˇríkladgraf, porovnávající zrych- lení a cestovní rychlost v ˇcase,nebo srovnání dat o orientaci zaˇrízenís daty o smˇeru pohybu, která jsou dostupná z GPS.

4.3.3 Alternativní metody zjištˇenípolohy Pro zaˇrízení,která neobsahují GPS pˇrijímaˇcnebo jiný hardware pro urˇcení geografických souˇradnic,lze implementovat odhad polohy podle aktuální IP adresy.

42 4. ZÁVERˇ

4.4 Podpora dalších formát ˚upro záznamy trasy

ModRana využívá pro naˇcítánía tvorbu soubor ˚uGPX modul Upoints [33]. Tento modul podporuje také práci se soubory, které jsou ve formátu KML [6] a NMEA [44]. Formát KML používají nˇekterégeolokaˇcníslužby Google a "virtuální globus". Formát NMEA je pak výstupem nˇekterýchGPS jed- notek a lze jej získat i z gpsd. V budoucnu bych mohl implementovat podporu pro tyto a další for- máty.

43 Literatura

[1] Frederik Ramm and Jochen Topf. OpenStreetMap: Using and Enhan- cing the Free Map of the World. UIT Cambridge Ltd., 2010.

[2] SHR, [citováno 2. 5. 2010]. Dostupný z WWW: .

[3] CloudMade, OSM data pro zemˇe a regiony[online]., [cito- váno 6. 4. 2010]. Dostupný z WWW: .

[4] Rich Gibson and Schuyler Erle. Google Maps hacks. O’Reilly Media, Inc., 2006.

[5] Elliott D. Kaplan and Christopher J. Hegarty. Understanding GPS: principles and applications. Artech House, second edition, 2006.

[6] KML - popis standardu, [citováno 21. 4. 2010]. Dostupný z WWW: .

[7] GPX: the GPS Exchange Format, [citováno 29. 4. 2010]. Dostupný z WWW: .

[8] Wikiloc, internetová stránka se záznamy tras[online]., [cito- váno 6. 4. 2010]. Dostupný z WWW: .

[9] Bikemap, internetová stránka se záznamy cyklistických tras[online]., [citováno 6. 4. 2010]. Dostupný z WWW: .

[10] TangoGPS - Free user friendly map and gps for Linux[online]., [cito- váno 28. 4. 2010]. Dostupný z WWW: .

44 4. ZÁVERˇ

[11] OpenStreetMap, svobodné mapové podklady[online]., [cito- váno 6. 4. 2010]. Dostupný z WWW: .

[12] TangoGPS software of choice on Touch Book[online]., [cito- váno 29. 4. 2010]. Dostupný z WWW: .

[13] Navit - Car navigation system[online]., [citováno 25. 4. 2010]. Do- stupný z WWW: .

[14] CloadMade Downloads - extrakty dat pro Ceskouˇ Republiku, [cito- váno 22. 4. 2010]. Last maps update: 06 April 2010 Dostupný z WWW: .

[15] Navit’s wiki - podporované mapové podklady[online]., [cito- váno 25. 4. 2010]. Dostupný z WWW: .

[16] Rana[online]., [citováno 30. 3. 2010]. Last modified on 25 March 2009. Dostupný z WWW: .

[17] OpenCycleMap, svobodné mapové podklady pro cyklisty, založené na OpenStreetMap[online]., [citováno 8. 4. 2010]. Dostupný z WWW: .

[18] OpenAerialMap. A public view of the world[online]., [cito- váno 19. 5. 2010]. Last modified on 6 May 2010 Dostupný z WWW: .

[19] PyGTK: GTK+ for Python[online]., [citováno 30. 3. 2010]. Last modi- fied 2009-12-30. Dostupný z WWW: .

[20] Cairo, 2D grafická knihovna[online]., [citováno 30. 3. 2010]. Last edited Tue Mar 2 2010. Dostupný z WWW: .

45 4. ZÁVERˇ

[21] OmGPS, GPS navigaˇcní systém pro OpenMoko Neo FreeRun- ner[online]., [citováno 8. 4. 2010]. Dostupný z WWW: . [22] GTA02 GPS Hardware Assist Feature, [citováno 26. 4. 2010]. Last modified 29 November 2009. Dostupný z WWW: . [23] Maemo Mapper, GPS navigaˇcnísystém na platformˇeMaemo[online]., [citováno 17. 4. 2010]. Dostupný z WWW: . [24] Maemo 5: location API developer guide[online]., [citováno 20. 4. 2010]. Last modified 29 March 2010. Dostupný z WWW: . [25] Mcnavi[online]., [citováno 27. 4. 2010]. Dostupný z WWW: . [26] Simple Geocaching Tool for Linux (SGTL)[online]., [cito- váno 28. 4. 2010]. Dostupný z WWW: . [27] Advanced Geocaching Tool for Linux[online]., [citováno 28. 4. 2010]. Dostupný z WWW: . [28] Nokia N900 mobile computer[online]., [citováno 16. 5. 2010]. Last mo- dified on 25 March 2009. Dostupný z WWW: . [29] Python Programming Language – Official ., [cito- váno 27. 4. 2010]. Dostupný z WWW: . [30] PyPI: Python Package Index., [citováno 27. 4. 2010]. Dostupný z WWW: .

46 4. ZÁVERˇ

[31] OSM tags for routing/Access-Restrictions, [citováno 14. 5. 2010]. Last modified on: 13 April 2010. Dostupný z WWW: .

[32] Google Local Search, hledání informací v závislosti na loka- litˇe[online].,[citováno 1. 4. 2010]. Dostupný z WWW: .

[33] Upoints[online]., [citováno 31. 3. 2010]. Dostupný z WWW: .

[34] ConfigObj 4 Introduction and Reference, [citováno 10. 5. 2010]. Do- stupný z WWW: .

[35] GoogleMaps, popis popis modulu pro práci s mapovými informacemi spoleˇcnostiGoogle[online]., [citováno 1. 4. 2010]. Dostupný z WWW: .

[36] Google Map Parameters, [citováno 7. 5. 2010]. Dostupný z WWW: .

[37] Geonames, popis služby pro získání nadmoˇrské výšky souˇrad- nic[online]., [citováno 31. 3. 2010]. Dostupný z WWW: .

[38] gpsd - a GPS service daemon, [citováno 2. 5. 2010]. Last modified on: 27 Apr 2010. Dostupný z WWW: .

[39] Maemo@N900: instalace do Opt a MyDocs [online]., [cito- váno 20. 4. 2010]. Last modified 31 March 2010. Dostupný z WWW: .

[40] OpenStreetMap Wiki, popis souˇradnic dílc ˚u[online]., [cito- váno 18. 4. 2010]. Last modified on 15 April 2010. Dostupný z WWW:

47 4. ZÁVERˇ

.

[41] Bing Maps Tile System[online]., [citováno 18. 4. 2010]. Dostupný z WWW: .

[42] gpsfake(1) - Linux man page, [citováno 22. 4. 2010]. Dostupný z WWW: .

[43] Openmobility 2010 Konference o otevˇrenýchmobilních technologiích, [citováno 24. 4. 2010]. Dostupný z WWW: .

[44] NMEA data, [citováno 21. 4. 2010]. Dostupný z WWW: .

48 PˇrílohaA Snímky obrazovky

Popis rozhraní

tlačítko centrování je zároveň měřítko statistika rychlosti tlačítko pro přechod ukazatelem k aktuální pozici do režimu plné obrazovky

aktuální rychlost

profil trasy

tlačítko pro přiblížení mapy

ukazatel pozice mapa ukazuje směr jizdy tlačítko pro vstup do menu tlačítko pro zobrazuje aktuální profil oddálení mapy

Obrázek A.1: Anotovaná ukázka uživatelského rozhraní pro cyklisty

49 A.SNÍMKYOBRAZOVKY

čtverec

480x640

240x320

800x600

Obrázek A.2: Pˇrizp˚usobenír ˚uznýmpomˇer˚umstran a rozlišením

50 A.SNÍMKYOBRAZOVKY

Ukázka dalších profil ˚us r ˚uznˇenakonfigurovaným rozhraním

Obrázek A.3: Pˇríkladrozhraní s ukazatelem ˇcasupro motoristy

Obrázek A.4: Pˇríkladjednoduchého rozhraní pro pˇeší

Obrázek A.5: Hlavní menu je stejnˇejako zbytek modRany pˇrizp˚usobeno pro ovládání pomocí prst ˚u

51 A.SNÍMKYOBRAZOVKY

Ukázka práce s trasami

Obrázek A.6: Seznam tras

Obrázek A.7: Detail trasy

Obrázek A.8: Detail výškového profilu trasy

52 A.SNÍMKYOBRAZOVKY

Obrázek A.9: Pˇríkladvykreslení uložené trasy

Ukázka dávkového stahování mapových podklad ˚u

Obrázek A.10: Výbˇercílové oblasti

Obrázek A.11: Výbˇerpolomˇeru oblasti

53 A.SNÍMKYOBRAZOVKY

Obrázek A.12: Výbˇerpoˇctunižších úrovní

Obrázek A.13: Výbˇerpoˇctuvyšších úrovní

Obrázek A.14: Menu pro dávkové stahování dlaždic

54 A.SNÍMKYOBRAZOVKY

Obrázek A.15: Stahování i zjišt’ování celkové velikosti dílc ˚um ˚užeprobíhat souˇcasnˇe

Obrázek A.16: Upozornˇení na dokonˇcenídávkového stahování, které bˇe- želo na pozadí

55 A.SNÍMKYOBRAZOVKY

Ukázka integrace online služeb

Hledání trasy

Obrázek A.17: Trasa nalezená pro automobilový profil

Obrázek A.18: Detail trasy nalezené pro automobilový profil

Obrázek A.19: Trasa nalezená pro pˇešíprofil

56 A.SNÍMKYOBRAZOVKY

Obrázek A.20: Detail trasy nalezené pro pˇešíprofil

Obrázek A.21: Ukázka zobrazení nalezené trasy pˇrivˇetšímpˇriblížení

Vyhledávání POI

Obrázek A.22: Menu pro vyhledávání POI

57 A.SNÍMKYOBRAZOVKY

Obrázek A.23: Tématické submenu pro vyhledávání POI

Obrázek A.24: Seznam POI nalezených v blízkosti aktuální pozice

Obrázek A.25: Detail nalezeného POI

58 A.SNÍMKYOBRAZOVKY

Zobrazení nalezených POI

Obrázek A.26: Zobrazení nalezených POI na mapˇe

Obrázek A.27: Nalezení cesty k POI

59 A.SNÍMKYOBRAZOVKY

Ukázka pˇrekrytímapových vrstev

Obrázek A.28: Vrstva T@H s 50% pr ˚uhlednostípˇrekrývávrstvu Google Sa- telite

Obrázek A.29: Pr ˚uhlednávrstva Google overlay pˇrekrývávrstvu Yahoo Sa- telite

60 A.SNÍMKYOBRAZOVKY

Ukázka modRany na r ˚uznýchplatformách

Obrázek A.30: Ukázka modRany na Neo FreeRunneru, na Smart Q7, na PC v oknˇe,na plné obrazovce PC a v Maemo 5 simulátoru

61 PˇrílohaB Obsah CD

PˇriloženéCD obsahuje:

∙ aktuální balíˇckymodRany pro Neo FreeRunner, Ubuntu/Debian, N900 a všeobecnˇepoužitelný archív v adresáˇri modRana_balicky; k dispozici je také shellový skript pro tvorbu balíˇck˚upˇrímoze SVN repozitáˇre

∙ instalaˇcníbalíˇckya zdrojové kódy nˇekterýchtestovaných navigaˇc- ních systém ˚u1 v adresáˇri dostupne_navigacni_systemy

∙ moji prezentaci z konference Openmobility 2010 v adresáˇri Open- mobility2010_prezentace

∙ NMEA logy, které jsem používal spoleˇcnˇes gpsfake [42] k simulaci GPS pˇrivývoji modRany, v adresáˇri ostatni

∙ video, které názornˇepˇredvádí,jak v modRanˇefunguje hledání cesty je v adresáˇri routing_video

∙ projektovou wiki v adresáˇri wiki

∙ grafickou mapu rozhraní v adresáˇri mapa_rozhrani, textová mapa rozhraní je souˇcástíwiki

∙ zdrojové soubory tohoto dokumentu v adresáˇri tex_zdroj

1. mnoho tˇechtoprogram ˚ulze však nainstalovat pˇrímoz distribuˇcníchrepozitáˇr˚u

62