Sledujte nás na YouTube

VirtualGPS: Software pro určování pozice bez GPS modulu (smartphone i Pocket PC)

-I když většina dnešních komunikátorů disponuje GPS přijímačem, najdou se i výjimky, u kterých si na navigační funkce prostě musíte nechat zajít chuť. Jedno řešení se ale přece jenom nabízí. Není sice tak přesné, jako klasická GPS navigace, ale ve spoustě případů může dostačovat. Řeč není o ničem jiném, než o určování pozice na základě informací z BTS stanice. My se v dnešním článku podíváme na aplikaci VirtualGPS od společnosti KamLex Engineering Solutions, která umí určit polohu telefonu i bez GPS. Orientuje se totiž právě podle toho, jaké BTS (GSM vysílače) vidí váš telefon. Tento nápad jako první komerčně uvedly v život Google Maps zabudované v Apple iPhone. Pár měsíců poté se začala podpora objevovat i v ostatních telefonech a to přes rozšíření jednoho z AT příkazů, který v nové specifikaci umí vrátit i identifikátory BTS. Telefonů, které by ovšem tento příkaz v rozšířené verzi měly a uměly tudíž s Google Maps spolupracovat je zatím poskrovnu a tak jsem se zatím spíše setkal s tím, že funkce My Location (Moje pozice) nebyla podporována.

Rozhodně tento příkaz neumí můj starší smartphone T-Mobile SDA. Jak jsem ale záhy zjistil netřeba věšet hlavu. Procesor Texas Instruments OMAP 730, který na sobě integruje ARM jádro a DSP jádro zajišťující GSM komunikaci, má totiž mezi těmito procesory sdílenou část paměti a přímo z ní lze vyčíst všechny potřebné informace. KamLex si toto uvědomil a tak jeden z režimů podporovaných VirtualGPS je právě přímý přístup do paměti a přečtení hodnot z ní.

Informace: Tento článek původně vyšel na autorově blogu i-logout.cz.

Jak to funguje prakticky? Pustíte VirtualGPS, ono se připojí na Internet a kontaktuje CellID databázi (případně použije hodnoty v lokální cache, pokud je tam najde). KamLex nabízí editor souborů s CellID cache, takže je možné si přidat vlastní souřadnice BTS vysílačů. Zjistí z ní polohy BTS, které vidíte, a podle toho vypočítá a vrátí vaše souřadnice na virtuálním COM portu v standardním NMEA protokolu. V Google Maps si posléze vyberete v nastaveních port, na kterém je GPS a Google Maps se k němu připojí. Tlačítko 0 v Google Maps pak na mapě ukáže vaší polohu. Prosté a jednoduché.

Video: První spuštění VirtualGPS

Udělal jsem po Praze několik pokusů a vesměs jsem byl spokojen. Určování polohy na tomto principu samozřejmě nelze použít na věci jako je geocaching nebo klasická navigace, ale pokud se potřebujete zorientovat na mapě, tak je příjemné, když nemusíte zadávat do vyhledávání vaši současnou polohu, protože ji (byť s nepřesností v řádech stovek metrů) máte. Podle následujících obrázků si můžete udělat sami představu, jak VirtualGPS funguje. Vlevo nahoře je vždy VirtualGPS, vpravo nahoře Google Maps a dole pak obrázek z Mapy.cz, kde je modře označené skutečné místo, kde jsem polohu zjišťoval a červeně poloha, kterou udala VirtualGPS.

-
První zjišťování polohy proběhlo při snídani v McDonnald’s na Václavském náměstí. Google Maps ukázaly, že se nacházím u Národního muzea, což je zhruba 100m odsud, prakticky stačí jen přejít silnici.

-
Podruhé jsem zkusil určit polohu cestou do práce. Tady už byla nepřesnost poměrně větší, zhruba půl kilometru. Zřejmě díky husté zástavbě vysokými činžáky telefon nepřijímal tolik BTS, kolik je třeba pro přesnější výpočet.

-
Potřetí jsem vybral samotný kraj Prahy – Kbely. Tady mně přesnost celkem překvapila, necelých 200 metrů vedle.

VirtualGPS má dvě varianty – Lite, která je zdarma a umí určovat polohu pouze podle veřejné CellId databáze, a pak verzi Pro, která má přístup do placené databáze BTS, umí navíc ještě i triangulaci podle WiFi sítí a poskytuje systému intermediate driver, díky kterému může k GPS přistupovat více aplikací najednou. Lite verze je zdarma, Pro verze stojí 12 USD. Odkazy pro stažení verze pro smartphone i Pocket PC naleznete na webu výrobce. Pro verzi si můžete po dobu jednoho týdne vyzkoušet ze všemi podporovanými funkcemi, do programu stačí zadat tento trial klíč 7928511.

Logout

