Mérnöki tervezés beszámoló Dolgozat címe: GSM alapú helymeghatározás Konzulens(ek) neve: Tihanyi Attila, Dr. Takács György A Hallgató a kitűzött feladatot megfelelő színvonalon és a kiírásnak megfelelően teljesítette nem teljesítette Konzulens aláírása Hallgató neve: Leadás dátuma:.. 1
Tartalomjegyzék 1. A feladat ismertetése... 3 2. Bevezetés, irodalmi áttekintés... 3 2.1. Adatok keletkezése... 3 2.2. Műholdas helymeghatározás... 4 2.3. GSM tulajdonságai... 4 3. Előzmények... 5 3.1. Általános... 5 3.2. MySql adatbázis... 5 3.3 ODBC interfész... 6 3.4. Adatok lekérdezése... 9 3.5. Adatok megfelelő szerkezetbe rendezése... 10 3.6. Ábrázolások... 11 4. A munka ismertetése... 17 4.1. Helymeghatározó algoritmus... 17 4.1.1. Statisztika készítése... 18 4.1.2. Mérési pontok meghatározása a cella azonosítók segítségével... 19 5. Eredmények... 20 6. Következtetések az eredmények alapján... 25 7. Összefoglaló... 25 8. Irodalomjegyzék... 26 2
1. A feladat ismertetése A GSM alapú helymeghatározás statisztikai módszerének helymeghatározási pontosságbecslésére szolgáló eljárás készítése, a módszer részletes megismerése és tulajdonságainak bemutatása után. Az elkészített algoritmus tesztelése az egyetemünk környékén rögzített GSM vételi szint és bázisállomás adatokat tartalmazó adatbázis segítségével. Majd az eljárás által kapott eredmények bemutatása szemléletes ábrákkal, melyekkel következtethetünk a helymeghatározás pontosságára. Ezek alapján lehetőség nyílik az adatbázis méretének csökkentésére. Ezt kihasználva algoritmus keresése az adatállomány minimalizálására, a pontosság megtartásával vagy esetleges kismértékű csökkenésével. 2. Bevezetés, irodalmi áttekintés 2.1. Adatok keletkezése A GSM helymeghatározás projekt keretein belül készült egy GSM készülék, amellyel az adatokat gyűjtötték. Ebben a készülékben található egy GPS vevő is, amely rögzíti a mérés során érintett földrajzi koordinátákat. Rögzíti továbbá a mérési pontokhoz tartozó GSM adatokat. Ezek a bázisállomások jellemzői és a hozzájuk tartozó vételi szintek. Részletesebben megtalálhatóak az 3.2. MySql adatbázis című fejezetben. Egy MySql típusú, GSM nevű adatbázisban tároljuk a fent említett adatokat. Ezeket a projektben résztvevő tagok gyűjtötték. Térkép alapján, sétálva bejárták az egyetem környékét, ahonnan adatokat gyűjtöttek. A GSM készülék másodpercenként méri az adatokat és elmenti, amelyek később az adatbázisba feltöltésre kerültek. A mérések helyszíneinek bejárása során egy-egy mérési ponton többször végighaladva, több adat állhat rendelkezésre. A pontra jellemző terjedési viszonyoktól függ a vétel, amely időben változhat. Például magas házak között végzett méréseknél a visszaverődések miatt, más-más bázisállomány jelét foghatjuk más-más vételi szinttel egy másik mérés alkalmával. Egy ablak nyitott, illetve zárt állapotában másként befolyásolhatja a jel terjedését. Az egy pontra jellemző vételi szintek függnek a környező épületektől, építményektől és a bázisállomás elhelyezkedésétől is. Az egy helyben hagyott mérés adatait elemezve, amelyet az egyetem épületéből mértek, 40 különböző bázisállomás jelét lehetett megkülönböztetni egyetlenegy mérési pontban. Ez a fent említetteket alátámasztja. A GSM készülékben található GPS vevő segítségével kapjuk meg a mérés koordinátáit, és az azokhoz tartozó bázisállomás adatokat. Ebből következően a helyzet meghatározási módszer nagymértékben függ a GPS mérés pontosságától. Az eljárás során kapott eredményeket a GPS koordinátákhoz hasonlítva elemezzük. 3
2.2. Műholdas helymeghatározás A műholdas helymeghatározás pontossága jelenleg a legnagyobb. Lehet 10-20 méter, de elérhetjük vele akár a milliméteres pontosságot is. Ez a típusú helymeghatározás a műholdak távolságmérésén alapszik. A méréshez szükséges az idő pontos ismerete és a Föld körül keringő műholdak helyzetének pontos ismerete. A földi vevőkészülék a helyzetét a műholdak által sugárzott jelek információtartalmából és mérési tulajdonságaiból számítja ki. A minél pontosabb eredményhez legalább négy műholdat kell látnia a GPS vevőnek. Annak a valószínűsége, hogy a vevő kevesebb, mint négy műholdat lát, csak 0,01%. A műholdak számát és helyzetét aszerint tervezték meg, hogy a Föld minden egyes pontján, a nap 24 órájában legalább négy műhold látható legyen. Ennek a módszernek a hátránya, ami pontosságromlásához vezet, az olcsó vevőkészülékek órája közel sem olyan pontos, mint a műholdakban található atomóra. További hátránya, hogy csak akkor lehet pontosan mérni a vevő helyzetét, ha a műholdak közvetlenül sugároznak a vevőkészülékbe. Így nem lehetséges helymeghatározás alagutakban és épületen belül ezzel a módszerrel. Problémát jelent még a többutas terjedés is. Ezen hibák miatt előfordulhat, hogy egy helyben maradva más-más GPS koordinátákat kapunk a mérés során. (2) 2.3. GSM tulajdonságai A mobil szolgáltatók egymástól függetlenül GSM hálózatokat építettek ki. A hálózat adottságait kihasználva lehetséges a GSM alapú helymeghatározás. A hálózat fix bázisállomásokból áll, csak a bővítés és az átkonfigurálás jellemző ezekre az állomásokra. Az MCC (Mobil országkód) és az MNC (Mobil hálózati kód) alapján egyértelműen azonosítható az előfizető hálózata. Egy nagyobb területet a LAC (Location Area Code) segítségével határozunk meg, ezen belül az egyes cellákat a cellaazonosítók neve alapján azonosítunk. A bázisállomások egy-egy cellaterületet sugároznak be. Ezt körsugárzónak nevezik. Minden irányban egyenletesen sugároz. Ezek hagyományos hatszög alakú cellákat. Ilyenek csak elméletben léteznek. Nagyon gyakoriak az átfedő cellák és az olyan antennák, amelyek kettő, vagy három irányban sugároznak. Ezeket szektorsugárzóknak nevezik. Ilyen a fejlett hálózatokban gyakori. A szektorsugárzók az egyes irányokban más-más frekvenciákat használnak. A celláknak többféle típusa létezik. Ezt a méretük határozza meg. Létezik makrocella, amelyet km-es nagyságrendű terület lefedésére használnak. Általában lakott területen kívül, ahol a forgalom is kisebb. Ebből fakadóan ezek nagyobb adóteljesítményűek. Ennek leírására az Okumura-Hata modellt használjuk. Lakott területeken kisebb méretű cellákat hoznak létre a hálózat üzemeltetői. Ezeket mikrocellának nevezik és kis teljesítményűek, nagy kapacitásúak. Az ezekre vonatkozó terjedési modellek leírására a Walfish-Ikegami modellt használják. A teljes rendelkezésre álló frekvenciasávokból csak néhányat használnak fel az egyes cellákban. Ugyanazt a frekvenciát a lehető legtávolabbi cellában használják fel újra, ezáltal több felhasználó szolgálható ki. A GSM készülékek két frekvenciasávot használnak, GSM 900 és GSM 4
1800-1900. Ezeket a frekvenciasávokat kell elosztani a cellák között, úgy hogy ne zavarják egymás jelét. (4) A mobiltelefonok a mozgásuk miatt az egyes cellaterületek között kénytelenek váltani. Ezt a váltás handovernek nevezik. Ezt a mobiltelefon maga kezdeményezi. Ehhez ismernie kell a cellák azonosítóit. A bázisállomások a jelzési csatornát használják erre, amin át tudomásukra hozzák az azonosítójukat. A készülék a 3GPP TS 05.08 dokumentumban leírtak szerint a rádióterjedési viszonyoknak megfelelően optimalizálja a cellaválasztását. 3. Előzmények 3.1. Általános Az előző félévben elkészült program segítségével a GSM helymeghatározós projekt keretein belül gyűjtött adatokat jeleníthetjük meg. A könnyű kezelhetőség érdekében felhasználói felülettel rendelkezik. A program automatikusan csatlakozik az adatbázishoz. A kezelő felületen megadott tetszőleges feltétel után letölti az adatokat a táblákból. Ezek után megtekinthetőek a feltételnek megfelelő mérések során előforduló cellák azonosítói. Ezek közül válogatva különbözőféleképpen jeleníthetjük meg az adatokat. 3.2. MySql adatbázis A program a GSM nevű adatbázishoz csatlakozik, amely MySql 5.0.51a típusú. A MySql adatbázis azért megfelelő, mivel több felhasználós, többszálú, SQL- alapú, relációs adatbázis-kezelő szerver. Ez az egyik legelterjedtebb adatbázis típus, ezen felül nyílt forráskódú és költséghatékony. Összesen hét táblában találhatóak adatok, az attributes táblában található, hogy a mérés kültérben, beltérben történt, és milyen körülmények között. Például napos volt az idő, havazott vagy éppen az eső esett. Létezik még cell tábla, amelyben mobil országkód (MCC), mobil hálózati kód (MNC), egy nagyobb terület azonosítója (LAC), a cella azonosítója (CI), BSIC, ami az NCC-ből (az országhatár két oldalán levő PLMN üzemeltetőket különbözteti meg) és a BCC-ből (ugyanahhoz a hálózathoz tartozó szomszédos cellákat különbözteti meg) áll, és a frekvencia, amin az adó sugároz. A comments táblában található többek között egy string attribútum, amelyben megjegyzéseket fűzhetünk a mérési adatokhoz. Például, hol történt a mérés, Debrecenben, vagy Budapesten, esetleg Ferihegyen. Létezik továbbá device tábla, gps tábla, amelyben a szélességi, hosszúsági koordináták, a látott műholdak száma és a tengerszint feletti magasságot tároljuk. A gsm táblában többek között a bázisállomások vételi szintjei és az található, hogy a készülék idle állapotban van-e. A measurement tábla tartalmazza a dátumot, amely a mérés időpontját adja meg. A táblákban azonosítók találhatóak, amelyekkel összekapcsolhatóak a megfelelő adatok lekérdezéséhez. 5
Az adatbázishoz létezik egy weboldal, ahonnan adatokat tudunk feltölteni a megfelelő beállításokkal. Ennek címe: http://mobilhely.itk.ppke.hu/~kelmi/data.php. Adatok lekérdezni lehet egy phpmyadmin oldalról, amelynek címe: mobilhely.itk.ppke.hu. Erre a felületre megfelelő helyre egy megfelelő SQL lekérdezést megírva különböző adatokat kaphatunk meg. 3.3 ODBC interfész A MySql adatbázis több programozási nyelvből is elérhető, például Java, Smalltalk, C, C++, C#. Az eléréshez egyedi illesztő felületekre van szükség. A projekt keretein belül használt adatbázis phpmyadmin felületen keresztül tölthető fel adatokkal, amely nyílt forráskóddal rendelkezik. A használt adatbázis lehetőséget nyújt VARCHAR és Unicode karakterek használatára. Lehetőség van az eljárások tárolására, adatbázis triggerek, view adatbázisok használatára. Támogatja INFORMATION_SCHEMA, SSL és egymásba ágyazott SELECT-ek használatát. A MySql típusú adatbázisokhoz létezik MyODBC nevű beépített ODBC interfész, amely az ODBC-t kezelő nyelvek számára is hozzáférhetővé teszi az adatbázis-kezelőt. A Microsoft Corporation fejlesztette ki az ODBC-t (Open Database Connectivity), amely egy szabványos adatbázis hozzáférési metódus. Ennek a kapcsolatnak a segítségével lehetővé válik adatok elérése, függetlenül az adatoktól, az adatbázis típusától és az alkalmazástól. Az ODBC az adatbázis és az alkalmazás között helyezkedik el. Feladata, hogy az alkalmazás kéréseit átalakítsa, az adatbázisnak megfelelő formába. Ebből következően az alkalmazásnak és az adatbázisnak is rendelkeznie kell ODBC adatkapcsolat támogatással. Az általam megvalósított program Matlab programozási nyelven készült. Itt lehetőség van kommunikálni MySql adatbázissal JDBC és ODBC kapcsolatokon keresztül. A Matlab az 1. ábrán levő lehetőségeket nyújtja a kapcsolat felépítéséhez. Az ODBC driver-en történő kapcsolat felépítés csak Windows platformon lehetséges, JDBC-n keresztüli Unix platformon is. Nekünk a Windows alapú teljesen megfelel. 1. ábra 6
A GSM adatbázis és a Matlab közötti kapcsolat felépítéséhez a www.oracle.com weboldalról letölthető egy ODBC driver, amely minden számítógépre szükséges, amelyen a megjelenítő programot szeretnénk használni. A letöltés és telepítés után ODBC adatforrást hozunk létre. Ezt úgy tehetjük meg, hogy megnyitjuk a Microsoft Windows Vezérlőpultját, ezek után a Felügyeleti eszközökre duplán kattintunk, majd az Adatforrások (ODBC) ikonra. Kiválasztjuk a Felhasználói DSN lapot, ez látható a 2. ábrán. Előzetesen már telepített illesztő programhoz új adatforrást a Hozzáadás gomb segítségével definiálhatunk. 2. ábra Új adatforrás hozzáadáshoz kiválasztjuk a megfelelő illesztő programot, esetünkben a MySql ODBC 5.1 Driver-t. Ez látható a 3. ábrán. 7
3. ábra 4. ábra 8
Az adatforrás létrehozása után beállítjuk a megfelelő paramétereket (4. ábra). Az adatfolyam neve helymeghatározás, ezt kell mindig megadni, mivel a program ilyen néven ismeri fel. Ezek után a megfelelő helyre beírjuk a szerver helyét, amely a mobilhely.itk.ppke.hu-n található, a port számot, ami MySql esetén mindig 3306, megadjuk a felhasználó nevet és jelszót, majd végül az adatbázis nevét. Ezzel sikeresen létrehoztuk az ODBC adatforrást. (5) 3.4. Adatok lekérdezése A kapcsolat felépítése után egy szabványos SQL lekérdezés segítségével az adatbázisban található táblákat összekapcsoljuk. Így lehetőség nyílik egy feltételt megadva, tetszőleges adatok hozzáféréséhez. Egy általános SQL lekérdezés a következőképpen néz ki: SELECT <oszlopok> FROM <táblák> WHERE <logikai kifejezés> GROUP BY <csoportosító> HAVING <logikai kifejezés> ORDER BY <rendezés>; A select után közvetlenül megadhatjuk a lekérdezni kívánt oszlopok neveit, a from részben pedig a lekérdezéshez szükséges táblák neveit. A where parancs segítségével egy logikai kifejezés alapján feltételt fogalmazhatunk meg. A group by az eredmény tábla sorait csoportosítja, a having segítségével egy újabb logikai kifejezés szerint adhatunk meg feltételt és az order by lehetőséget nyújt a megjelenítendő oszlopok rendezésére. Ezekből a parancsszavakból csak a select, from és where utasításokat használjuk fel. A kezelőfelületen megadott feltétel kerül be a where utasításhoz. A join segítségével kapcsoljuk össze a táblákat. Ahol a GPS vevő készülék még nem inicializálódott a GPS koordináták helyett 0 értékeket adna. Ezeknek a mérési pontoknak nem kell szerepelniük az adatink között. Erre beépítettem egy feltétel. Az adatokat az adatbázisból a következő lekérdezéssel nyerjük ki: select gps.lat,gps.lng,gsm.rxlev,cell.ci from gsm left join gps on gsm.gid=gps.id left join cell on gsm.cid=cell.id left join attributes on gsm.id=attributes.gid left join measurement on gps.mid=measurement.id left join comments on measurement.id=comments.mid left join device on measurement.did=device.id where gps.lat!=0 and (tetszőleges feltétel) A database paranccsal a Matlab kapcsolódik az adatbázishoz az ODBC kapcsolaton keresztül. Az exec utasítással megnyit egy kurzort, amelybe eltárolja az információkat. Itt hajtja 9
végre a lekérdezést. A fetch paranccsal a kurzorból kinyerjük az adatokat, itt azt is lehetne szabályozni, hogy mennyi adatot olvasson ki, de nekünk jelenleg minden adatra szükségünk van. A where feltétel panelen található egy edit box, ez arra való, hogy a program kódba adatokat vigyünk be, itt adjuk be a feltételt. Az edit box callback függvényében történik a kapcsolat felépítés, a kurzor létrehozása és az adatok kinyerése a kurzorból. Minden egyes grafikus felhasználói felületen levő komponensnek létezik callback függvénye. Ezek a komponensek lehetnek edit box, list box, push button, check box, toggle button, radio button, slider, pop-up menu. A callback függvény akkor hajtódik végre, ha a komponenst aktiváljuk. Például rákattintunk, írunk bele, majd entert nyomunk.(5) 3.5. Adatok megfelelő szerkezetbe rendezése Szintén az edit box callbackjében történik az adatok átvizsgálása, hogy van-e olyan bázisállomás, amelyeknek a GSM készülék nem tárolta el a cella azonosítóját. Előfordulnak ilyen adatok. Ezeken a helyeken az adatszerkezetben nem jelennek meg értékek, ezért szükség van arra, hogy végignézzünk minden egyes elemet, és ahol üres értékek vannak oda egy i karaktert tegyünk. Ez azért szükséges, mert különben a program nem tudná kezelni azokat a cella információkat, ahol nincsen azonosító. Az összes adatot tárolt szerkezetben át kell vizsgálni a cellaazonosítók értékeit, hogy megfelelőek-e. A lekérdezett bázisállomás azonosítókat egy cellid nevű adatszerkezetben tároljuk, az összes adatot tartalmazót pedig egy adatok nevűben. Mindkettő cellatömb típusú, ami azt jelenti, hogy az elemek különböző típusúak is lehetnek. Például az egyik elem lehet egy skalár, egy másik tömb, egy harmadik string. A mi esetünkben a szélességi hosszúsági koordináták és a vételi szintek valós típusúak, a cellaazonosítók stringek. A megjelenítő programrészletek csak mátrixokat tudnak kezelni, ezért az adatokat rendezés során egy mátrixba kell áthelyezni. Az üres adatok helyeinek feltöltése után a GPS koordináták szerint egy-egy mérési pontban rendezem az adatokat. Ez a rendezés úgy működik, hogy az adatbázisból letöltött adatokból az első GPS koordinátákat egyszerűen átmásoljuk a rendezett nevű adatszerkezetbe. Ezek után az adatokon végighaladva megvizsgáljuk egyesével, szerepelnek-e a rendezett mátrixban. Először a szélességi koordinátákat hasonlítjuk össze, ha ez megegyezik a hosszúsági koordinátákat is hasonlítjuk. Tehát, ha ugyanarról a mérési pontról van szó, akkor azt már nem tesszük bele újra. Ha még nem fordult elő, létrehozunk egy sort, amibe bele tudjuk tenni. A GPS koordináták megfelelő rendezése után a vételi szinteket is rendezzük. A rendezett adatszerkezetben, az első oszlopban a szélességi koordináta, a másodikban a hosszúsági koordináta, a többi oszlopban pedig a bázisállomások vételi szintjét tároljuk el. Minden egyes oszlop más-más bázisállomás vételi szintjét tartalmazza. Elsőként végigmegyünk a már elrendezett GPS koordinátákon, összehasonlítva az adatbázisból lekért adatokkal. Ha egyezik a két koordináta, akkor az ebben a pontban észlelt bázisállomás azonosítót kikeressük abból az adatszerkezetből, amelyben az 10
előfordult bázisállomásokat tartalmazza. Ennek megfelelően berakjuk egy mátrix értékbe. A megfelelő sort a GPS koordinátákhoz adjuk, a cellaazonosítónak megfelelő oszlopba. Átszámoljuk a szélességi, hosszúsági koordinátákat, fok perc tizedperc mértékegységről méterbe, az egyszerűbb kezelhetőség és pontosabb ábrázolhatóság érdekében. A szélességi és hosszúsági koordináták mértékegységét ugyanazzal az eljárással váltom át. A GPS koordinátákat a Matlab valós számként értelmezi. Ezt a számot átkonvertálom stringé, különválasztom a fok és perc értékét, majd visszakonvertálom. Az így kapott értékekből a koordinátákat át lehet váltani méterbe. Az adatok lekérdezésekor a cellaazonosítókat is eltároltuk. Mindegyiket csak egyetlen egyszer. Ezt az adatszerkezetet átadtuk a listbox komponensnek, amely megjeleníti. Ez a Cellaazonosítók nevű panelen látható. Itt választhatunk egy vagy több bázisállomás közül, amelyeket szeretnénk megjeleníteni. A listbox komponens eltárolja az éppen kiválasztott elemeinek a sorszámát egy vektorba. Ezt felhasználva tudjuk a megfelelő bázisállomások vételi szintjeit egy újabb adatszerkezetbe átmásolni, majd megjeleníteni. A Megjelenítés nevű panelen hat checkbox található. Ezeket kiválasztva nyílik lehetőség a különböző megjelenítések elindítására. Ezeknek a komponenseknek a callback függvényében történik a kiválasztott bázisállomás vételi szintjeinek elrendezése. A szükséges adatokat áthelyezzük egy újabb mátrixba, és ezeket már meg tudja jeleníteni az előző félévben elkészült programrészlet. Az áthelyezendő adatok a GPS koordináták és a kiválasztott bázisállomások vételi szintjei. Ezek szükséges a megjelenítésekhez. 3.6. Ábrázolások A programban az adatok többféle megjelenítésére van lehetőség. Egy kezelőfelület könnyíti meg a program kezelését a felhasználó számára (5. ábra). 11
5. ábra Az egyik ábrázolási módszerrel egy térképet rajzoltathatunk ki. Ezt vizsgálhatjuk 2D-ben, illetve 3D-ben is. A 3D-s megjelenítésen a két vízszintes koordináta tengelyen a szélesség és hosszúság látható méterben, a függőleges tengelyen a vételi szint értéke dbm mértékegységben, ez az érték 0 és 63 között ingadozhat (6. ábra). Az egyes mérési pontokban több bázisállomás jele is megfigyelhető különböző vételi szintekkel. 12
6. ábra A 2D-s nézetében egy térkép rajzolódik ki, amelyen megtekinthetjük milyen útvonalon történt a mérés (7. ábra). Egy példa erre a megjelenítésre egy Budapest Józsefváros környékéről és a Déli pályaudvarnál Vérmező környékéről származó mérési adatok. Az ábra jobb alsó sarkában józsefvárosi területén mért adatok látszódnak. A másik részén Vérmező. A két tengelyen a földrajzi hosszúság és szélesség található méterbe átszámítva. 13
7. ábra Ehhez a ábrához jó lenne egy keret és egy koordináta rendszer A következő ábrázolási stílusban a cellák sugárzási karakterisztikájának időbeni változását láthatjuk. A vízszintes tengelyen a mérési pontok láthatóak, a mérés sorrendjében. A függőleges tengelyen az egyes cellák és a hozzájuk tartozó vételi szintek láthatóak. A cellaazonosítók sorban, 2fc1, 2ec5, 2ec4, 2a5a és 3dbb (8. ábra). Ezen mérési pontok és adataik is a Budapest Vérmező- Józsefváros méréshez tartoznak. A 8. ábrán az első 500 mérési adat látszik, az összesen 2617-ből. Az első négy cella jelei az körülbelül az első 20-30 mérési pontban látszódik. Az ötödik kiválasztott cella a mérés elején viszonylag nagy térerősséggel fogható, majd a 100-360 mérési pontok környékén alacsony vételi szinttel látszik, majd pedig eltűnik. 14
8. ábra A következő lehetőséggel egy Manhattan típusú ábrát készíthetünk. A 9. ábrán látható mérési adatok a Debrecen-Budapest vonatút egy részét ábrázolják. Pontosabban az első 30 mérési pontot. Hat különböző cellaazonosító vételi jeleit vizsgáltam. Látható, hogy az első 3 cella vételi szintje közel azonos értéken marad, miközben a másik 3 kiválasztott cella sugárzási szintje igen alacsony értéken marad. 15
9. ábra A vételi szint összegzés lehetőséget választva, az egyes mérési pontokra összegezve tekinthetjük meg a vételi szinteket. Jól áttekinthető válik, melyik cella jelét melyik mérési pontban fogtuk. Itt nem találjuk meg a pontos értékeket, csak egymáshoz viszonyított nagyságrendeket láthatunk (10. ábra). 10. ábra A Szalagok megjelenítést választva a 11. ábrát kaphatjuk meg. A vízszintes tengelyen a mérési pontok találhatók, a függőleges tengely mutatja milyen erős volt a bázisállomás vételi szintje. Az 16
állomások különböző színnel látszódnak. Az adatok a Debrecen-Budapest vonatút egy részéből származnak. 11. ábra 4. A munka ismertetése 4.1. Helymeghatározó algoritmus A félévi feladatom Tóth Máté által kifejlesztett helymeghatározó algoritmus megismerése, megvalósítása és az eddig elkészített munkámba beépítése. Az eljárás pontosságának vizsgálata, különböző feltételek megadása mellett és különböző mérési helyszíneken vett adatokon tesztelve. A következő alfejezetekben bemutatom az algoritmust és megvalósításának lépéseit. Két fő részre osztható, amelyek a 4.1.1. fejezetben bemutatott statisztika készítése, és a 4.1.2. fejezetben kifejtett mérési pontok meghatározása a statisztika segítségével. A statisztika elkészítéséhez, a GSM nevű MySql típusú adatbázisból adatokat töltök le. Az adatbázis szerkezetét és tartalmát a 3. fejezetben részletezem. Az így kapott adatokat rendezni kell, olyan adatszerkezetben, amelyben minden egyes mérési ponthoz hozzárendeljük az abban a pontban érzékelt cella azonosítókat és vételi szintjüket. Ez a művelet a további lépéseket könnyíti meg. Az adatbázisban a GPS koordináták fok perc, tizedperc formátumban találhatóak. Az ábrázolhatóság és kezelhetőség miatt át kell váltani méterbe. Egy-egy mérés adataiból kerülnek ki a statisztikai adatok és az algoritmus tesztelésére használt adatok. Ezeket a következő módszerrel választom ki. Az adatbázisból letöltött adatok azonosítóját 17
mod10=0 feltétel segítségével választok ki pontokat a statisztika teszteléséhez. Ezáltal egyenletesen lesznek a mérési pontjaink. 4.1.1. Statisztika készítése A statisztika készítése azt jelenti, hogy egy négyzetrácsos hálót készítek, amelynek minden pontjához statisztikai adatokat rendelek. Ezek a cellaazonosítók és a hozzájuk tartozó átlag és szórás értékek. 12. ábra Egy mérési pontot a négyzetrács minden csúcspontjához be kell számítanom (12. ábra). Ehhez egy inverz módszert használok. Ez azt jelenti, a mérési pont távolságát kiszámítom mind a 4 gridponthoz viszonyítva. Minél közelebb van, vagyis minél kisebb a távolság, annál nagyobb mértékben kell, hogy számítson a grid pontjához való besorolásnál. Ehhez az inverz átlaghoz számolok, az 1/(1+d) kifejezés segítségével. A d a mérési pont és a négyzet egy-egy pontjától vett távolságot jelenti. Ez azért megfelelő, mivel ha a mérési pont éppen a háló aktuális pontjával egyezne meg, 0 értékét kapnánk. Ezáltal ez kiküszöbölhető. A háló létrehozása után, a pontjaihoz tartozó cella azonosítók és a hozzájuk tartozó súlyozott átlag és súlyozott szórás értékek kiszámítása következik. Ehhez az eljáráshoz megkeresem, milyen cella jelei foghatóak a háló egyes pontjaiban. Az rssi értékek és az inverz súlyok segítségével a következő képlet alapján kiszámolom az átlagot minden egyes cellára. Átlag = summa(inverz súly*rssi)/summa (inverz súly). ez képlet amire külön képlet azonosító kell A következő lépésekben szórás értékét számolom ki, amihez szintén a súlyokat használom. Az rssi értékek és az átlag különbségének négyzetét veszem, majd megszorzom az inverz súllyal, majd ezeket az értékeket összeadom, végül gyökvonással megkapom a szórás értékét. Szórás = sqrt(summa(inverz súly*(rssi-átlag)^2)). ez képlet amire külön képlet azonosító kell 18
A szórás meghatározásánál két lehetőség is van. Az egyik esetben a fent említett módon kiszámolom, és ezt használom a valószínűségek számításánál, vagy pedig az értékét egyre állítom. Ennek eredményeit a 6. Következtetések fejezetben részletezem. Összegezve a statisztika elkészítése azt jelenti, hogy a mérési adatokat egy négyzetháló pontjaihoz rendelem a távolságuk függvényében. Továbbá a statisztikai jellemzőiket kiszámolom. A háló minden egyes pontjához tartoznak cella azonosítók, ezeknek az átlaguk és szórásuk. Ezekből számolom a mérés tesztelésénél a valószínűségeket, amelyet a következő alfejezetben részletezek.(1) 4.1.2. Mérési pontok meghatározása a cella azonosítók segítségével A statisztika elkészítése után a mérésre kiválogatott adatok pontos helyére próbálok következtetni, az egy-egy pontban látott cellák jeleiből és ezek erősségeiből. Minden egyes mérési ponthoz tartozó cella azonosítót és vételi szintjüket ismerem. A GPS koordináták is ismertek, viszont ezeket csak ellenőrzésként használom fel. A kapott koordinátákat ezekhez viszonyítom. A műholdas helymeghatározás nagymértékben befolyásolja az algoritmus által kapott eredményt. A helymeghatározás a következőképpen zajlik. A mérési adatok földrajzi koordinátáit szeretném kiszámolni, csak a cella azonosítók és ezek vételi szintjének nagyságából. Minden egyes hálópontot cellák és tulajdonságaik jellemeznek. Ezeket felhasználva végzem el a helymeghatározást. Egy-egy mérési pont helyzetét becsülve, megvizsgálom az abban a pontban látott cellákat, és ha előfordultak a háló bármely pontján, a jellemzőikkel kiszámolom a valószínűségüket. A háló mindegy egyes pontjára kapok egy valószínűségi értéket. A valószínűségeket Gauss eloszlás írja le. Ebből az egy helyben álló mérésből következtettek. Amelyeket megvizsgálva a bázisállomások vételi szintjeinek sűrűségfüggvénye Gauss sűrűségfüggvénynek felel meg. Az egyes cellákra vonatkozó valószínűségeket a Gauss sűrűségfüggvény alapján számolom ki, a következő képlettel:. ez képlet amire külön képlet azonosító kell A képletben az x változó jelöli azt a vételi szintet, amelyen az adott mérési pontban az adott cella sugároz. A nu és szigma értékek, az átlag, valamint a szórás, amelyek az adott hálópontban a cellát jellemzik. Előfordulhat, hogy egy mérési pontban olyan cella is szerepel, amely a háló jellemzői között nem. Ebben az esetben az ő valószínűségét nagyon kis értékre állítom. A hálópontok valószínűségeit a cellákra kapott valószínűségek szorzatából számolom ki, mivel ezek egymástól független események, így összeszorozható az értékük. Jelenleg a háló összes pontjának valószínűségét ismerem. Abban a pontban, vagy legalábbis a környékén lehetünk, amelynek a legnagyobb a valószínűsége. Ezt a helykoordinátát pontosíthatjuk, ha a szomszédjai valószínűségét is figyelembe vesszük. A 9 szomszéd segítségével becsüljük meg az új 19
koordinátát. Megkeresem a 8 szomszéd valószínűségeit, majd ezekből az adatokból egy súlyozott átlag segítségével kiszámolom az új koordinátákat, várhatóan pontosabb eredményt kapva. A legnagyobb valószínűségi pont, a nagyobb valószínűségű pontok felé tolódik el. Lehetséges olyan eset, ha a mérési pontok a statisztika szélén szerepelnek, ezért nem ismerjük a 8 szomszéd valószínűségét, ehelyett csak az ismert szomszédokkal számolok. Ez némi pontatlanságot okozhat a helymeghatározásban.(1) 5. Eredmények Az algoritmus futtatása után megkapjuk a koordinátákat. Ezeket összehasonlítjuk az adatgyűjtés során kapott GPS koordinátákkal. A két értékből kiszámolom az algoritmus hibáját. A hibaértéket ábrázolom, kiszámolom az átlagos hibát és a maximális hibaértéket. Ezeket az adatbázis több adathalmazára elvégezve, elemzem a helymeghatározás pontosságát a változtatható paraméterek mellett. Az egyik algoritmustesztelést a Budapest Szigony nevű adathalmazon végeztem. A 13. ábrán látható térkép mutatja azokat a pontokat, amelyeket felhasználtam a statisztikához és a mérés ellenőrzéséhez. Ez az adathalmaz 1456 mérési pontból áll. Csak azokat a mérési pontokat használom fel, amelyekben legalább 4 cellát látott a GSM készülék. A statisztika készítéséhez 1311 mérési pontot használtam fel, és a többi 145 pontot használtam a mérés tesztelésére. 13. ábra jó lenne az ábrához koordináta rendszer és keret A Budapest Szigony adathalmazon 3 féle beállítás szerintem végeztem méréseket. A statisztikát létrehozó háló méretét változtattam. Az első esetben a négyzetháló pontjai 20 méter távolságra vannak egymástól (14. ábra), a másodikban 10 20
méterre (15. ábra) és az utolsóban 5 méterre (16. ábra). Az ábrák vízszintes tengelyén a hiba nagyság látható méterben, a függőleges tengelyen az előfordulásuk valószínűsége. A 20 méteres nagyságú grid esetében a pár méter és a 30 méter közötti hibák valószínűsége a legnagyobb. 5-6 % között ingadozik. 50-60-70-80 méteres hibák is előfordulnak 1-2 %-os valószínűséggel. 14. ábra A 10 méteres grid esetében 10 méter alatti hibák fordulnak elő a legnagyobb valószínűséggel. A 10 méter alatti hibák valószínűsége nagyobb, mint a 20 méteres grid esetében, viszont a 10 méternél nagyobb hibák kisebb valószínűséggel fordulnak elő. 21
15. ábra Az 5 méteres statisztika tesztelése esetén megfigyelhető, hogy 10 méter alatti hibák fordulnak elő a legnagyobb valószínűséggel, amely akár 18 % is lehet, viszont a 10 méternél nagyobb hibák valószínűsége csak 1-2 %. 16. ábra 22
A 20 méteres statisztika esetén az átlagos hiba 17,6 m, 10 méteres esetén 12,9 és 5 méteres esetén 8,5 m. A következő tesztelést a Budapest egyéb adathalmazon végeztem. 2617 adatot tudtam felhasználni, ezeknél a mérési pontoknál látott a GSM készülék legalább 4 cellát. Ebből 261 mérési pontot a tesztelésre elkülönítettem, a többi 2356 mérési pontot a statisztika készítéséhez használtam. A 20 méteres háló esetén (17. ábra) 30 méter alatti hibák gyakran fordulnak elő, és magasabb hiba értékek is előfordulnak. 17. ábra A háló pontjainak távolságát csökkentve, 10 méterre (18. ábra), látható, hogy nagyobb valószínűséggel fordulnak elő 10 méternél kisebb hibák. A 20 és 30 méteres hibákból is kevesebb fordul elő. Leggyakoribbak a 10 méter alatti hibák. 23
18. ábra A Budapest egyéb adathalmaz elemeit az 5 méteres statisztikai felbontás adatai szerint elemezve, láthatjuk, hogy a 10 méter alatti hibák fordulnak elő gyakrabban, és a 60 méter fölötti hibák előfordulásának valószínűsége nagyon alacsony. 19. ábra 24
Ebben az esetben a 20 méteres rácsozatnál az átlagos hiba 22,9 méter volt, 10 méteres felbontás esetén 16,9 méter és 5 méteres esetén 11, 5 méter. 6. Következtetések az eredmények alapján Az elvégzett mérések alapján nem lehet általános következtetést levonni. Ezeket az eredményeket több tényező együttesen befolyásolja. Az egyik befolyásoló tényező, hogy milyen adatok állnak rendelkezésre a tesztelésre. Minél több cellát látunk egy-egy mérési pontban, annál jobban meg tudjuk különböztetni az adott pontot a többitől. Ehhez a mérési pontokon többször végig kell haladni, mivel a mérés folyamán nem mérünk kétszer teljesen ugyanolyan adatokat. Ezt bizonyítja az egy helyben álló mérés adathalmaza is, amelyben egyetlen mérési pontban 40 bázisállomás jele volt fogható. Az adatok vizsgálatából következtetni lehet, hogy a bázisállomások vételi szintjüket Gauss eloszlás szerint sugározzák. A sűrűségfüggvényből körülbelül a szórás értéke egynek becsülhető. A valószínűségek számolásánál a szórást 1 értékre beállítva, pontosabb eredményt kaptam. Ez valószínűleg azért lehetett, mivel egy-egy mérési pontot viszonylag kevés adat jellemez, a szórás meghatározáshoz minél több adatra lenne szükség egy egy celláról. Egy másik befolyásoló tényező, hogy az aktuális mérési pontokban is több cella észlelése szükséges a pontosabb helyzet meghatározáshoz. Ha a GSM készülék nem csak egyetlen mérésből próbálja meghatározni a koordinátákat, hanem többször végez mérést, ezáltal pontosabb eredményt kaphat. Ez a művelet több ideig tarthat, de egy körülbelül fél perces várakoztatás nem akadályozza a felhasználót a készülék funkciójának használatában. Az eddig elvégzett tesztelésekre jellemző, hogy a grid szerkezet pontjai távolságának csökkentésével egyre nő a valószínűsége a kisebb nagyságrendű hibáknak. Míg a nagyobb értékű hibák száma egyre csökken. Az átlagos hiba értéke is csökken, viszont ezzel szemben megnő a statisztikát tároló adatszerkezet mérete. 7. Összefoglaló A diplomamunkámba tervezett feladat nagy részét sikerült megvalósítanom. A Tóth Máté által kifejlesztett helyzet meghatározó algoritmust sikerült megismernem, megvalósítanom, és ebben a beszámolóban bemutattam a tulajdonságait. A helyzet meghatározó módszer pontosságbecslésére készítettem egy eljárást, majd teszteltem az egyetem környékén rögzített GSM vételi szint és bázisállomás adatokat tartalmazó adatbázis adataival. Az algoritmus lényege, hogy statisztikát készít a bejárt terület mérési pontjai alapján. Ehhez lehetőség szerintem minél több adatra van szükség. A területet felosztjuk négyzetekre, majd mindegyik pontjához adatokat rendelünk. Egy-egy ilyen pontot a cellák és tulajdonságaik jellemeznek. 25
A statisztika elkészítése után a helyünket meghatározó cellák és vételi szintjük alapján a ponthoz földrajzi koordinátát rendelünk. A statisztikából a legvalószínűbb pontot kiválasztjuk, majd a szomszédjai segítségével pontosítjuk a helyzetünket. Az adatbázis adatainak megjelenítésére ábrákat készítettem, amelyekből következtetni lehet a helyzet meghatározás pontosságára. A következő félévben elvégzendő feladatok közé tartozik, hogy az algoritmust az adatbázis összes elemével teszteljem. Bemutatom a világon jelenleg használt helyzet meghatározási módszereket. Az általam megvalósított módszert a további tesztelések után elhelyezem a már meglévő helyzet meghatározási módszerek között. Az elhelyezés után az adatbázis tömörítésére keresek algoritmust, a tesztelés eredményeinek függvényében. A minél nagyobb tömörítés mellett a helymeghatározás pontossága nem, vagy csak minimálisan romolhat. 8. Irodalomjegyzék 1. Máté, Tóth. Önálló labor beszámoló. 2008. 2. László, Papp. http://www.mindentudas.hu/mindentudasegyeteme/pap/20030623paplaszlo.html. [Online] 2003. 06 23. 3. 3GPP. Technical Specification 05.08. 2001. 08. 4. Helymeghatározás GSM hálózat felhasználásával. Bányai, Balázs, Feldhoffer, Gergely és Tihanyi, Attila. Híradástechnika : ismeretlen szerző, 2008. 5. Matlab. Matlab Help. hely nélk. : Matlab, 2008. Kicsit kevés és gyér az irodalom, bővíteni kell majd a diplomába! Feltétlenül ki kell egészíteni a munkát ábra aláírásokkat. Minden ábra alatt egy ábraszám és felírat kell hogy legyen, míg a szövegben hivatkozni kell az árbaszámra ott ahol a magyarázat van! ez utóbbi úgy tűnik. hogy megvan. Az ábraszámhoz hasonlóan irodalmi hivatkozás is kell. Meg kell számozni az irodalmakat és ott ahol az irodalom tartalmát használjuk ott szögletes zárojelbe írt számmal hivatkozunk az irodalomra. Az ábraszámhoz hasonlóan képlet hivatkozás is kell. Meg kell számozni a képleteket és ott ahol a képlet tartalmát használjuk, vagy magyarázzuk ott (2. képlet) számmal hivatkozunk a képletre. 26