Szerző: Velez Krisztián

Beltéri helymeghatározás - Első rész

Napjainkban egyre nagyobb teret hódítanak a lokációhoz kötött szolgáltatások, így felmerült az igény arra is, hogy épületen belül is lehessen hasonló szolgáltatásokat készíteni. A kérdés az, hogy hogyan?

Erre több megoldás is született, azonban a mobil készülékekbe nincs beépítve az ehhez szükséges speciális hardver. Ennek ellenére a problémát mégis megoldották a rendelkezésre álló eszközökkel, méghozzá a széles körben használt Bluetooth Low Energy (BLE) technológiára építve. Olyan kisméretű, alacsony fogyasztású adókat hoztak létre, amik BLE jeleket sugároznak, amelyeket egy BLE képes eszköz csatlakozás nélkül észlelhet.

Időt és energiát nem kímélve két fontos szabványt próbáltunk ki. Az első az Apple nevéhez fűződik, ami az iBeacon néven ismert. A másik az Eddystone, amit viszont a Google alapozott meg és egy kicsit más megközelítést használ, de lényegében mind a kettő alkalmas beltéri, helyhez kötött szolgáltatások létrehozására.

Elméleti háttér

A BLE-t használó megoldás a jelerősségen alapszik, amit könnyű mérni és a már meglévő eszközök többsége is támogatja. Ezt fel lehet használni arra, hogy a két eszköz távolságát meghatározzuk így közelséget detektáljunk, vagy akár több eszköz segítségével pozíciót határozzunk meg.

A legnehezebb feladat a jelerősség alapján a távolság kiszámítása. Papírforma szerint a jelerősség négyzetesen csökkenő függvény alapján változik. Egy példa:

2_4ghz_power_loss_by_distance.png

Ezek alapján nincs más dolgunk, mint megmérni a jelerősséget, kivonni az adó jelerősségéből és a fenti függvény inverzét alkalmazni.

Ha rendelkezünk elég adóval, amiknek tudjuk az elhelyezkedését és távolságát, akkor egy háromszögelési módszerrel könnyen kiszámítható a mérőállomás helyzete. Az elv nagyon hasonló ahhoz, ahogy a GPS is működik, mivel több állomás jeléből számíthatjuk ki az adókhoz képesti relatív pozíciót. A műholdas megoldás a jelterjedés idejével számol, amihez rendkívül pontos időmérés szükséges, így ez ilyen kis távolságokon a jelenlegi eszközökkel nem lenne járható út.

Hallotta már valaki egy elmélet kapcsán azt, hogy minden terv szerint megy? Ugye hogy nem..

A gyakorlat

A gyakorlat mindig felülírja az elméletet, mi is több nehézségbe ütköztünk.

Az igazán nagy probléma a jelerősséggel adódik, hiszen azt nagyon sok körülmény befolyásolja. Néhány fontosabb tényező:

  • Adó antennája: Karakterisztika és irányítottság
  • Vevő antennája: Karakterisztika, árnyékolás és irányítottság
  • Levegő minősége: Páratartalom, ionizáció
  • Közeg szennyezettsége: Más adók jelzavarása
  • A jel útjában álló akadályok és azok szerkezete
  • Jel visszaverődések

Nézzünk meg egy példát, ahol ezek a problémák jól látszódnak:

rssi_measurement_ibeacon_ibks_beacons_oneplus3.PNG(Mérések száma: 8695, Szabvány: iBeacon, Mérő eszköz: OnePlus 3, Adók: 5 db iBKS 105, 3 db iBKS USB)

Az ábrán jól látszik, hogy a mérés rendkívül pontatlan és nagy az adatok szórása, így ilyen formában tehát nem használható távolságmérésre. Továbbá, ha a mérést megismételjük más eszközökkel, akkor a zajon kívül azt is tapasztalhatjuk, hogy a görbe teljesen máshol kezdődik, más a meredeksége, még a zaj mértéke is eltérhet.