11 komentářů

  1. mdop (neregistrovaný)

    …rozšíření jednoho z AT příkazů…
    To by mě zajímalo, co je to za AT příkaz. Rozhodně na Symbianu ani v javě se BTS přes AT nezíská. Pouze u WM je to snad jako jedna z posledních požností u starých radií, jinak se normálně používá RIL.

  2. Logout (neregistrovaný)

    jde o AT+CREG? command, ktery na nekterych telefonech umi vratit misto dvou cisel ctyri, pricemz jedno z tech dvou cisel navic je prave CellID v hexa podobe. da se o tom trochu neco vygooglit.
    Jestli tenhle command MIDletove GoogleMaps nepouzivaji, pak jedine dobre. V roce 2007, kdy jsem po tom patral bylo na Google Groups v nekolika forech receno, ze kdyz telefon neumi odpovedet na AT+CREG? ctyri cisla, pak neumi ani My Location.

  3. carnero (neregistrovaný)

    Z těch Tvých několika pokusů to vypadá dost tragicky. Používám TrackMe (a databázi Google Maps) a při pohybu po Praze se to jen výjimečně netrefí o více než 100 metrů. Největší problém tomu dělají stanice metra, kde jedna BTS (CellID) je v několik stanicích zároveň a celé to zjišťování polohy je silně zmatené.

  4. Logout (neregistrovaný)

    No, jak bylo receno v clanku: Lite verze saha jen do nejake omezene verze CellId databaze. Navic neni problem v editoru si udelat vlastni databazi a tu dat do telefonu.
    Pro mne to ale hlavni ucel splnuje – nemusim pri kazdem spusteni Google Maps zadavat ze jsem v Praze.

  5. Logout (neregistrovaný)

    Jen jedna takova otazka, protoze jsem to na strance TrackMe nenasel: umi fungovat jako virtualni GPS modul?

  6. Lakva (neregistrovaný)

    >Orientuje se totiž právě podle toho, jaké BTS (GSM vysílače) vidí váš telefon. Tento nápad jako první komerčně uvedly v život Google Maps zabudované v Apple iPhone.
    Tuto část si dovolím poopravit…
    Na Symbianu i WM byly už před lety v různých podobách aplikace označované jako MiniGPS, které využívaly sledování dostupných BTS k přepínání vyzváněcích profilů.
    Zjednodušené MiniGPS existovalo dokonce i jako patch do firmwaru Siemensů s uzavřeným OS!!! (používal jsem na M75)
    To ovšem nebylo určeno k průmětu polohy do mapy, přestože se to dalo s trochou snahy použít. Bylo ovšem nutné vypsat si připojené BTSky (čísla), najít si je v seznamu (neoficiálním) umístění BTS jednotlivých operátorů – takže jste měli několik adres, které bylo třeba ještě najít v mapě (samozřejmě v aplikaci na telefonu ) a podle toho odhadnout vlastní polohu.
    Nic pro běžného BFU, ale sám jsem tuto metodu použil nejméně 2x.
    Ztěžovali to naši operátoři, kteří seznamy svých BTS nezveřejňují (nebo alespoň nezveřejňovali – nevím jak teď).
    Pro německé O2 jsou ale k dispozici seznamy BTS i s GPS souřadnicemi, takže některé aplikace toto uměly využít k přibližnému určení polohy a průmětu do mapy. Například český javový TrekBuddy, kde je možno jako zdroj lokačních dat zvolit mimo jiné „O2 Germany“ – přesnost je pak samozřejmě podstatně nižší než u GPS, ale funguje to… a fungovalo to ještě před tím, než apple o nějakém phonu vůbec začal mluvit…

  7. Logout (neregistrovaný)

    O patchi pro Siemens telefony vim, kdyz jsem to tenkrat videl, neveril jsem tomu, ze je neco takoveho mozne
    Nicmene v mapach jsem to vazne nikde pred Google Maps nevidel, takze porad je povazuju za prvni, kteri BTS polohu pouzili k urceni polohy telefonu na mape.

  8. Lakva (neregistrovaný)

    Info třeba zde http://wiki.trekbuddy.net/index.php/Configuration#Location
    Ve které verzi se to objevilo poprvé, to už fakt nevím
    Možná Kruch (autor TB) by to někde v záznamech našel… Ale jsem si na 99% jist, že to bylo před oznámení iPhonu a víc než jist, že dlouho dlouho před jeho uvedením na trh.
    A taky mám takovej pocit, že ani TB nebyl první… Ten kdo s tím návrhem na fóru přišel, psal něco ve smyslu „jako je to v…“, i když ta starší aplikace snad pouze vypisovala souřadnice s přesností asi na minuty a vůbec neuměla mapy.
    Ale je to fakt dlouho!!

  9. marek1 (neregistrovaný)

    Musi byt tento program stale pripojen na internetu ?
    Jak zmenim hodnotu COM portu?
    Lze to pouzit s mapou treba TOM TOMA?

  10. Logout (neregistrovaný)

    Pokud program najde vsechny viditelne BTS v lokalni CellId cache ulozene v telefonu, pak se na Internet pripojovat nemusi dokonce vubec. Pripojuje se jen aby zjistil polohu vysilacu, ktere v cache nema.
    COM port se vybira automaticky, na webu KamLexu nicmene zminuji, ze dodatecne nastaveni by melo jit udelat pomoci http://www.eltima.com/products/virtual-serial-port-mobile/
    VirtualGPS jde pouzit s libovolnym navigacnim a mapovym softwarem, pokud se v nem vybere spravny COM port.

  11. Logout (neregistrovaný)

    Autor tedy ja tam nic takoveho nerika. Naopak tam popisuju, ze ziskava udaje o BTS vysilacich pomoci primeho pristupu do sdilene pameti OMAP procesoru, ze ktere cte CellId udaje.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *