}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Flexibilní GPS navigace pro mobilní zaˇrízení s OS Linux ˇ B AKALÁ RSKÁ PRÁCE
Martin Kolman
Brno, jaro 2010
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji 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ˇekuji vedoucímu mé bakaláˇrské práce RNDr. Aleši Horákovi, Ph.D. za odborné vedení, zajímavé podnˇety a pomoc pˇri testování modRany. Rovnˇež mu dˇekuji za poskytnutí techniky a zdroju, ˚ bez kterých by tento projekt nemohl být realizován.
iii
Shrnutí První cˇ ást práce obsahuje úvod do problematiky navigaˇcního softwaru a pokraˇcuje pˇrehledem a srovnáním navigaˇcních systému, ˚ dostupných pro mobilní linuxové platformy. Dále se práce zamˇerˇ uje na výbˇer vhodného navigaˇcního systému k úpravám a popisu tˇechto úprav ve formˇe nového navigaˇcního systému modRana. Je zde také popsáno vývojové prostˇredí a uživatelská základna systému modRana. Závˇereˇcná cˇ ást se zabývá dalšími možnými smˇery vý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
2
Navigaˇcní software pro mobilní zaˇrízení s OS Linux . . . . . . . 1.1 Klasifikace navigaˇcních systému˚ . . . . . . . . . . . . . . . . 1.1.1 Navigaˇcní software používající bitmapové dlaždice . 1.1.2 Navigaˇcní software používající vektorové mapové podklady . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3 Navigaˇcní software nepoužívající mapové podklady 1.2 Hledání cesty . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Hledání cesty z lokálních dat . . . . . . . . . . . . . . 1.2.2 Hledání cesty pomocí internetové služby . . . . . . . 1.2.3 Manuální výbˇer cesty . . . . . . . . . . . . . . . . . . 1.2.4 Cesta ze záznamu . . . . . . . . . . . . . . . . . . . . . 1.3 Pˇrehled dostupných navigaˇcních systému˚ . . . . . . . . . . . 1.3.1 TangoGPS . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Navit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Rana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.4 OmGPS . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.5 Maemo Mapper . . . . . . . . . . . . . . . . . . . . . . 1.3.6 McNavi . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.7 Simple geocaching tool for Linux . . . . . . . . . . . . 1.3.8 Advanced Geocaching Tool for Linux . . . . . . . . . Požadavky a návrh . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Výbˇer navigaˇcního systému pro modifikaci . . . . . . . . . . 2.1.1 Navigaˇcní systém Rana . . . . . . . . . . . . . . . . . Python . . . . . . . . . . . . . . . . . . . . . . . . . . . PyGTK a Cairo . . . . . . . . . . . . . . . . . . . . . . Modulární struktura . . . . . . . . . . . . . . . . . . . 2.2 Návrh implementace požadovaných funkcí . . . . . . . . . . 2.2.1 Konfigurovatelnost . . . . . . . . . . . . . . . . . . . . 2.2.2 Auto, kolo a pˇeší použití . . . . . . . . . . . . . . . . . 2.2.3 Podpora mapových podkladu˚ . . . . . . . . . . . . . 2.2.4 Stahování a offline použití mapových podkladu˚ . . . 2.2.5 Cílová platforma a multiplatformnost . . . . . . . . .
2 2 2 3 3 3 4 4 5 5 5 5 6 8 9 10 11 12 13 15 15 16 16 16 16 16 16 17 17 18 18
vi
2.3
3
Návrh implementace dodateˇcných funkcí . . . . . . . . . . 2.3.1 Hledání cesty a POI . . . . . . . . . . . . . . . . . . 2.3.2 Práce s trasami . . . . . . . . . . . . . . . . . . . . . 2.3.3 Informaˇcní ukazatele . . . . . . . . . . . . . . . . . . 2.3.4 Profil trasy . . . . . . . . . . . . . . . . . . . . . . . . 2.3.5 Pˇrekrývání mapových vrstev . . . . . . . . . . . . . Implementace navigaˇcního systému modRana . . . . . . . . . 3.1 Úpravy uživatelské rozhraní . . . . . . . . . . . . . . . . . . 3.1.1 Zobrazení pˇrizpusobené ˚ pomˇeru stran . . . . . . . 3.1.2 Konfigurovatelné rozhraní . . . . . . . . . . . . . . 3.1.3 Formát konfiguraˇcního souboru . . . . . . . . . . . 3.1.4 Nový ukazatel pozice . . . . . . . . . . . . . . . . . 3.1.5 Vylepšený systém zobrazování dlaždic . . . . . . . 3.2 Vyhledávání cesty . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Režimy vyhledávání trasy . . . . . . . . . . . . . . . 3.2.2 Formát startu a cíle . . . . . . . . . . . . . . . . . . . 3.2.3 Zadávání startu a cíle v modRanˇe . . . . . . . . . . 3.2.4 Informace dostupné o nalezené cestˇe . . . . . . . . 3.2.5 Ukládání nalezených cest mezi trasy . . . . . . . . . 3.3 Práce s trasami . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Podpora tras ve formátu GPX . . . . . . . . . . . . . 3.3.2 Výškový profil . . . . . . . . . . . . . . . . . . . . . 3.3.3 Zobrazení aktuálního výškového profilu . . . . . . 3.3.4 Optimalizované vykreslování tras . . . . . . . . . . 3.3.5 Správce tras . . . . . . . . . . . . . . . . . . . . . . . 3.4 Dávkové stahování mapových dílcu˚ . . . . . . . . . . . . . 3.4.1 Režimy dávkového stahování . . . . . . . . . . . . . 3.4.2 Souvislé pokrytí nespojité trasy . . . . . . . . . . . . 3.4.3 Doplnˇení dlaždic z dalších úrovní pˇriblížení . . . . 3.4.4 Stahování dlaždic a metainformací . . . . . . . . . . 3.5 Inovovaný systém ukládání dílcu˚ . . . . . . . . . . . . . . . 3.6 Pˇrekrytí mapových vrstev . . . . . . . . . . . . . . . . . . . 3.7 Integrace internetových služeb . . . . . . . . . . . . . . . . 3.7.1 Doplnˇení výškových dat k trase . . . . . . . . . . . 3.7.2 Hledání POI pomocí Google Local Search . . . . . . 3.8 N900 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.1 Instalaˇcní balíˇcek . . . . . . . . . . . . . . . . . . . . 3.8.2 Podpora pro Location API . . . . . . . . . . . . . . . 3.8.3 Alternativní adresáˇr pro ukládání mapových dílcu˚ 3.9 Neo FreeRunner . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19 19 19 20 20 20 21 21 21 21 22 24 25 26 26 26 27 27 27 28 28 28 29 29 30 30 30 31 32 32 32 33 34 34 34 35 36 36 36 37 vii
3.10 Rozšíˇrená podpora mapových podkladu˚ . . . . . . . . . 3.10.1 Úpravy . . . . . . . . . . . . . . . . . . . . . . . . 3.10.2 Rozšíˇrení podporovaných mapových podkladu˚ 3.10.3 Google Maps, Google Satelite . . . . . . . . . . . 3.10.4 Yahoo Maps, Satelite . . . . . . . . . . . . . . . . 3.10.5 Virtual Earth . . . . . . . . . . . . . . . . . . . . . 3.11 Vývojové prostˇredí . . . . . . . . . . . . . . . . . . . . . 3.11.1 Neo FreeRunner . . . . . . . . . . . . . . . . . . 3.11.2 Smart Q7 . . . . . . . . . . . . . . . . . . . . . . . 3.11.3 Maemo 5 SDK . . . . . . . . . . . . . . . . . . . . 3.12 Konference Openmobility 2010 . . . . . . . . . . . . . . 3.13 Uživatelé modRany . . . . . . . . . . . . . . . . . . . . . 4 Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Podpora více poskytovatelu˚ online služeb . . . . . . . . 4.2 Práce s offline katalogy POI . . . . . . . . . . . . . . . . 4.3 Integrace funkcí specifických pro platformu . . . . . . . 4.3.1 Podpora klávesnice . . . . . . . . . . . . . . . . . 4.3.2 Akcelerometr . . . . . . . . . . . . . . . . . . . . 4.3.3 Alternativní metody zjištˇení polohy . . . . . . . 4.4 Podpora dalších formátu˚ pro záznamy trasy . . . . . . A Snímky obrazovky . . . . . . . . . . . . . . . . . . . . . . . . B Obsah CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
37 37 37 38 38 38 39 39 39 40 40 40 41 41 41 42 42 42 42 43 48 61
viii
Úvod V souˇcasné dobˇe existuje pˇrekvapivˇe velké množství linuxových navigaˇcních aplikací. Tento jev je relativnˇe nový a podle mého názoru je zpusoben ˚ vˇetší dostupností mobilních linuxových zaˇrízení, jako jsou napˇríklad Neo FreeRunner nebo na Maemu založené tablety spoleˇcnosti Nokia. Existuje již nˇekolik velkých a pokroˇcilých projektu, ˚ poskytujících komplexní funkcionalitu, jako jsou napˇríklad TangoGPS, Navit nebo Maemo Mapper. Tyto projekty sice nejsou zcela bez závady, jsou však již použitelné k navigaci v terénu. Kromˇe velkých navigaˇcních projektu˚ existuje také rˇ ada menších aplikací, které cˇ asto postrádají i základní funkcionalitu. Nabízejí však ruzné ˚ zajímavé vlastnosti, které ale nejsou ve "velkých"navigaˇcních systémech k dispozici. V rámci této práce jsem provedl pruzkum ˚ dostupných navigaˇcních systému, ˚ srovnával jsem jejich vlastnosti, klady a zápory. Na základˇe tohoto pruzkumu ˚ jsem si k modifikaci vybral navigaˇcní systém Rana. Pˇri provádˇení úprav jsem se snažil implementovat zajímavé a praktické funkce, dostupné v ostatních navigaˇcních systémech. Výsledkem tˇechto úprav je navigaˇcní systém modRana. Poznatky, které jsem získal bˇehem pˇrípravy této práce, a navigaˇcní systém modRana jsem prezentoval 24. dubna 2010 na konferenci Openmobility, která probˇehla na Fakultˇe aplikované 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šina dostupného navigaˇcního software pro mobilní Linux patˇrí mezi svobodný software, výjimku tvoˇrí napˇríklad navigaˇcní zaˇrízení firmy TomTom, používající proprietární navigaˇcní software nebo zdarma dostupné, ale proprietární Ovi Maps od spoleˇcnosti Nokia. Vzhledem k tomu, že mým úkolem bylo vybrat a upravit vhodný navigaˇcní systém, budu se dále vˇenovat pouze volnˇe šiˇritelnému navigaˇcnímu softwaru.
1.1
Klasifikace navigaˇcních systému˚
Navigaˇcní software lze rozdˇelit podle zpusobu ˚ práce s mapovými podklady 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
Duležitým ˚ zdrojem volnˇe šiˇritelných vektorových dat i bitmapových dlaždic je projekt OpenStreetMap, popsaný v knize autoru˚ Frederika Ramma a Joechena Topfa [1]. 1.1.1
Navigaˇcní software používající bitmapové dlaždice
Tento typ navigaˇcních systému˚ používá mapové podklady ve formˇe cˇ tvercových dlaždic, ze kterých vytváˇrí souvislou vrstvu. Tato vrstva pak tvoˇrí výslednou mapu. Mˇerˇ ítko mapy urˇcuje takzvaná úrovenˇ pˇriblížení1 , která urˇcuje mˇerˇ ítko konkrétní vrstvy. Nízká úrovenˇ pˇriblížení znamená vysoké mˇerˇ ítko a menší celkový poˇcet dlaždic ve vrstvˇe. Vysoká úrovenˇ pˇriblížení znamená menší mˇerˇ ítko a vˇetší poˇcet dlaždic. Celková mapa je pak tvoˇrena souborem vrstev, odpovídajících jednotlivým mˇerˇ ítkum. ˚ 1.
z anglického zoomlevel
2
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Hlavní výhodou bitmapových dlaždic jsou nízké nároky na výkon zobrazujícího zaˇrízení a proto, jelikož na sobˇe dlaždice nezávisí, je možné dlaždice snadno stahovat podle aktuální potˇreby, popˇrípadˇe stažené dlaždice aktualizovat. Pro velké oblasti s nízkým mˇerˇ ítkem však výraznˇe roste poˇcet dlaždic a nároky na úložný prostor. Bitmapové dlaždice také neobsahují žádné informace o svém obsahu, takže napˇríklad hledání cesty a upozornování ˇ na body zájmu musí navigaˇcní systém rˇ ešit jinými prostˇredky. Dlaždice používají napˇríklad webové mapové aplikace nebo navigaˇcní systémy Rana a TangoGPS. Tˇemto navigaˇcním systémum ˚ se podrobnˇeji vˇenuji 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, jednotlivé geografické vlastnosti jsou popsány pomocí rˇ etˇezcu˚ složených ze znaku˚ a cˇ ísel. Na rozdíl od binárních dílcu˚ nelze tato data zobrazit pˇrímo a je nutné nejdˇríve provést zpracování do grafické podoby. Takto ostatnˇe také vzniká vˇetšina binárních mapových dílcu˚ (s výjimkou oskenovaných historických map a satelitních snímku). ˚ Generování mapy z grafických dílcu˚ je pomˇernˇe nároˇcnou cˇ inností, ale na druhou stranu umožnuje ˇ z 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íklad navigaˇcní systém Navit a mnoho komerˇcních jednoúˇcelových navigaˇcních pˇrístroju. ˚ 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 svuj ˚ provoz nepotˇrebují mapové podklady. Pˇríkladem muže ˚ byt aplikace SGTL, které jsem vˇenoval sekci 1.3.7. Tento jednoduchý program ukazuje aktuální smˇer a vzdálenost k zadanému bodu. Dalším pˇríkladem navigace bez použití mapy je GPS informaˇ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ˇema body je užiteˇcnou vlastností nˇekterých navigaˇcních systému. ˚ Hledání cesty mužeme ˚ zpravidla rozdˇelit podle 3
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
toho, jestli je výpoˇcet optimální trasy provádˇen pˇrímo na 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ˇcet optimální cesty probíhá z lokálnˇe dostupných dat, je tento zpusob ˚ nezá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ž muže ˚ vést k velkým nárokum ˚ na úložný prostor zaˇrízení. Uložená data také mohou postupem cˇ asu zastarat, je tedy vhodné zajistit jejich aktualizaci, která však vzhledem k velikosti tˇechto dat2 klade pomˇernˇe vysoké nároky na pˇrenosovou kapacitu a také prakticky vyluˇcuje aktualizaci tˇechto dat pomocí GPRS. Další nevýhodou lokálního hledání trasy je nároˇcnost výpoˇctu, která stoupá s délkou a složitostí trasy. 1.2.2
Hledání cesty pomocí internetové služby
Tento zpusob ˚ hledání cesty spoˇcívá v odesláni dotazu internetové službˇe. Odpovˇedí na dotaz jsou pak údaje o nalezené cestˇe nebo upozornˇení na to, že cesta nebyla nalezena. Pˇríkladem takové 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 serveru, ˚ jejichž výkon vysoce pˇrevyšuje výkon bˇežného mobilního zaˇrízení, a proto je výpoˇcet cesty hotový mnohem rychleji, než kdyby probíhal na mobilním zarˇ ízení. Nevýhodou použití internetových služeb k nalezení cesty je závislost na pˇripojení k internetu. Objem pˇrenesených dat nutných pro zjištˇení trasy je však velmi malý3 . Lze tedy použít napˇríklad GPRS, které je dnes již široce dostupné. Další možností je cestu pˇredem vyhledat a uložit. ˇ mají 69MB a pro Evropu 1.2 GB 2. vektorová OSM data z Cloudmade [3] pro CR 3. cesta z Prahy do Brna, navrácená službou Google Directions ve formátu JSON, má velikost 11.8 KB
4
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
1.2.3
Manuální výbˇer cesty
Tento zpusob ˚ výbˇeru cesty spoˇcívá v manuálním vytyˇcení cesty na mapˇe. Tato metoda výbˇeru cesty umožnuje ˇ zvolit trasu podle vlastní zkušenosti a použít cesty, které nejsou v mapových podkladech zaneseny. Výbˇer trasy na delší vzdálenost však muže ˚ být nepˇresný nebo velice zdlouhavý. 1.2.4
Cesta ze záznamu
Další možností je volba cesty, kterou již nˇekdo absolvoval a zveˇrejnil v podobˇe souboru koordinát zaznamenaných pomocí GPS [5]. Existuje mnoho souborových formátu˚ pro záznam trasy, od prostého seznamu NMEA vˇet z GPS pˇrijímaˇce, pˇres proprietární formáty nˇekterých výrobcu˚ navigaˇ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ˇerˇ ují na jejich sbˇer. K tˇemto internetovým stránkám patˇrí všeobecné zamˇerˇ ené Wikiloc.com [8] nebo projekt Bikemap.net [9], zamˇerˇ ený na cyklistické trasy.
1.3
Pˇrehled dostupných navigaˇcních systému˚
V souladu se zadáním jsem provedl srovnání navigaˇcních systému˚ dostupných pro mobilní linuxová zaˇrízení. 1.3.1
TangoGPS
Tango GPS [10] je linuxová navigaˇcní aplikace, používající bitmapové mapové dílce. V základním nastavení jsou používány mapové dílce z poskytované projektem OpenStreetMap [11], lze však pˇridat i jiné zdroje dílcu. ˚ 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 aplikaci. Novˇe je TangoGPS také výchozí GPS aplikací na Touchbooku [12]. Rozhraní je pˇrizpusobeno ˚ dotykovému ovládání a umožnuje ˇ pˇrepnutí do režimu plné obrazovky. Hlavní obrazovka s mapou se sestává z lišty hlavních ovládacích tlaˇcítek nahoˇre, posuvníku pro zmˇenu úrovnˇe pˇriblížení vpravo a informaˇcní lišty dole. Na FreeRunneru jsou v horní lištˇe tlacˇ ítka bohužel pˇríliš blízko sebe. Zárovenˇ lze díky cˇ erné barvˇe s oranžovými ikonami jednotlivá tlaˇcítka špatnˇe rozlišit, obzvláštˇe na denním svˇetle. Ponˇekud rušivˇe pusobí ˚ ukazatel rychlosti v levém horním rohu, který není možné vypnout. Tato skuteˇcnost se nejvíc projevuje právˇe na FreeRunneru, kde ukazatel zabírá znaˇcnou cˇ ást obrazovky.
5
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.1: TangoGPS TangoGPS umí dynamicky stahovat mapové dílce pro aktuálnˇe zobrazenou lokalitu a obsahuje také základní podporu dávkového stahování dílcu. ˚ 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ím pruhu 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živatelum ˚ TangoGPS a umožnuje ˇ sledování pozice ostatních uživatelu˚ služby na mapˇe. TangoGPS podporuje záznam trasy do vlastního formátu. K aktuální trase jsou také zobrazeny informace o prumˇ ˚ erné a maximální rychlosti, celkovém cˇ ase stráveném na trase a absolvované vzdálenosti. 1.3.2
Navit
Navit [13] je pravdˇepodobnˇe nejpokroˇcilejším linuxovým navigaˇcním systémem používajícím vektorové mapy. Jedná se o velmi komplexní navigaˇcní systém, poskytující mnoho funkcí. 4.
http://www.tangogps.org/friends/
6
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.2: Navit Navit dokáže používat data z OpenStreetMap, pˇrekonvertovaná do vlastního binárního formátu. Na stránkách projektu existuje webová aplikace pro výbˇer oblasti pro pˇrekonvertování a stažení na mapˇe. K dispozici jsou také hotové extrakty pro jednotlivé zemˇe ze služby Cloudmade [14]. Navit pracuje nejen s daty z OpenStreetMap, ale také s mapovými podklady z jiných zdroju˚ [15]. Nevhodný mi pˇripadal zpusob ˚ nastavení cesty k mapovému souboru. Ve verzi Navitu, kterou jsem testoval5 bylo totiž nutné nejdˇríve lokalizovat konfiguraˇcní soubor navit.xml, poté nalézt rˇ ádek s definicí cesty k datum ˚ z OpenStreetMap a na tomto rˇ ádku nastavit odpovídající cestu. Také jsem musel nalézt rˇ ádek s 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ímo z vektorových dat, nabízí ruzné ˚ vizuální styly map. K dispozici je napˇríklad noˇcní nebo cyklistický režim. Mapu lze libovolnˇe natáˇcet, popˇrípadˇe muže ˚ být automaticky rotová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ˇri použití vˇetšího mˇerˇ ítka, kdy Navit cˇ asto nezobrazuje mˇesta. Využití vektorových mapových podkladu˚ s sebou nese i podporu pro offline hledání cesty. Cestu lze vyhledat zadáním na mapˇe cˇ i zadáním adres 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. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.3: Rana z aktuální pozice. Rozhraní Navitu je dobˇre pˇrizpusobeno ˚ ovládání pomocí dotykové obrazovky. Jeho jednotlivé prvky lze nastavit v konfiguraˇcním XML souboru. Existuje nˇekolik ruzných ˚ rozhraní, založených napˇríklad na GTK, nebo využívajících OpenGL. 1.3.3
Rana
Rana [16] je modulární navigaˇcní systém s GUI, které je plnˇe pˇrizpusobené ˚ k ovládání dotykovou obrazovkou. Rana podporuje automatické stahování a zobrazování mapových dílcu˚ z projketu˚ OpenStreetMap [11], OpenCycleMap [17] a OpenAerialMap [18]. Umí pracovat také s vektorovými mapový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ˇe limituje použití pro navigaci. Zajímavý je zpusob, ˚ jakým je Rana implementována. Program tvoˇrí množina modulu˚ a hlavního skriptu, který je pˇri startu 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. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
bou komunikovat bud’to pˇredáváním zpráv, pomocí globálního slovníku nebo pˇrímým voláním metod ostatních modulu. ˚ Na stejném principu funguje rovnˇež uživatelské rozhraní, kde po stisku tlaˇcítka dojde k odeslání zpráv cˇ i nastavení hodnot v globálním slovníku. Reakcí na takto poslanou zprávu muže ˚ být napˇríklad posunutí listovacího menu. Ranu je plnˇe konfigurovatelná pomocí grafického rozhraní a zmˇeny nastavení se promítají do globálního slovníku. Ten je ukládán do souboru, takže zmˇeny a ostatní nastavení jsou zachovány a pˇri dalším startu aplikace opˇet plnˇe k dispozici. Rana je napsaná v jazyce Python a samotný program se sestává z hlavního spouštˇecího skriptu, adresáˇre s moduly a adresáˇre s ikonami ve formátu PNG. Grafické rozhraní používá PyGTK [19] a Cairo [20], což jsou kromˇe Pythonu jediné další externí závislosti. Proto je možné, navzdory tomu, že se jedná o navigaˇcní systém primárnˇe urˇcený pro NeoFreeRunner, provozovat Ranu na v podstatˇe na každé libovolné linuxové distribuci, která dovoluje instalaci Pythonu, PyGTK a Cairo. Jediným vˇetším problémem v pˇrípadˇe provozu na jiných platformách je uživatelské rozhraní, pˇrizpusobené ˚ pro obrazovku FreeRunneru. To muže ˚ vést k deformaci ikon nebo k neúmˇerné velikosti ovládacích prvku. ˚ Rana je v podstatˇe velmi zajímavˇe rˇ ešeným navigaˇcním systémem, obsahuje však také mnoho nadˇejnˇe pusobících, ˚ ale nedokonˇcených funkcí. Jsou to napˇríklad dávkové stahování mapových dat nebo práce s POI. Bohužel však v souˇcasnosti již 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 dispozici jsou pouze balíˇcky pro tuto platformu a na webových stránkách tohoto projektu nejsou jiné platformy zmínˇeny. Grafické rozhraní toho navigaˇcního systému mi nepˇripadalo pro mobilní 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árovenˇ nevhodnˇe blízko sebe. Rozhraní se proto prakticky nedá ovládat pomocí prstu. ˚ I pˇri použití stylusu je cˇ asto problém používat nˇekteré z ovládacích prvku. ˚ Mezi podporované vrstvy patˇrí Openstreetmap, Opencyclemap, Google maps a Google satelite. Zajímavá je funkce pˇrekrývání dvou vybraných ma6. 7.
poslední aktivita autora na wiki projektu byla v srpnu 2008 název této aplikace zˇrejmˇe vznikl kombinací slov OpenMoko a GPS
9
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.4: OmGPS pových vrstev. Je možné stanovit, která vrstva bude tvoˇrit pozadí a kterou vrstvou bude toto pozadí pˇrekryto. Lze také nastavit úrovenˇ pruhlednosti. ˚ Pˇríkladem použití této funkce je pˇrekrytí vrstvy satelitních snímku˚ mapovou vrstvou. OmGPS podporuje využití asistenˇcní služby u-blox Assist Online [22], což urychluje dostupnost údaju˚ o poloze po aktivaci GPS. Bˇehem mé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ˇcenou pro internetové tablety s linuxovým OS Maemo od firmy Nokia. Novˇe lze tento navigaˇcní systém nainstalovat také na N900. Rozhraní je viditelnˇe pˇrizpusobeno ˚ dotykové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ˇekud nepˇrehledné díky množství ruzných ˚ menu, která se otevírají z mnoha ruzných ˚ tlaˇcítek. Proto bych v tomto programu ocenil jednotné menu, které by zpˇrístupnovalo ˇ všechna nastavení z jednoho místa.
10
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.5: Maemo Mapper Maemo mapper používá bitmapové mapové podklady, ve výchozím nastavení jsou to vrstvy OpenStreetMap, Google Maps a Google Satelite. Další vrstvy muže ˚ uživatel pˇridat pˇrímo z 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ˇe vklá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 cˇ eského vývojáˇre a v souˇcasní dobˇe se nachází v aktivní vývojové fázi. V porovnání s ostatními navigaˇcními systémy se zˇrejmˇe nejvíce podobá Navitu, jelikož také používá vektorová data z projektu OpenStreetMap, uložená ve vlastním binárním formátu. Binární soubory pro McNavi však nejsou s Navitem kompatibilní a jsou také o poznání vˇetší. Biná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ˇe lze 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 po11
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.6: McNavi kynu˚ zprovoznit 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ˇre pˇrizpusobené ˚ 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íkladem navigaˇcního softwaru, který nepoužívá mapové podklady. Jak už název napovídá, má tato aplikace sloužit milovníkum ˚ geocachingu. Nejvýraznˇejším prvkem uživatelského rozhraní je velká šipka, která zabírá vˇetšinu obrazovku. Šipka ukazuje ke souˇradnicím, které je možné nastavit pomocí velkých dotykovému ovládání pˇrizpusobených ˚ tlaˇcítek. Smˇer šipky je pravdˇepodobnˇe urˇcován v závislosti na smˇeru pohybu udávaném GPS pˇrijímaˇcem. Uživatel je tedy nucen se pohybovat minimálnˇe rychlejší chuzí, ˚ jinak šipka ukazuje špatným smˇerem.
12
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
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 podkladu˚ z OpenStreetMap a pˇrímé napojení na databázi "keší"Geocaching.com. Nejdˇríve je nutné se na Geocaching.com zaregistrovat a registraˇcní udaje vyplnit v AGTL. Následovnˇe dojde k aktivaci zobrazování polohy keší, které se nacházejí na aktuálnˇe zobrazeném výseku mapy. Keše lze vyhledávat podle jména nebo zadaných parametru˚ a 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ímo z 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 zustala ˚ zachována, jako cíl šipky lze zvolit koordináty nebo nˇekterou z keší. V souˇcasnosti jsou jedinými podporovanými mapovými podklady bitmapové dílce z OpenStreetMap, AGTL neumožnuje ˇ pˇridání dalších zdroju˚ mapových podkladu˚ ze strany uživatele.
13
ˇ ˇ 1. N AVIGA CNÍ SOFTWARE PRO MOBILNÍ ZA RÍZENÍ S OS L INUX
Obrázek 1.8: Advanced Geocaching Tool for Linux AGTL je urˇcena primárnˇe pro NeoFreerunner, novˇe existuje také verze pro N900 a aplikace by mˇela fungovat i na bˇežné deskopové linuxové distribuci.
14
Kapitola 2
Požadavky a návrh Požadavky Zadání mé práce stanovuje tvorbu navigaˇcního systému, který bude založený na již existujícím softwaru. Tento nový systém má být široce konfigurovatelný a použitelný pro navigaci pˇri cestování autem, na kole i pˇešky a má podporovat stahování mapových podkladu˚ pro offline použití. Cílovým prostˇredím je 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ˇer navigaˇcního systému pro modifikaci
Práci na novém navigaˇcním systému jsem zaˇcal výbˇerem vhodného již existujícího navigaˇcního softwaru. Pˇri výbˇeru jsem využil poznatky, které jsem získal pˇri srovnávání navigaˇcních systému˚ dostupných pro mobilní linuxová zaˇrízení. Kritéria Vzhledem k tomu, že jsem si jako primární cílovou platformu vybral linuxový operaˇcní systém Maemo 5 na N900 [28], musel jsem zvolit takový software, jaký je na této platformˇe možné provozovat, pˇrípadnˇe pro tuto platformu snadno upravit. Souˇcasnˇe jsem ale chtˇel zachovat co nejvˇetší kompatibilitu s ostatními platformami a co nejmenší poˇcet závislostí na externích softwarových komponentách. Mým cílem také bylo vybrat takový systém, který umožní snadno integrovat další svobodný software za úˇcelem rozšíˇrení funkcionality systému.
15
2. P OŽ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 architektur, napˇríklad právˇe pro N900, Neo FreeRunner cˇ i vˇetšinu linuxový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ˇeh Rany. Oba tyto komponenty 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íˇckového systému z repozitáˇre. Modulární struktura Rana je tvoˇrena souborem modulu. ˚ Jednotlivé moduly mezi sebou mohou komunikovat posíláním práv, prostˇrednictvím perzistentního globálního slovníku nebo pomocí pˇrímého pˇrístupu k metodám a promˇenným jednotlivých modulu. ˚ Je tak velmi snadné vytvoˇrit nový modul rozšiˇrující funkcionalitu, nebo modifikovat nˇekterý ze stávajících modulu. ˚ Modulární architektura Rany také umožnuje ˇ snadnou integraci dalších volnˇe šiˇritelných komponent. Zde se pozitivnˇe projevuje použití Pythonu, jelikož pro tento jazyk existuje velké množství [30] balíku˚ s rozšiˇrující funkcionalitou. Pˇri použití pouze takových balíku, ˚ které nemají externí závislosti a jsou napsané v Pythonu, je možné efektivnˇe rozšíˇrit funkce 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ímo ve zdrojovém kódu a perzistentní globální slovník. Velikost a pozice ovládacích a informaˇcních prvku˚ 16
2. P OŽADAVKY A NÁVRH byla fixní, optimalizovaná pro Neo FreeRunner. Také cesta k adresáˇri s mapovými dílci a definice mapových vrstev byly napsány pˇrímo ve zdrojovém kódu. Do modRany jsem implementoval podporu textových konfiguraˇcních souboru, ˚ které slouží k nastavení uživatelského rozhraní, cest k dílcum ˚ a trasám a k definici mapových vrstev. Popis hlavního konfiguraˇcního souboru a konfigurovatelného uživatelského rozhraní je v sekci 3.1.3. V sekci 3.1.1 jsou podrobnˇeji popsány úpravy uživatelského rozhraní, které jsem provedl za úˇcelem lepšího pˇrizpusobení ˚ modRany ruzným ˚ rozlišením a pomˇerum ˚ stran. 2.2.2
Auto, kolo a pˇeší použití
Rana umožnovala ˇ jednoduchou 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ˇri hledání cesty pomocí vektorových map z OpenStretMap. Tuto funkci se mi podobnˇe jako vˇetšinu funkcí, založených na implementaci vektorových map v Ranˇe, nepodaˇrilo zprovoznit. V modRanˇe jsem profily pˇreorganizoval tak, aby byly pro uživatele pˇrehlednˇ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 konfiguraˇcním souboru, popsaném v sekci 3.1.3, muže ˚ uživatel nastavit velikost a pozici jak ovládacích prvku, ˚ tak informaˇcních ukazatelu. ˚ Informace o aktuálním profilu využívá ModRana pˇri vyhledá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 motoristická varianta atd.. Funkce pro vyhledávání cesty pomocí online služby je detailnˇeji popsána v sekci 3.2. 2.2.3
Podpora mapových podkladu˚
Rana podporovala vektorové mapové podklady, založené na datech z OpenStreetMap, a zobrazování mapových dílcu˚ z OpenStreetMap, OpenCycleMap a OpenArialMap. V praxi však bylo zobrazování vektorových mapových podkladu˚ velmi nespolehlivé a chybˇelo vykreslení jakýchkoli textových popisek. Zobrazování dílcu˚ z OpenCycleMap nefungovalo pro zastaralé URL a projekt OpenArialMap pˇrestal poskytovat mapové dílce. V modRanˇe jsem podporu vektorových mapových podkladu˚ vzhledem k nízké použitelnost deaktivoval. Dále jsem vzhledem k nedostupnosti dílcu˚ 17
2. P OŽADAVKY A NÁVRH odebral mapovou vrstvu pro OpenArialMap. Vrstva OpenCycleMap po zadání aktuální URL opˇet funguje. Kromˇe zmˇen puvodních ˚ mapových vrstev jsem do modRany doplnil podporu mapových dlaždic z dalších zdroju. ˚ Pˇridal jsem 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. Puvodní ˚ zpusob ˚ zobrazování mapových dílcu˚ jsem 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 podkladu˚
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 adresáˇre, do souboru˚ pojmenovaných podle vrstvy a souˇradnic stažené dlaždice. Nebylo tedy možné sdílet adresáˇr mapových podkladu˚ napˇr. s navigaˇcním systémem TangoGPS, které ukládá dlaždice do adresáˇrové struktury. Souˇcástí Rany byla rozpracovaná podpora dávkového stahování vektorových dat v XML z OpenStreetMap, dávkové stahování mapových dlaždic Rana nepodporovala. V modRanˇe jsem implementoval dávkové stahování mapových dlaždic, a to jak kolem aktuální pozice, tak kolem aktuálního pohledu na mapu cˇ i vybrané trasy, vˇcetnˇe nastavení 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áˇr s dílci. Tuto funkci jsem implementoval na základˇe podnˇetu˚ získaných od úˇcastníku˚ konference Openmobility 2010, na které jsem modRanu prezentoval. Popisu vylepšeného ukládání mapových dílcu˚ se vˇenuje sekce 3.5. 2.2.5
Cílová platforma a multiplatformnost
Navigaˇcní systém Rana byl pˇrizpusoben ˚ pro linuxový mobilní telefon Neo Freerunner. Ranu lze sice spustit i na jiných linuxových zaˇrízeních. V tomto pˇrípadˇe však dochází ke znaˇcenému zkreslení uživatelského rozhraní, které je urˇceno pro dotykovou obrazovku Nea o rozlišení 480 na 640 pixelu. ˚ Pro zjištˇení pozice byl podporován pouze gps démon, který napˇríklad na N900 není vubec ˚ k dispozici. Instalace Rany spoˇcívala ve zkopírování programu ze SVN a k dispozici nebyly žádné instalaˇcní balíˇcky cˇ i balíˇckovací skripty. 18
2. P OŽADAVKY A NÁVRH V modRanˇe jsem zmˇenil zpusob ˚ vykreslování uživatelského rozhraní tak, aby se GUI lépe pˇrizpusobovalo ˚ rozdílným rozlišením a pomˇerum ˚ stran. Více informací o zmˇenách provedený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, doplnil jsem podporu Location API, které na této platformˇe umožnuje ˇ pˇrístup k GPS, viz sekce 3.8.2. Pro usnadnˇení instalace jsem pomocí vlastního balíˇckovacího skriptu vytvoˇril instalaˇcní balíˇcky pro Maemo 5 na N900, SHR na Neo FreeRunneru a Deabin/Ubuntu.
2.3
Návrh implementace dodateˇcných funkcí
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žnovala ˇ vyhledávání cest ani POI pomocí internetu. V modRanˇe jsem implementoval hledání cesty za pomocí internetové služby Google Directions, která umožnuje ˇ hledání cesty jak mezi souˇradnicemi, 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]. Nalezené výsledky se zobrazí na mapˇe a 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
Puvodní ˚ 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ˇcasnosti pˇrevážnˇe používané GPX 1.1 podporováno nebylo. Pˇri implementaci práce s trasami v modRanˇe jsem 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 cˇ i zobrazit informaˇcní ukazatele s informacemi o trase. Práci s trasami v modRanˇe je vˇenována sekce 3.3. Online doplnˇení nadmoˇrské výšky popisuje sekce 3.7.1.
19
2. P OŽADAVKY A NÁVRH 2.3.3
Informaˇcní ukazatele
Rana obsahovala multifunkˇcní ukazatel tvoˇrený cˇ erným pruhem v dolní cˇ ásti obrazovky, ve kterém se zobrazovaly aktuální informace jako napˇríklad rychlost pohybu cˇ i aktuální cˇ as. Souˇcasnˇe se vždy zobrazily pouze informace z jedné kategorie, mezi jednotlivými kategoriemi bylo možné pˇrepínat kliknutím na informaˇcní pruh. Informaˇcní pruh, který zabíral podstatnou cˇ ást obrazovky a zárovenˇ vždy zobrazoval pouze jeden druh informace, jsem v modRanˇe odstranil a nahradil systémem pruhledných ˚ a konfigurovatelných informaˇcních ukazatelu. ˚ Popis konfigurace informaˇcních ukazatelu˚ je souˇcástí sekce 3.1.3, která je vˇenována uživatelskému konfiguraˇcnímu souboru. 2.3.4
Profil trasy
Puvodní ˚ Rana nepodporovala zobrazení profilu trasy. Zobrazení profilu sice nabízejí trasy nˇekteré webové mapové služby, u mobilních navigaˇcních aplikací 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 podobˇe informaˇcního ukazatele. Popis tvorby výškového profilu se nachází v sekci 3.3.2. 2.3.5
Pˇrekrývání mapových vrstev
Puvodní ˚ systém Rana neumožnoval ˇ pˇrekrývání mapových vrstev. K implementaci této funkce mne inspiroval program OmGPS, popsaný v sekci 1.3.4. Implementace v modRanˇe umožnuje ˇ zvolit zvlášt’ v vrstvu v pozadí a zvlášt’ pˇrekrývající vrstvu. Stupenˇ pruhlednosti ˚ pˇrekrývající vrstvy lze nastavit v rozsahu 25 až 100%. Pˇrekrývání mapových vrstev se vˇenuje sekce 3.6.
20
Kapitola 3
Implementace navigaˇcního systému modRana Novˇe vznikající systém byl nazván modRana, protože se jedná o zásadní modifikaci navigaˇcního systému Rana.
3.1
Úpravy uživatelské rozhraní
Uživatelské rozhraní bylo upraveno tak, aby se lépe pˇrizpusobovalo ˚ ruz˚ ným rozlišením a pomˇerum ˚ stran obrazovky. 3.1.1
Zobrazení pˇrizpusobené ˚ pomˇeru stran
Puvodní ˚ grafické rozhraní bylo navržené pro Neo FreeRunner a odpovídá pomˇeru stran jeho obrazovky. Rozhraní jsem upravil tak, aby reagovalo na zmˇeny pomˇeru stran, cˇ ímž jsem docílil konzistentního vzhledu rozhraní pro široký rozsah pomˇeru˚ stran. Pˇrizpusobil ˚ jsem také rozvržení listovacích a informaˇcních menu tak, aby byly jednotlivé prvky v závislosti na aktuálním pomˇeru stran optimálnˇe umístˇeny. 3.1.2
Konfigurovatelné rozhraní
Podstatnou cˇ ást obrazovky v Ranˇe zabíral cˇ erný pruh, ve kterém se zobrazovaly aktuální informace. Tento pruh jsem odstranil a nahradil ho polopruhlednými ˚ informaˇcními ukazateli, které si uživatel muže ˚ nastavit v konfiguraˇcním souboru: user_config.conf Informaˇcní ukazatele se zobrazují podle aktuálnˇe zvoleného profilu, pro každý profil je tak možné nastavit specifickou sadu ukazatelu. ˚ Pro jednotlivé profily lze také nastavit velikost a pozici jednotlivých ovládacích prvku. ˚ Uživatel tedy pˇri jízdˇe na kole využije napˇríklad vlastní rozvržení ovládacích a informaˇcních prvku. ˚ Pˇred jízdou autem pak pouze pˇrepne profil a bude mít k dispozici opˇet jiné specifické nastavení.
21
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
3.1.3
Formát konfiguraˇcního souboru
Pro naˇcítání konfiguraˇcních souboru˚ a práci s nimi využívá modRana modul ConfigObj [34]. Tento modul tak urˇcuje syntaxi, použitou v konfiguraˇcním souboru. Cokoliv, co následuje na rˇ ádku za #, je bráno jako komentáˇr. Pro odlišení komentáˇru˚ od zakomentovaných voleb používám u všech komentáˇru˚ ##. K pˇriˇrazení hodnoty do promˇenné slouží rovnítko, do promˇenné lze pˇriˇradit i seznam cˇ árkou oddˇelených hodnot. Konfiguraˇcní soubor má stromovou strukturu, která je vyjádˇrena názvem sekce v hranatých závorkách. Poˇcet hranatých závorek znaˇcí úrovenˇ zanoˇrení. Volby, které nejsou v žádné sekci, patˇrí do nejvyšší úrovnˇe. Takto vypadá nejvyšší úrovenˇ v hlavním konfiguraˇcním souboru, nazvaném user_config.conf: ## ** Global config start ** ## enabled=True ## urˇ cuje, 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: ## * Nokia 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ím souboru odpovídají jednotlivým profilum. ˚ 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ˇe polohy a velikosti hlavních ovládacích prvku. ˚ Nastavování probíhá pomocí tˇechto promˇenných: 22
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
∙
menu : nastavení pozice tlaˇcítka pro menu
∙
zoom_in : tlaˇcítko pro pˇriblížení
∙
zoom_out : tlaˇcítku pro oddálení
∙
fullscreen : tlaˇcítko režimu celé obrazovky
∙
centre : centrovací tlaˇcítko
∙
scalebar : ukazatel aktuálního mˇerˇ ítka
∙
icon_size : nastavení velikosti všech ikon, znaˇcí podíl nejkratší strany obrazovky, tzn. pˇri zadání 0.2 a rozlišení obrazovky 800*480 budou mít všechny ikony rozmˇer 96*96 pixelu˚
Aby bylo zadávání polohy flexibilní a fungovalo pro širokou škálu ruz˚ ných rozlišení a pomˇeru˚ stran obrazovky, zvolil jsem pomˇerové souˇradnice s pˇriˇcítáním/odeˇcítáním. Pˇríkladem muže ˚ být nastavení pozice pro tlaˇcítko menu: menu=0.0,1.0,0,-1 První dvˇe cˇ ísla udávají 𝑥 a 𝑦 pozici levého horního rohu tlaˇcítka v pomˇeru k délce stran. Na uvedeném pˇríkladu jsou na tˇechto pozicích cˇ ísla 0.0 a 1.0, což se napˇríklad na N900, která disponuje obrazovkou o rozlišení 800*480, promítne na pixelové souˇradnice 0,480. Pokud by bylo použity pouze tyto souˇradnice, tlaˇcítko by se zobrazilo mimo viditelnou oblast. ˇ Císla na tˇretí a cˇ tvrté pozici udávají, kolik velikostí tlaˇcítek má být odecˇ teno cˇ i pˇriˇcteno k 𝑥 a 𝑦 souˇradnicím. Na pˇríkladu, který jsem uvedl, je na tˇretí pozici cˇ íslo 0 a na cˇ tvrté pozici -1. 𝑋 souˇradnice tedy zustane ˚ beze zmˇeny, ale od 𝑦 souˇradnice bude odeˇctena velikost jednoho tlaˇcítka, takže 𝑦 = 480 − 96. Výsledné souˇradnice jsou tedy 0,384 a tlaˇcítko díky tomu bude zobrazeno v levém dolním rohu, nezávisle na aktuálním rozlišení obrazovky. Tento zpusob ˚ udávání pozice tlaˇcítek také umožnuje ˇ snadné seskupování tlaˇcítek vedle sebe. Viz pozice tlaˇcítka pro pˇriblížení: zoom_in=0.0,1.0,0,-2 Tlaˇcítko pro pˇriblížení odeˇcítá dvˇe velikosti tlaˇcítka od 𝑦 souˇradnice a bude tedy zobrazeno nad tlaˇcítkem pro menu. Podsekce [[OSD]] slouží k aktivaci a nastavení pozice informaˇcních ukazatelu. ˚ ModRana zobrazuje pouze ukazatele, které jsou nastavené v konfiguraˇcním souboru pro aktuálnˇe zvolený profil. Každý ukazatel tvoˇrí další podsekci s množinou promˇenných, které urˇcují pozici a vlastnosti ukazatele. Podporovány jsou následující ukazatele: 23
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
∙
[[[speed]]] nastavuje ukazatel aktuální rychlosti; lze nastavit pozici, velikost písma a zarovnání
∙
[[[statistics]]] slouží k zobrazení prumˇ ˚ erné a maximální rychlosti; 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í cˇ as ve formátu h:m; lze nastavit pozici, velikost písma a zarovnání
∙
[[[route_profile]]] tento ukazatel zobrazuje výsek z výškového profilu trasy s indikátorem aktuální pozice; je možné nastavit nejen pozici, ale také výšku, šíˇrku a délku zobrazeného úseku v kilometrech
∙
[[[route_remaining_length]]] patˇrí ukazateli, který zobrazuje 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 cˇ asu do startu cˇ i cíle; je možné nastavit jejich pozici, zarovnání a velikost písma
Obrázek 3.1 ukazuje pˇríklad konfigurace uživatelského rozhraní. K jednotlivým ovládacím prvkum ˚ jsou na tomto obrázku pˇriˇrazena odpovídající nastavení z konfiguraˇcního souboru. 3.1.4
Nový ukazatel pozice
Rana obsahovala ukazatel pozice v podobˇe velké žluté šipky, která zakrývala znaˇcnou cˇ ást duležité ˚ oblasti mapy v okolí aktuální pozice. Tento ukazatel také nijak neindikoval absenci pohybu, pˇri které nemá smysl ukazovat smˇer, jelikož GPS neumí urˇcit pˇresný smˇer pˇri nízké cˇ i nulové rychlosti. Když jsem navrhoval nový ukazatel pozice, inspiroval jsem se ukazatelem polohy v TangoGPS. Nového ukazatele pozice tvoˇrí kruh, jehož stˇred leží na aktuálních sourˇ adnicích. Ve stˇredu kruhu se nachází malý bod, který urˇcuje pozici pˇri rychlosti menší než 1 𝑚𝑠2 . Pokud je rychlost vyšší, lze urˇcit smˇer pohybu. Ze stˇredu kruhu v tomto pˇrípadˇe vychází pˇrímka, která jej mírnˇe pˇresahuje, a urˇcuje tak aktuální smˇer pohybu.
24
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
scalebar=0.0,0.0,1.2,0.2
fullscreen=0.0,0.0,0,0
[[[statistics]]] px=0.15 py=0.05 font_size=20 align=left
[[[speed]]] px=0.90 py=0.25 font_size=50 align=right
[[[route_profile]]] px=0.67 py=0.4 pw=0.3 ph=0.2 segment_length=5
zoom_in=0.0,1.0,0,-2
menu=0.0,1,0,-1
centre=1.0,0.0,-1,0
zoom_out=0.0,1.0,1,-1
Obrázek 3.1: Ukázka konfigurace prvku˚ rozhraní Tento typ ukazatele je dostateˇcnˇe velký na to, aby byl na mapˇe dobˇre viditelný. Zárovenˇ díky nezakrytému okolí svého stˇredu nezakrývá kritickou cˇ ást mapy v bezprostˇrední blízkosti aktuální pozice. 3.1.5
Vylepšený systém zobrazování dlaždic
Puvodní ˚ metoda vykreslování mapy zpusobovala ˚ neostrý vzhled mapových dílcu˚ a také to, že mapové dílce na sebe nenavazovaly. Oba zmínˇené problémy mˇela na svˇedomí odchylka, která vznikala zaokrouhlováním pˇri pˇrevodu souˇradnic viditelných mapových dílcu˚ z cˇ ísel s plovoucí desetinnou cˇ árkou na celá cˇ ísla. Dílce tedy byly vykreslovány v menší než plné velikosti, proto docházelo k jejich zmenšování, které zpusobovalo ˚ jejich neostrý vzhled. Menší velikost dílcu˚ také zpusobovala ˚ vznik mezer, které narušovaly celistvost mapy. Aby k tomuto problému nedocházelo, zmˇenil jsem systém výpoˇctu sourˇ adnic. V novém systému se na celá cˇ ísla pˇrevádˇejí pouze souˇradnice levé horní viditelné dlaždice a zárovenˇ dochází ke zjištˇení poˇctu viditelných dlaždic. Souˇradnice viditelných dlaždic lze pak získat jednoduchým inkrementováním koordinát levé horní dlaždice v rozsahu poˇctu viditelných dlaždic. 25
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Výsledkem této úpravy je souvislá a nezkreslená mapa a menší poˇcet volání externích funkcí bˇehem vykreslování dlaždic.
3.2
Vyhledávání cesty
Vyhledávání cesty v modRanˇe probíhá prostˇrednictvím online služby, konkrétnˇe se jedná o službu Google Directions. Pro pˇrístup k této službˇe jsem 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 Directions 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 úsekum ˚
∙
režim pro vyhledávání cesty pˇešky
∙
režim pro vyhledávání cesty veˇrejnou dopravou
∙
režim pro vyhledávání cesty na kole
Výše zmínˇený modul googlemaps zadávání tohoto parametru nepodporoval, musel jsem jej proto o tuto funkci rozšíˇrit. Typ dopravního prostˇredku pro vyhledávání je v modRanˇe nastavován automaticky podle aktuálního profilu. Režimy pro vyhýbání se dálnicím a zpoplatnˇeným úsekum ˚ lze 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 rˇ etˇezcu. ˚ Každý rˇ etˇezec muže ˚ obsahovat bud’to adresu nebo cˇ árkou oddˇelené geografické sourˇ adnice. Zpusoby ˚ zadávání je možné kombinovat, tzn. napˇríklad nastavit start na adresu a cíl na souˇradnice.
26
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
3.2.3
Zadávání startu a cíle v modRanˇe
V modRanˇe jsem implementoval nˇekoli ruzných ˚ zpusob ˚ u˚ zadá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 pruhledné ˚ menu, zobrazené pˇrímo v hlavní obrazovce s mapou. Zmínˇené menu umožnuje ˇ zadat start, cíl a provést hledání cesty. Start je indikován cˇ erveným terˇcíkem, cíl terˇcíkem zeleným. Po aktivaci tlaˇcítka route je nalezena a vykreslena výsledná trasa. Variantou tohoto zpusobu ˚ je zadávání startu a cíle, kdy jeden z tˇechto bodu˚ pˇredstavuje aktuá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ˇri vyhledávání cesty není nutné rozlišovat mezi adresou a souˇradnicemi, muže ˚ uživatel do adresního pole napsat geografické koordináty. Menu rovnˇež umožnuje ˇ pˇrímé vložení souˇradnic aktuální pozice. Další zpusob ˚ hledání cesty v modRanˇe pˇredstavuje hledání cesty z aktuální pozice k vybranému POI. Postaˇcí, když uživatel vybere POI ze seznamu, okamžitˇe je pak automaticky vyhledána a zobrazena nalezená cesta. 3.2.4
Informace dostupné o nalezené cestˇe
Informace k aktuálnˇe nalezené cestˇe jsou 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ý cˇ as potˇrebný pro absolvování cesty a zemˇepisné souˇradnice startu 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 souboru˚ ve formátu GPX [7] a souˇcasnˇe jsou naˇcteny do seznamu tras. Z nalezený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ˇe stáhnout mapové dílce. Souvislému hromadnému stahování dílcu˚ podél trasy se vˇenuje sekce 3.4.2.
27
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Obrázek 3.2: Ukázka výškového profilu trasy
3.3
Práce s trasami
Do modRany jsem implementoval rˇ adu funkcí pro práci s uloženými trasami. 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 formá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ˇet exportovat, a to vˇcetnˇe pˇrípadných zmˇ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 bodu, ˚ 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 cˇ asto velmi nerovnomˇernˇe a protože by tato skuteˇcnost mohla zpusobit ˚ znaˇcné zkreslení grafu výškového profilu, je nutné vypoˇcítat data o nadmoˇrské výšce pro pravidelné intervaly.
28
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Pˇri výpoˇctu jsem tedy postupoval tak, že jsem nejdˇríve spoˇcítal délku trasy, a pak jsem urˇcil 2001 bodu˚ v pravidelných rozestupech, které se rov1 nají 200 celkové vzdálenosti. Kromˇe prvního a posledního bodu, se každý z tˇechto nových pravidelnˇe umístˇených bodu˚ nachází mezi dvˇema body trasy se známou nadmoˇrskou výškou. Pomocí jednoduchého trigonometrického výpoˇctu lze pak odhadnout nadmoˇrskou výšku pro každý pravidelnˇe umístˇený bod. Výsledkem výpoˇctu je 200 dvojic údaju˚ o nadmoˇrské výšce a vzdálenosti od zaˇcátku trasy. Tato data se využijí pro vykreslení rovnomˇerného grafu, kde osa x reprezentuje vzdálenost a osa y nadmoˇrskou výšku trasy. 3.3.3
Zobrazení aktuálního výškového profilu
Výškový profil lze zobrazit také jako pruhledný ˚ informaˇcní ukazatel na obrazovce s mapou. Tento ukazatel ukazuje aktuální úsek výškového profilu s vyznaˇcenou momentální polohou. Délku zobrazeného úseku, velikost a pozici lze nastavit v konfiguraˇcním souboru. 3.3.4
Optimalizované vykreslování tras
Dlouhé trasy se mohou skládat až z nˇekolika set nebo i tisíc bodu˚ reprezentovaných souˇradnicemi. Pˇri vykreslování trasy potˇreba pˇrevést geografické koordináty pro všechny body na obrazovkové souˇradnice. Poté se postupnˇe všechny body všechny body propojí cˇ arou a ta se na obrazovce vykreslí pomocí vektorové knihovny cairo. Pˇri testování jsem zjistil, že nejnároˇcnˇejší operací je právˇe pˇrevod sourˇ adnic, režie vykreslování je oproti tomu minimální. Souˇradnice všech bodu˚ je nutné pˇrepoˇcítat pˇri každé zmˇenˇe pohledu cˇ i zoomu, což znaˇcnˇe zvyšuje ˇ nároky na výpoˇcetní prostˇredky. Casto jsou pˇritom zbyteˇcnˇe vypoˇcítávány obrazovkové souˇradnice bodu, ˚ které jsou mimo viditelnou oblast. Nároˇcnost vykreslování tras jsem se rozhodl snížit tak, že budou pˇrevádˇeny souˇradnic pouze u viditelných bodu. ˚ Rozdˇelil jsem tedy trasy na shluky bodu, ˚ které jsou geograficky blízko sebe. Pro každý shluk jsem pak nechal vypoˇcítat polomˇer a geografické koordináty stˇredu opsané kružnice. Pro rychlé zjištˇení, zda jsou body ve shluku viditelné, staˇcí pouze vypoˇcítat vzdálenost mezi stˇredem kružnice opsané kolem shluku a stˇredem obrazovky. Pokud je vzdálenost vˇetší než souˇcet polomˇeru kružnice kolem shluku a kružnice opsané kolem viditelné cˇ ásti mapy, není shluk vidˇet. Pokud 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. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Obrázek 3.3: Ukázka nˇekolika kružnic opsaných kolem shluku˚ oblasti. Souˇradnice bodu˚ v takovém shluku budou pˇrepoˇcteny a shluk vykreslen jako úsek trasy. Ve výsledku tak napˇríklad pro trasu ze Znojma do Brna, cˇ ítající 364 bodu, ˚ staˇcí vypoˇcítat vzdálenost k 12 bodum ˚ uprostˇred jednotlivých shluku˚ a pˇrevést souˇradnice bodu˚ ve viditelných shlucích. Pˇri bˇežné úrovni pˇriblížení jsou ve vˇetšinˇe pˇrípadu˚ vidˇet jeden až dva shluky, což rˇ ádovˇe snižuje poˇcet pˇrepoˇcítaných souˇradnic z nˇekolika set na nˇekolik desí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íklad výškový profil, a které také zpˇrístupnuje ˇ funkce pro práci s konkrétní trasou, napˇríklad funkci pro doplnˇení nadmoˇrské výšky.
3.4
Dávkové stahování mapových dílcu˚
Již puvodní ˚ navigaˇcní systém Rana [16] zvládal stahování aktuálnˇe zobrazených mapových dlaždic. Zejména bˇehem cestování však cˇ asto nebývá k dispozici pˇripojení k internetu, a proto jsem implementoval funkci, která umožnuje ˇ stáhnout dlaždice pro vybranou oblast cˇ i trasu už pˇred cestou. 3.4.1
Režimy dávkového stahování
Dávkové stahování dílcu˚ umožnuje ˇ stáhnout najednou velké množství dlaždic podle zadaných parametru. ˚ Lze zvolit cílovou oblast, polomˇer této ob30
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
lasti a rozsah úrovní pˇriblížení. Zadání tˇechto parametru˚ funguje na principu pruvodce, ˚ který uživatele provede pˇres zadání všech nutných parametru˚ až na hlavní obrazovku, kde lze spustit stahování nalezených dílcu. ˚ Cílovou oblastí muže ˚ být oblast kolem aktuálních GPS souˇradnic, oblast kolem stˇredu aktuálního pohledu na mapu nebo oblast podél vybrané trasy. Polomˇer cílové oblasti lze zadat v rozmezí 5 až 160 km kolem stˇredového bodu. Pokud jsou dílce stahovány podél trasy, platí tento polomˇer pro všechny její body. Zadání rozsahu pro úrovnˇe pˇriblížení se odvíjí od aktuálnˇe nastavené úrovnˇe pˇriblížení. Pokud má napˇríklad uživatel na mapˇe nastavenou úrovenˇ pˇriblíženi 14 a v pruvodci ˚ nejdˇríve zvolí „+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ílcu˚ se sestává z nˇekolika etap. Nejdˇríve algoritmus zjistí souˇradnice dílce, na kterém se nachází zvolený výchozí bod. Potom jsou zjištˇeny souˇradnice všech dlaždic ve zvoleném polomˇeru kolem tohoto dílce. Vzhledem k tomu, že souˇradnice sousedních dílcu˚ lze získat 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ˇe po spirále kolem centrální dlaždice. Tato spirála se vždy po dokonˇcení obˇehu rozšiˇruje, dokud není dosaženo požadovaného polomˇeru. Výsledkem jsou souˇradnice dílcu˚ ve cˇ tvercové oblasti, kde je vzdálenost od stˇredu do bodu ležícího v polovinˇe strany cˇ tverce rovna zadanému polomˇeru. 3.4.2
Souvislé pokrytí nespojité trasy
V pˇrípadˇe získávání souˇradnic dílcu˚ pro trasu, je tento postup aplikován na všechny body trasy. Nalezené koordináty se bˇehem výpoˇctu ukládají do setu, takže body, jejichž oblasti pokrytí se pˇrekrývají, negenerují duplicitní souˇradnice. Nˇekteré internetové navigaˇcní služby cˇ asto generují trasy s dlouhými rozestupy mezi body, hlavnˇe v pˇrípadˇe rovných úseku. ˚ Proto je tˇreba mezi body, které jsou od sebe vzdáleny víc než je dvojnásobek zvoleného polomˇeru, vložit body další, jinak by vznikaly oblasti nepokryté staženými mapovými dílci. Vkládání tˇechto doˇcasných bodu˚ probíhá rekurzivnˇe metodou pulení ˚ intervalu, ˚ dokud není dosaženo rozestupu menšího než je dvojnásobek polomˇeru. Doˇcasné body slouží pouze pro výpoˇcet nepˇrerušeného pokrytí trasy a nepromítají se zpˇetnˇe do zdrojové trasy.
31
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
3.4.3
Doplnˇení dlaždic z dalších úrovní pˇriblížení
Tento zpusob ˚ zjišt’ování koordinátu˚ dlaždic probíhá vždy jen pro jednu úrovenˇ pˇriblížení ze zadaného rozsahu. Takto nalezené dlaždice slouží jako vstup pro výpoˇcet dlaž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ˇcet souˇradnic za úˇ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ých ke stažení, odstranˇeny ty, které již existují v adresáˇrové struktuˇre s 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í prubˇ ˚ eh pˇri vˇetším poˇctu dlaždic kvuli ˚ mnoha pˇrístupum ˚ k souborovému systému trvá pˇríliš dlouho. Po zjištˇení koordinát všech dlaždic podle zadaných parametru˚ dojde k zobrazení menu pro dávkové stahování dlaždic. Menu umožnuje ˇ zmˇenu 2 zadaných parametru˚ , zjištˇení celkové velikosti dlaždic urˇcených ke 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 muže ˚ provádˇet jiné cˇ innosti, zatímco tyto úlohy probíhají na pozadí. U obou tˇechto úloh se prubˇ ˚ ežnˇe zobrazuje, kolik dlaždic z celkového poˇctu již bylo zpracováno. Jsou také pˇreskoˇceny již 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ílcu˚
V Ranˇe byly 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ˇradnic uloženého dílce. Tento zpusob ˚ ukládání dílcu˚ je sice jednoduchý, pˇrináší však celou rˇ adu nevýhod. Práce s adresáˇrem, který muže ˚ obsahovat rˇ ádovˇe desetitisíce souboru, ˚ je složitá a cˇ asovˇe nároˇcná. Uložení všech dílcu˚ v jednom adresáˇri také znemožnuje ˇ sdílení mapových dílcu˚ s TangoGPS nebo podobným softwarem, který dílce ukládá do adresáˇrové struktury. Kompatibilita dílcu˚ s TangoGPS byla nejˇcastˇejší otázkou, která mi byla kladena na konferenci Openmobility, kde jsem modRanu pˇredstavil. 2.
po zmˇenˇe parametru˚ dojde k pˇrepoˇctu souˇradnic dílcu˚
32
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Upravil jsem tedy systém pro ukládání a naˇcítání dílcu˚ po vzoru TangoGPS. Tento zpusob ˚ ukládání dílcu˚ spoˇ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 zpusob ˚ ukládání dílcu˚ v TangoGPS byl pˇrevzat z OpenStreetMap. Po této úpravˇe muže ˚ modRana sdílet spoleˇcný adresáˇr pro dílce s TangoGPS a dalším softwarem, používajícím stejnou adresáˇrovou strukturu. Dílce stažené pomocí pokroˇcilého dávkového stahování v modRanˇe lze tedy napˇríklad zobrazit 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ý navigaˇcní systém OmGPS [21]. Využil jsem toho, že grafická knihovna Cairo [20], používaná pro vykreslování mapy, podporuje nastavení pruhlednosti ˚ pro vykreslovaná obrazová data. Pˇri každém pˇrekreslení mapy proto staˇcí pouze vykreslit pˇres sebe místo jedné dlaždice dlaždice dvˇe s použitím pruhlednosti. ˚ První dlaždice je pˇritom vykreslena bez pruhlednosti ˚ a tvoˇrí pozadí, druhá dlaždice již má nastavenou pruhlednost ˚ a tvoˇrí tak pˇrekrývající vrstvu. Pˇríkladem použití této funkce muže ˚ být pˇrekrytí vrstvy složené ze satelitních snímku, ˚ která neobsahuje žádné popisky, vrstvou obsahující klasickou 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ýsledku˚ lze dosáhnout pˇri použití pˇrekrývací vrstvy, která obsahuje pruhledné ˚ 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 úrovenˇ pruhlednosti ˚ pˇrekrývající vrstvy v krocích 3 od 25 do 100% . Ukázka pˇrekrytí mapových vrstev je na obrázku 3.4. 3.
100% slouží pro použití s pruhlednou ˚ vrstvou
33
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Obrázek 3.4: Ukázka pˇrekrytí satelitní vrstvy pruhlednou ˚ vrstvou se silniˇ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 navigaˇcní informace. Umožnují ˇ napˇríklad zjištˇení nadmoˇrské výšku vybraných souˇradnic, nalezení cesty mezi dvˇema body nebo zajímavých míst blízko aktuální pozice. 3.7.1
Doplnˇení výškových dat k trase
Funkce pro doplnování ˇ výškových dat využívá služby Geonames [37], tato služba pro zadané souˇradnice vrátí nadmoˇrskou výšku. Použil jsem konkrétnˇe API, které umožnuje ˇ zjistit nadmoˇrskou výšku až 20 souˇradnic naráz. Tato metoda je výraznˇe rychlejší 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ˇet do GPX. Doplnˇení nadmoˇrské výšky tedy staˇcí provést pouze jednorázovˇe a výsledný GPX soubor s výškovými daty je pak možné použít i v jiných navigaˇcních systémech. 3.7.2
Hledání POI pomocí Google Local Search
Služba Google Local Search [32] umožnuje ˇ vyhledávání POI v závislosti na geografické poloze. V kombinaci s použitím aktuální informace o poloze získané z GPS lze vyhledat nejbližší body zájmu. Dotaz na na nejbližší restaurace kolem souˇradnic nacházejících se v oblasti Brna pak napˇríklad vypadá takto: 34
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Restaurant near 49.200000,16.616667. ModRana využívá pro pokládání tˇechto dotazu˚ prostˇrednictvím API Googlu modul GoogleMaps [35]. Tento modul pˇrevede výsledek dotazu, JSON1 objekt, na standardní datový typ slovník jazyka Python. Pokud budou nalezeny 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 sourˇ adnice, vˇetšinou jsou k dispozici také adresa a jedno cˇ i více telefonních cˇ ísel. Výsledky dotazu jsou zobrazeny v listovatelném seznamu v podobˇe názvu a vzdálenosti od aktuální pozice. Maximální poˇcet výsledku˚ lze nastavit v rozmezí 8 až 32, dotazy s menším maximálním poˇctem výsledku˚ vrací Google výraznˇe rychleji. Výbˇer jednoho z výsledku˚ zpusobí ˚ pˇrechod do detailního menu pro tento výsledek. Toto menu pak zobrazuje dodateˇcné informace o výsledku (adresa, telefonní cˇ ísla, souˇradnice) a umožnuje ˇ ulož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 cˇ erveným bodem s volitelnou popiskou, zmáˇcknutí popisky pak provede pˇrechod do detailního menu výsledku, ke kterému popiska patˇrila. Zvýraznˇení výsledku se projeví modrým kruhem kolem bodu, který k nˇemu patˇ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 pomocí tlaˇcítka v hlavním vyhledávacím menu.
3.8
N900
Linuxový mobilní telefon N900 od spoleˇcnosti Nokia jsem pro modRanu zvolil jako hlavní cílovou platformu, protože se podle mého názoru v soucˇ asnosti jedná o nejperspektivnˇejší kombinaci zaˇrízení a operaˇcního systému. Pˇrestože N900 obsahuje do znaˇcné míry standardní linuxovou distribuci, bylo nutné provést urˇcité úpravy specifické pro toto zaˇrízení. Tyto úpravy byly provádˇeny tak, aby se pˇri zadání rˇ etˇezce n900 jako argumentu pˇri spuštˇení samoˇcinnˇe aktivovaly, aby byla zachována multiplatformnost a flexibilita modRany. 1.
JavaScript Object Notation
35
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
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ˇril instalaˇcní balíˇcek vyhovující specifický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ým aliasem "python"pouze verze 2.3, která je pro provoz modRany již pˇríliš zastaralá. Spouštˇecí skript také nastavuje první argument pˇri spuštˇení na rˇ etˇezec n900, takže modRana použije specifický režim4 urˇcený pro N900. Struktura balíˇcku rovnˇež zajišt’uje instalaci do adresáˇre /opt v souladu s doporuˇcením pro programy s velikostí nad 500 KB. Souˇcástí balíˇcku je také skript postrm, podporující jak bˇežné odstranˇení programu se zachováním konfiguraˇcních souboru, ˚ tak kompletní odstranˇení pˇri použití parametru –purge. 3.8.2
Podpora pro Location API
N900 nepoužívá pro pˇrístup k 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áˇr pro ukládání mapových dílcu˚
Úložný prostor je na N900 rozdˇelen do nˇekolika oddílu˚ [39]: ∙
koˇrenový adresáˇr / je na oddílu s pˇribližnˇe 100 MB volného místa
∙
adresáˇr /opt, doporuˇcovaný pro instalaci aplikací vˇetších než 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ílcu˚ pro velké oblasti se muže ˚ pohybovat v rˇ ádu gigabytu. ˚ Do konfiguraˇcního souboru jsem tedy pˇridal novou sekci, jejíž obsah se naˇcte pouze tehdy, když je modRana spuštˇena s argumentem n9005 . Právˇe v této sekci je cesta k adresáˇri s 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ího souboru s nastaveními pro N900 místo obecné sekce 5. zadání tohoto parametru zajišt’uje instalaˇcní balíˇcek pro N900
36
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Tuto hodnotu lze samozˇrejmˇe libovolnˇe mˇenit a uložit napˇríklad adresáˇr s dílci na pamˇet’ovou kartu. Použití samostatné sekce pro N900 v konfiguraˇcním souboru umožnuje ˇ distribuovat modRanu pro ruzné ˚ platformy s jediným konfiguraˇcním souborem. V budoucnu takto lze rˇ ešit specifická nastavení pro další zaˇrízení.
3.9
Neo FreeRunner
Na popud úˇcastníku˚ konference Openmobility jsem pro Neo FreeRunner vytvoˇril instalaˇcní *.ipk balíˇcek. Protože Rana, na které je modRana založená, byla puvodnˇ ˚ e urˇcená pro FreeRunner, jsou všechny závislosti potˇrebné pro bˇeh aplikace splnˇeny, a uživatelé na FreeRunneru proto nemusejí doinstalovávat další balíˇcky. Jako cílová distribuce byla zvolena SHR [2], jelikož se zˇrejmˇe v souˇcasné dobˇe jedná o nejrozšíˇrenˇejší distribuci pro FreeRunner.
3.10 Rozšíˇrená podpora mapových podkladu˚ Puvodní ˚ Rana podporovala pouze mapové dílce projektu OpenStreetMap, OpenCycleMap a OpenAerialMap a vektorové podklady vytváˇrené pomocí PyRender. 3.10.1 Úpravy Z puvodní ˚ verze jsem odstranil podporu OpenAerialMap, jelikož tento projekt zˇrejmˇe již mapové dílce nenabízí. Podpora OpenCycleMap obsahovala staré nefungující url, po doplnˇení aktuálního url ale zaˇcala opˇet fungovat. Podpora vykreslování vektorových mapových podkladu˚ v Ranˇe je 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 vykreslování vektorové mapy, již neprobíhá, a proto jsem se tedy rozhodl podporu vektorových mapových podkladu˚ deaktivovat. 3.10.2 Rozšíˇrení podporovaných mapových podkladu˚ V souladu se zadáním jsem zkoumal možnost rozšíˇrení podporovaných mapových podkladu˚ o další zdroje. Postupnˇe se mi podaˇrilo integrovat mapové dílce z Google Maps, Virtual Earth a Yahoo Maps.
37
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
Potenciální uživatelé této funkcionality by si však mˇeli být vˇedomi toho, že tyto služby ve svých podmínkách použití zakazují pˇrímý pˇrístup k mapovým dílcum. ˚ 3.10.3 Google Maps, Google Satelite Google Maps používají cˇ tvercové mapové dílce ve formátu PNG. Adresování tˇechto dílcu˚ [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ˇcet dílcu˚ smˇerem od levého okraje mapy, 𝑦 poˇcet dílcu˚ smˇerem od vrchního okraje mapy a 𝑧 znaˇcí úrovenˇ pˇ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ˇe pˇriblížení 12 ve formátu PNG, úrovnˇe 11 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ˇradnice se liší od OpenStreetMap a Google Maps v použitém 𝑦 a 𝑧 parametru a lze je vypoˇcítat takto: 𝑦 𝑌 𝑎ℎ𝑜𝑜 = ((2𝑧 ) − 1) − 𝑦 𝑧 𝑌 𝑎ℎ𝑜𝑜 = 𝑧 − 1 Zde jsou 𝑦 a 𝑧 souˇradnice podle OSM/Google a 𝑦 𝑌 𝑎ℎ𝑜𝑜 a 𝑧 𝑌 𝑎ℎ𝑜𝑜 jsou jejich ekvivalenty pro použití v URL Yahoo Maps dílcu. ˚ Yahoo Satelite používá pouze JPEG dílce, adresování je stejné jako u Yahoo 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ítat z bˇežných 𝑥, 𝑦, 𝑧 souˇradnic, používaných v pˇrípadˇe projektu˚
38
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
OpenStreetMap a Google Maps. Identifikátor v URL následuje za písmenem 𝑟, které znaˇcí klasické mapové 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ˇred Quadkey identifikátorem a pˇrípona jpg. Satelitní snímky obsahují vykreslenou silniˇcní sít’, která je však, alesponˇ ˇ na území Ceské republiky, vuˇ ˚ ci silnicím na snímcích mírnˇe posunutá.
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ˇe kódu navigaˇcního systé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ˇr NLP zapujˇ ˚ cila školní Neo FreeRunner. Díky tomu, že jsem mˇel Neo 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ˇekolik navigaˇcních systému, ˚ popsaných v první kapitole. Díky tomu, že jsem mˇel k dispozici mobilní linuxové zaˇrízení s GPS pˇrijímaˇcem, mohl jsem provádˇet testy navigaˇcního softwaru a modRany pˇrímo v terénu. Výsledkem tˇechto terénních testu˚ je napˇríklad vylepšený algoritmus pro automatické stahování dílcu, ˚ který vznikl jako reakce na mé zkušenosti se stahováním dílcu˚ prostˇrednictvím GPRS. Neo FreeRunner jsem také použil k poˇrízení NMEA logu, ˚ které jsem pozdˇeji souˇcasnˇe s 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ˇ ínské provenience, protože se v nˇekterých parametrech podobá N900. Smart Q7 má stejné rozlišení obrazovky jako Nokia N900, tedy 800 na 480 pixeluk, ˚ 39
ˇ 3. I MPLEMENTACE NAVIGA CNÍHO SYSTÉMU MOD R ANA
a jeho linuxový operaˇcní systém je stejnˇe jako Maemo 5 založen na Debianu, v tomto pˇrípadˇe se konkrétnˇe jedná o modifikované Ubuntu 9.10. 3.11.3 Maemo 5 SDK Pro testování funkˇcnosti modRany v operaˇcním systému Maemo 5 jsem používal prostˇredí Scratchbox, obsažené v Maemo 5 SDK, ve kterém lze otestovat funkˇcnost aplikace s konfigurací operaˇcního systému, podobnou N900. Scratchbox mi také pomohl urˇcit, které konkrétní balíˇcky je nutné nastavit jako dependence pro balíˇcek s modRanou. Ve Scratchboxu však nejsou simulovány všechno aspekty reálného hardwaru N900. Location API je sice napˇríklad k dispozici, nevrací však žádné informace o poloze. Pro testování podpory Location API v modRanˇe jsem se tedy musel obrátit na uživatele skuteˇcných N900.
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ˇ ásti pˇrednášky jsem provedl pˇrehled linuxových navigaˇcních systému˚ a v její druhé cˇ ásti jsem pˇredstavil projekt modRana. Souˇcástí prezentace 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 pokynu˚ vedoucího bakaláˇrské práce jsem nechal provést aplikaci tˇechto fixu˚ na fakultní FreeRunner.
3.13 Uživatelé modRany S testováním ModRany na platformˇe N900 mi pomáhal vedoucí mé bakaláˇrské práce RNDr. Aleš Horák, Ph.D.. Spoleˇcnˇe se nám podaˇrilo ovˇerˇ it funkˇcnost implementace Location API, díky jeho upozornˇení jsem docílil ostˇrejšího zobrazení mapy. Na jeho podnˇet jsem rovnˇež vytvoˇril zobrazování profilu trasy. Po pˇredstavení modRany na konferenci Openmobility mne zaˇcali kontaktovat uživatelé s dotazy a pˇripomínkami. Díky jejich zpˇetné vazbˇe jsem napˇríklad vylepšil práci s vlákny nebo implementoval nastavení cesty k adresáˇri s trasami v konfiguraˇcním souboru. 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í navigaˇcní systém modRana. Pˇri návrhu tohoto systému jsem se inspiroval funkcemi již existujících navigaˇcních systému, ˚ vlastními nápady i podnˇety uživatelu. ˚
Výhled do budoucna Pˇri návrhu modRany jsem se setkal s mnoha funkcemi, které pˇrímo nespadaly do zadání bakaláˇrské práce, pˇresto by však mohly tento navigaˇcní systém výraznˇe obohatit. Tyto funkce bych v budoucnu rád doplnil.
4.1
Podpora více poskytovatelu˚ online služeb
Google a Geonames nejsou jedinými poskytovateli online navigaˇcních služeb. Do modRany by se tedy v budoucnu hodilo doplnit další poskytovatelem, 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 poskytovatelu, ˚ nebo by bylo možné kombinovat a porovnávat výsledky z více zdroju˚ .
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 podkladu˚ [14]. Ke stažení je k dispozici 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 muže ˚ pˇri nedostupnosti 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ˇelo být složité.
41
ˇ 4. Z ÁV ER
4.3
Integrace funkcí specifických pro platformu
Cílem modRany je multiplatformnost, je však vhodné využívat specifický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 cˇ i dokonce celou QWERTY klávesnici. ModRanu lze samozˇrejmˇe provozovat i na linuxových PC, která klávesnici v drtivé vˇetšinˇe pˇrípadu˚ mají. Do budoucna by tedy bylo vhodné doplnit podporu pro využití klávesnice pro ovládání funkcí modRany, vˇcetnˇe možnosti uživatelského mapování tlaˇcítek pro jednotlivé funkce. 4.3.2
Akcelerometr
Nˇekteré mobilní linuxové pˇrístroje, napˇríklad Neo FreeRunner cˇ i Nokia N900, obsahují integrovaný digitální akcelerometr, který mˇerˇ í zrychlení, jemuž je zaˇrízení vystaveno, a který dokáže urˇcit orientaci zaˇrízení v gravitaˇcním poli. Akcelerometr by modRana mohla využít napˇríklad pro 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ˇcilo otoˇ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ímku˚ by tak bylo možné vytvoˇrit virtuá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íklad graf, porovnávající zrychlení a cestovní rychlost v cˇ ase, 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ˇc nebo jiný hardware pro urˇcení geografických souˇradnic, lze implementovat odhad polohy podle aktuální IP adresy.
42
ˇ 4. Z ÁV ER
4.4
Podpora dalších formátu˚ pro záznamy trasy
ModRana využívá pro naˇcítání a tvorbu souboru˚ GPX 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"Google Earth. Formát NMEA je pak výstupem nˇekterých GPS jednotek a lze jej získat i z gpsd. V budoucnu bych mohl implementovat podporu pro tyto a další formáty.
43
Literatura [1] Frederik Ramm and Jochen Topf. OpenStreetMap: Using and Enhancing 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]., [citová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 váno 6. 4. 2010]. Dostupný z WWW: .
tras[online].,
[cito-
[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]., [citováno 28. 4. 2010]. Dostupný z WWW: .
44
ˇ 4. Z ÁV ER
[11] OpenStreetMap, svobodné mapové podklady[online]., váno 6. 4. 2010]. Dostupný z WWW: .
[cito-
[12] TangoGPS software of choice on Touch Book[online]., [citováno 29. 4. 2010]. Dostupný z WWW: . [13] Navit - Car navigation system[online]., [citováno 25. 4. 2010]. Dostupný z WWW: . ˇ [14] CloadMade Downloads - extrakty dat pro Ceskou Republiku, [citováno 22. 4. 2010]. Last maps update: 06 April 2010 Dostupný z WWW: . [15] Navit’s wiki - podporované mapové podklady[online]., [citová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]., [citová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 modified 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 ÁV ER
[21] OmGPS, GPS navigaˇcní systém pro OpenMoko Neo FreeRunner[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ˇe Maemo[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]., váno 28. 4. 2010]. Dostupný z WWW: .
[cito-
[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 modified on 25 March 2009. Dostupný z WWW: . [29] Python Programming Language – váno 27. 4. 2010]. Dostupný z WWW: .
Official
Website.,
[30] PyPI: Python Package Index., [citováno 27. 4. 2010]. z WWW: .
[cito-
Dostupný
46
ˇ 4. Z ÁV ER
[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 lokalitˇ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]. Dostupný z WWW: . [35] GoogleMaps, popis popis modulu pro práci s mapovými informacemi spoleˇcnosti Google[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ˇradnic[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]., [citováno 20. 4. 2010]. Last modified 31 March 2010. Dostupný z WWW: . [40] OpenStreetMap Wiki, popis souˇradnic dílcu[online]., ˚ [citováno 18. 4. 2010]. Last modified on 15 April 2010. Dostupný z WWW: 47
ˇ 4. Z ÁV ER
. [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]. z WWW: .
Dostupný
[43] Openmobility 2010 Konference o otevˇrených mobilní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íloha A
Snímky obrazovky Popis rozhraní měřítko tlačítko pro přechod do režimu plné obrazovky
statistika rychlosti
tlačítko centrování je zároveň ukazatelem k aktuální pozici
aktuální rychlost
profil trasy
tlačítko pro přiblížení mapy
tlačítko pro vstup do menu zobrazuje aktuální profil
tlačítko pro oddálení mapy
ukazatel pozice ukazuje směr jizdy
mapa
Obrázek A.1: Anotovaná ukázka uživatelského rozhraní pro cyklisty
49
A. S NÍMKY OBRAZOVKY
čtverec
480x640 240x320
800x600
Obrázek A.2: Pˇrizpusobení ˚ ruzným ˚ pomˇerum ˚ stran a rozlišením
50
A. S NÍMKY OBRAZOVKY Ukázka dalších profilu˚ s ruznˇ ˚ e nakonfigurovaným rozhraním
Obrázek A.3: Pˇríklad rozhraní s ukazatelem cˇ asu pro motoristy
Obrázek A.4: Pˇríklad jednoduchého rozhraní pro pˇeší
Obrázek A.5: Hlavní menu je stejnˇe jako zbytek modRany pˇrizpusobeno ˚ pro ovládání pomocí prstu˚
51
A. S NÍMKY OBRAZOVKY 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. S NÍMKY OBRAZOVKY
Obrázek A.9: Pˇríklad vykreslení uložené trasy
Ukázka dávkového stahování mapových podkladu˚
Obrázek A.10: Výbˇer cílové oblasti
Obrázek A.11: Výbˇer polomˇeru oblasti
53
A. S NÍMKY OBRAZOVKY
Obrázek A.12: Výbˇer poˇctu nižších úrovní
Obrázek A.13: Výbˇer poˇctu vyšších úrovní
Obrázek A.14: Menu pro dávkové stahování dlaždic
54
A. S NÍMKY OBRAZOVKY
Obrázek A.15: Stahování i zjišt’ování celkové velikosti dílcu˚ muže ˚ probí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. S NÍMKY OBRAZOVKY
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. S NÍMKY OBRAZOVKY
Obrázek A.20: Detail trasy nalezené pro pˇeší profil
Obrázek A.21: Ukázka zobrazení nalezené trasy pˇri vˇetším pˇriblížení Vyhledávání POI
Obrázek A.22: Menu pro vyhledávání POI
57
A. S NÍMKY OBRAZOVKY
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. S NÍMKY OBRAZOVKY 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. S NÍMKY OBRAZOVKY
Ukázka pˇrekrytí mapových vrstev
Obrázek A.28: Vrstva T@H s 50% pruhledností ˚ pˇrekrývá vrstvu Google Satelite
Obrázek A.29: Pruhledná ˚ vrstva Google overlay pˇrekrývá vrstvu Yahoo Satelite
60
A. S NÍMKY OBRAZOVKY
Ukázka modRany na ruzných ˚ platformá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íloha B
Obsah CD Pˇriložené CD obsahuje: ∙
aktuální balíˇcky modRany pro Neo FreeRunner, Ubuntu/Debian, N900 a všeobecnˇe použitelný archív v adresáˇri modRana_balicky; k dispozici je také shellový skript pro tvorbu balíˇcku˚ pˇrímo ze SVN repozitáˇre
∙
instalaˇcní balíˇcky a zdrojové kódy nˇekterých testovaných navigaˇcních systému˚ 1 v adresáˇri dostupne_navigacni_systemy
∙
moji prezentaci z konference Openmobility 2010 v adresáˇri Openmobility2010_prezentace
∙
NMEA logy, které jsem používal spoleˇcnˇe s gpsfake [42] k simulaci GPS pˇri vývoji modRany, v adresáˇri ostatni
∙
video, které názornˇe pˇredvádí, jak v modRanˇe funguje 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ˇechto programu˚ lze však nainstalovat pˇrímo z distribuˇcních repozitáˇru˚
62