A mérés egy viszonylag zajos IT irodában történt és átlagos minőségű jeladókat használtuk, ami a piacon van. 

A részletek iránti tudásvágy kielégítését egy későbbi cikkre hagyjuk.

Technológia

Mind a két szabvány azon alapszik, hogy adott időközönként egy beacon jelet küld. Ez a vezeték nélküli kommunikációban használatos fogalom, ami egy periodikus jelre vonatkozik. Szerintem innen jön a neve, hiszen csíkos, mint a szalonna.

Ez alapvetően arra szolgál, hogy észlelni tudjunk egy adott hálózatot és további információt szerezzünk róla. Ezt az üzenetet használták fel arra, hogy távolságmérésre tegyék alkalmassá az eszközöket, hiszen ezek észleléséhez nem kell csatlakozni az eszközhöz, elég „hallgatózni”. Ez az üzenet tartalmazza az eszköz azonosításához szükséges adatokat, ezen kívül további információkat is elhelyezhetünk benne. Többek között ez képezi a két szabvány közötti különbséget is.

iBeacon

Alapvetően itt nincs lehetőség tényleges adat beállítására, mivel csak egy azonosítót tud küldeni, ami egy 16 karakteres hexa szám kiegészítve két 4 karakteres számmal. Az első UUID a kitelepítőt azonosítja, tehát egy alkalmazáson belül jellemzően rögzített, míg a maradék kettő szolgál az eszközök megkülönböztetésére.

Eddystone

Itt kicsit több lehetőség van az adatok beállítására, mivel több adattípus közül választhatunk:

  • Eddystone-URL: Egy szabványos URL, amit egy tetszőleges készülék tud észlelni és felajánlhatja a felhasználónak, hogy látogassa meg a címet. Ehhez nem szükséges saját szoftver, a legtöbb telefonon integrálva van.
  • Eddystone-UID: Egy az iBeacon-nél használthoz hasonló azonosító, azzal a különbséggel, hogy itt összesen 16 karakter hosszú az azonosító, amiből 10 az alkalmazás specifikus előtag és 6 az azonosító. Az ütközések elkerülése érdekében ezeket regisztrálhatjuk a Google által nyújtott szolgáltatásban.
  • Eddystone-EID: Az előzőhöz hasonló, azzal a különbséggel, hogy itt nincs felbontva, hanem egy random azonosító, így megnövelve a biztonságot. Ezt is az imént említett szolgáltatásban lehet regisztrálni.
  • Eddystone-TLM: Ez egy ritkábban sugárzott formátum, mivel az eszköz állapotáról tartalmaz kiegészítő információkat. Például töltöttség, hőmérséklet, bekapcsolástól eltelt idő, sugárzott csomagok száma, de ez további adatokkal is bővíthető.

Továbbá ez egy nyílt szabvány, ezért bővítésekre is számíthatunk a jövőben.

Konklúzió

Vállalkozó szellemű olvasóimnak javasolnám a további elmélyülést. Ugyan verejtékes munka árán, de megéri a fáradságot.

A technológia alkalmas ugyan a beltéri helymeghatározásra, azonban ehhez rengeteg problémát kell leküzdeni. Többek között a jelerősség mérése zajos és eszközfüggő. Ennek ellenére megfelelő szűrőkkel lehetséges az akár 1-2 méteres pontosság elérése, ha megfelelő számú eszköz áll rendelkezésünkre, azonban egy Beacon közelségét könnyűszerrel tudjuk detektálni. Ehhez segítséget nyújthat egy Google által üzemeltetett szolgáltatás is, ami az adminisztrációs problémákat elég jól elfedi előlünk. Ezzel a hátunk mögött már könnyebben tudunk beltéri pozícióhoz kötött alkalmazásokat fejleszteni. 

A következő részben kitérünk arra is, hogy mire lehet ezt felhasználni.

Ha tetszett a cikk oszd meg másokkal is.