Lokalizace s přesností na místnost snadno a rychle (2/4)

V úvodním článku jsme si vysvětlili, co je to lokalizace v budovách. Teď si osvětlíme tři základní přístupy, které určí vaši pozici mimo dostupnost systému GPS. A začneme dead reckoningem. Ten zná každý, i když o tom možná ani neví.

Pod lokalizací v budovách si můžeme představit přístupy a techniky, jejichž cílem je určit naši pozici mimo dostupnost GPS, což je právě v budově. Těchto je několik, ale nás bude v tomto článku zajímat dead reckoning.

 

Co je to dead reckoning a jak funguje?

Je to navigace stará jako lidstvo samo. Je intuitivní a přímá, ale její přesnost závisí na zkušenostech člověka. Můžeme si ji představit na příkladu mapy s pokladem. V té je třeba napsáno: “Ujdi 20 kroků severně, pak zahni doleva a jdi 30 kroků. Otoč se vlevo a ujdi dalších 10 kroků. Začni kopat.”

Pokud půjdu podle napsaných příkazů, měl by být přímo pod mýma nohama poklad. Ale on tam není. Jak to? V sekvenci pokynů nám totiž chybí alfa a omega tohoto přístupu; výchozí bod. Musí to být konkrétní bod, v tomto případě na opuštěném ostrově. Pokud z něj půjdu podle instrukcí, dojdu k pokladu.

Základním principem je ukládání odchylek vůči výchozímu místu. Ideálně nám stačí mít určenou pozici podle GPS a od ní se mohou odvíjet naše další pohyby v prostoru. A protože přesně víme, kde jsme původně byli a máme uložené všechny změny, můžeme podle vektorů snadno dopočítat, kde jsme teď. V ideálním případě.

 

Jaké jsou nevýhody dead reckoningu?

Jako každá technika, i tato má své slabé místo. Je totiž závislá na kvalitě naměřených odchylek, které musí být provedeny přesně. Nemusí to být zrovna nanometry a úhlové sekundy, ale decimetry a stupně by mohly stačit. Nicméně i to je někdy problém, třeba u chytrého telefonu. Toto úžasné zařízení má tolik senzorů, které se dají využít, a na dead reckoning se proto zdá být ideální. Ale nic není tak růžové, jak se první pohled zdá.

 

Jak to vyjádříme v řeči matematiky?

Máme výchozí bod v prostoru, pro jednoduchost zvolíme kartézský. Vůči výchozímu bodu se odchýlíme určitým směrem o nějakou vzdálenost. Tuto odchylku zachytíme vektorem. Když se vrátíme k příkladu mapy pokladu, tak odchylka vytvoří tuto sadu vektorů v prostoru.

 

 

Na obrázku to vypadá hezky, všude jsou samé pravé úhly, protože je předpokládáme z mapy. Všechno je taky krásně přesné jako na milimetrovém papíru. Realita nicméně může být trochu jiná, když tyto odchylky měříme. Jednou je pravý úhel 85°, podruhé zase 95°. To už tak hezké není. Zaznamenaná trasa by vypadala úplně jinak. Chybu v měření úhlů jsem symbolicky naznačil u každého bodu modrým kuželem. A to je jen polovina problému.

Může se navíc stát, že naměříme špatně nejen úhel, ale taky vzdálenost. Toto jsou chyby v měření, které mohou nastat, a se kterými musíme počítat. Tím nechci říct, že je tato metoda špatná nebo nepoužitelná. Ve skutečnosti je je tento způsob navigace tak dobrý, že se v letectví používal až do nástupu GPS (Inertial Navigation). Pro funkčnost stačí použít kvalitní senzory.

 

Jak s dead reckoningem pracovat v chytrém telefonu?

Pokud mluvíme o chytrém telefonu, musíme si uvědomit, že do něj se letecký gyroskop s akcelerometrem nevejde. Musíme tedy zvolit jiný přístup; počítat s chybami v měřeních. Sáhneme prostě po statistice. Pak nám stačí například průměrovat odchylky, abychom zamezili zaznamenání jako “otočení čelem vzad”, ke kterému stačí, aby uživatel telefonem namířil na strop. Android tento případ částečně řeší za nás díky softwarovému orientačnímu senzoru, ale i tak je dobré si data trochu aproximovat. Pokud by to nestačilo, můžeme použít data z dalších senzorů. Tradiční letecká navigace se v tomto ohledu opírá pouze o akcelerometr a gyroskop, my můžeme často použít i magnetometr, neboli klasický kompas. Musíme si ale uvědomovat, že data, která dostaneme, jsou data ze tří různých os (x, y a z). Abychom získali vektor otočení, je potřeba je transformovat.

Toliko k úhlové odchylce. Se vzdáleností je to o něco ošidnější. Pokud předpokládáme navigaci pro uživatele v budově, budou se nám nejvíce hodit senzory, které dokážou zachytit chůzi uživatele. Android je k tomu vybaven dvěma softwarovými senzory: Step Detector Sensor a Step Counter Sensor. Osobně bych spíš doporučil první zmiňovaný, protože spouští událost při každém zaznamenaném kroku uživatele. Druhý sice měří kroky uživatele přesněji, ale výsledek Android dodá až třeba po několika sekundách, a to by aplikaci zbytečně zpomalovalo.

Když k těmto prvkům přidáme ještě pěknou omáčku, aby to hezky ukazovalo plán budovy, můžeme začít dead reckoning směle používat.

 

Proč a kde se dead reckoning používá?

Myslíte, že nejde použít v telefonu? Ale jde, Microsoft dokonce napsal aplikaci, která vás naviguje po budově a používá ještě víc senzorů, než ty, které jsme zmínili. Využití dalších senzorů je mimochodem výborný nápad; třeba barometr jako signalizace výšky, který indikuje patro budovy.

Na tuto navigaci nejsme příliš zvyklí, protože nejdřív je nutné trasu navigování projít. Teprve poté je možné podle ní navigovat. To není ideální na různé adhoc navigování stylem “sednu do auta a chci dojet na tu a tu adresu”. K čemu se tedy hodí?

No schválně, kde by se asi hodilo, aby člověk prošel po předem určené trase? Možná vás napadne obchodní dům, ale já mám na mysli ještě něco jiného. Budovy, kde se možná i něco naučíte. Muzea, galerie, výstavy… Tam je tento způsob navigace naprosto ideální. Vede vás od exponátu k exponátu a navíc se držíte stanovené trasy. Můžete tak v klidu přecházet mezi pavilony nebo kamkoli jinam, protože to neovlivní princip navigace. Nemusíte ani investovat do dodatečné infrastruktury nebo dalších zařízení jako vysílačů typů iBeacon. Na nich je dead reckoning naprosto nezávislý. Stačí vám jen telefon s akcelerometrem a gyroskopem.

Příště se podíváme na multilateraci.

 

Předchozí články:

Dominik Matoulek
Backend Developer

RSS