Sistem de Detectie Si Analiza a Pozitiei Clientilor Intr Un Spatiu Comercial

Abstract

Problema localizării în interior a fost studiată pe larg în ultimii ani bazându-se pe diverse tehnici de poziționare, însă niciuna dintre soluțiile găsite nu a avut un impact mare în societate. Sistemele de localizare se dezvoltă de obicei după cerințele cazului de ultilizare, întrucât alegerea metodei potrivite este influențată de context.

Proiectul vizează studierea proprietăților BLE-ului („Bluetooth low energy”) și analizarea diverselor tehnici de poziționare precum și aplicabilitaea acestora în asigurarea localizării indoor. De asemena, se analizează comportamentul RSSI-ului ce este folosit ca parametru în tehnicile de poziționare prezentate.

Localizarea în interior are ca scop analiza traiectoriei utilizatorilor în interiorul unei clădiri pentru că ulterior să se realizeze o statistică cu privire la perioada de timp petrecută de aceștia într-un anumit loc. Tehnicile sunt evaluate în două scenarii de test create pentru a imita scenarii din lumea reală, dintr-un spațiu comercial. De asemena, rezultatele sunt analizate și comparate în funcție de metodele de poziționare prezentate. La finalul proiectului sunt prevăzute idei pentru o activitate viitoare în acest domeniu.

Introducere

Contextul și scopul proiectului

De la apariția GPS-ului (Global Positioning System) au început să se dezvolte mult mai multe servicii bazate pe poziționare și localizare. Aceste tehnici de poziționare sunt folosite în mai multe domenii cum ar fi indicații rutiere, înregistrare rute sau ghiduri. GPS-ul a devenit un standard pentru localizare “outdoor”, însă pentru localizare “indoor” nu mai este disponibil. S-au făcut diverse cercetări în domeniul localizarii “indoor”, dar niciuna dintre soluțiile găsite nu au avut un impact mare în societate, astfel nu s-a format un standard universal comun. De cele mai multe ori, se instalează sisteme de dimensiuni mici, bazate pe cerințele cazului de utilizare.

Localizarea indoor bazată pe Bluetooth a făcut progrese în ultimii ani, realizându-se un release pentru Bluetooth 4.0. Astfel s-a introdus o nouă tehnologie numită BLE (Bluetooth low energy) ce are o putere de consum mai scăzută decât cea a Bluetooth-ul clasic ([2]). Sistemele comerciale ce folosesc tehnologia Bluetooth sunt în curs de dezvoltare, tehnologiile și algorimii din spatele acestora sunt deseori destul de vagi și ținute în secret datorită competiției ce s-a creat. Localizarea in interior bazată pe Bluetooth poate fi folosit atât pentru urmărirea persoanelor sau a obiectelor, cât și pentru furnizarea de informații privind locația. Câteva exemple de implementare a acestor tehnici sunt spațiile comerciale, ghidurile, muzeele sau spitalele.

Proiectul vizează studierea proprietăților BLE-ului și descrie posibilitățile de aplicare a acestuia pentru a asigura localizarea indoor. Acest lucru are ca scop analizarea traiectoriei utilizatorilor în interiorul unei clădiri pentru că ulterior să se realizeze o statistică cu privire la perioada de timp petrecută de aceștia într-un anumit loc. Tehnicile sunt evaluate în două scenarii de test create pentru a imita scenarii din lumea reală dintr-un spațiu comercial.

Sistemul prezentat are două abordări: din punct de vedere al utilizatorului (clientului) căruia îi sunt funizate informații referitoare la harta contextului și locul unde acesta se afla și din punct de vedere al deținătorului magazinului ce va primi informații cu privire la traiectoria clienților și timpul petrecut de aceștia într-un anumit loc.

Rezultatele ce vizează poziționarea în interior și traiectoria utilizatorilor sunt bine investigate, analizate și explicate pe parcursul lucrarii. De asemenea, sunt prevăzute idei pentru o activitate viitoare în acest domeniu.

Principalele probleme pe care le urmărește acest proiect sunt:

Cum putem folosi tehnologia BLE pentru soluționarea problemei poziționării în interiorul unei clădiri și la ce nivel de acuratețe și precizie ne putem aștepta?

Care este gradul de încredere în semnalele primite de la echipamentele hardware?

Care sunt algoritmii și tehnicile cele mai potrivite pentru indoor location în vederea respectării anumitor standarde privind acuratețea, precizia, scalabilitatea, timpul de răspuns, utilizare?

Cum putem monitoriza perioada de timp petrecută de clienți în fata anumitor rafturi cu scopul de a obține informații referitoare la preferințele acestora?

Limitări

Localizarea indoor este studiată într-un mediu static, neaglomerat, unde obiectele nu-și schimbă poziția. Realizarea măsurătorilor este făcută în scenarii reale cu mobilier, tehnologii RF (radiofrecvența) și alte surse de obstacol sau interferențe din prezent, într-un spațiul bidimensional. Nu s-au făcut investigații în ceea ce privește puterea de consum.

Această lucrare vizează studierea tehniciilor existente în prezent în ceea ce privește localizarea “indoor” și alegerea tehnicii ce se potrivește cel mai bine în contextul unui spațiu commercial cu scopul de a furniza date legate de traiectoria clienților.

Structura lucrării

Restul proiectului este structurat în felul următor:

Capitol 2 – Analiza și modelare: În acesta secțiune vor fi prezentate realizările similare în domeniu, studiu asupra tehnologiilor folosite și analiza algoritmilor de poziționare exsitenti

Capitol 3 – Arhitectură și implementare: În acest capitol se vor prezenta date cu privire la arhitectura și implemetarea sistemului, astfel se va descrie modul în care am abordat soluțiile propuse

Capitol 4 – Evaluare: Acest capitol cuprinde evaluarea soluției, prezentarea rezultatelor obținute și în ce situații se poate folosi sistemul

Capitol 5 – Conculzii și activități viitoare în domeniu: la capitolul concluzii am prezentat la ce anume s-a ajuns cu abordările prezentate și ce activități de viitor sunt propuse

Analiza și modelare

Studiu asupra algoritmilor de poziționare indoor existenți

În acest capitol sunt prezentați și analizați, conform lucrărilor științifice studiate ([1], [2], [4]), cei mai frecvenți algoritmi folosiți pentru localizare in interior: trilaterare, triangulare, “particle filters”, “fingerprinting” și “cell based positioning”. Pentru trilaterare este necesară distanța de la cel puțin trei beacon-uri, in vederea estimarii unei poziții față de beacon-uri. Algoritmul de triangulare se bazează pe unghiuri provenite de la anumite puncte de referință folosite pentru a calcula o poziție. “Particle filters” generează mai multe poziții ce sunt filtrate bazându-se pe observații venite de la inputul sistemului. Algoritmul de “fingerprinting” constă în formarea unui map sub forma unui grid și fiecărei celule din grid îi sunt asociate atribute. Metoda “cell based positioning” se aseamănă cu cea de “fingerprinting”, deosebirea constă în faptul că se bazează pe un subset specific de beacon-uri ce sunt descoperite în fiecare regiune de interes.

Trilaterare

Este una dintre cele mai vechi și mai cunoscute metode pentru localizare in interior ([4]). Presupune cunoașterea a minim trei referințe (de exemplu coordonate “beacon”-uri) și distanțele de la acestea la obiectul căruia îi este determinată poziția. Referințele sunt considerate centrul unor cercuri, acestea fiind în număr de cel puțin trei, iar distanța este tratată ca intersecție a acestor cercuri. Ca rezultat se obține un sistem supradeterminat cu cel puțin trei equații de cerc și două necunoscute. Se folosește metoda celor mai mici pătrate pentru a estima eroarea.

Pentru calculul distanțelor de la referințe la obiect se poate folosi ca parametru RSSI-ul.

Triangulare

Această abordare se bazează pe unghiurile semnalului – „angle of arrival” (AOA) ([1]). Există mai multe metode de determinare a AOA-ului provenit de la nodul transmițător, de exemplu prin echiparea nodurilor cu antene direcționale, busole sau receptoare cu ultrasunete.

Măsurând unghiul de sosire la receptor impune ca receptorul să fie conștient de axa de referință față de care este măsurat unghiul, bazându-se pe o line estimată care trece și prin expeditor și prin receptor. Pentru a putea aplica algoritmul este nevoie de cel puțin 2 beacon-uri. Dacă există 3 beacon-uri, algoritmul poate fi redus la cel de trilaterare.

Particle filters

Este o metodă matematică folosită pentru predicția sau estimarea unei variabile necunoscute sau ascunse ([1]) pe baza unor observații venite de la sistem (variabile observabile).

În contextul poziționării variabila ascunsă este poziția mobilului, iar observabilele variabile pot fi: distanța dintre punctele de referință și mobil, estimarea poziției anterioare, inputuri de la senzori cum ar fi o busolă sau un giroscop sau date de referință cum ar fi orientarea sau mișcarea. Acest concept este folosit în multe contexte și este o alegere bună pentru indoor positioning. Avantajul acestei metode este acela că are capacitatea de a fuziona mai multe date venite ca input pentru estimarea variabilei ascunse considerată output.

Algoritmul se bazează pe generarea continua, la runtime, a mii de particule random. In contextul poziționării, aceste particule sunt reprezentări ale pozițiilor. Bazându-se pe variabilele observabile, particulele care nu corespund cerințelor sunt filtrate, în timp ce particulele ce sunt conform așteptărilor sunt selectate pentru calcularea estimării. Particulelor li se dau ponderi și în funcție de aceste ponderi ele participă în continuare la estimarea poziției sau sunt filtrate și eliminate.

Particulele sunt generate bazându-se pe ponderile celor anterioare, dublându-se cele cu pondere mare. Se bazează pe doi pași: predicția poziției și updarea poziției.

În primul pas, dacă estimarea anterioară este disponibilă, predicția curentă poate fi calculată. Poziția prezisă este funcția probabilității densității sau probabilitatea actuală a particulei. Presupunând că sunt folosite distanțele ca referințe la noduri, probabilitatea se bazează pe coordonate, orientarea anterioară și poziția trilaterală anterioară.

În pasul de actualizare particule, poziția este actualizată pentru a fi disponibilă in estimarea din următoarea iterație.

Fingerprinting

Acest algoritm presupune divizarea unui map în segmente sau griduri și este caracterizat de două mari etape ([7],[6]).

Prima etapă presupune asocierea de atribute fiecărui segment sau celulă a gridului. De exemplu, dacă folosim RSSI-ul ca atribut, o medie a RSSI-ului pentru fiecare beacon este calculată în fiecare segment. Astfel fiecare “fingerprint” conține mai multe medii de RSSI-uri și poziția segmentului din map sau celulă din grid, construindu-se o bază de date.

În cea de a doua etapă, mobilul colectează valori de RSSI de la toate beaconurile din jur și le compară cu “fingerprint”-urile din baza de date. Poziția va fi asociată “fingerprint”-ului care se potrivește cel mai bine sau mediei geometrice dintre cele mai apropiate fingerprint-uri.

Cell based positioning

Algoritmul de “cell based positioning” este similar celui de “fingerprint” mentionat anterior, doar că această abordare este mai optimizată, bazându-se pe mai multe condiții și reguli [2]. Abordarea se caracterizează, in principal, pe alegerea unor seturi de beacon-uri în funcție de regiunea curentă.

Realizări similare în domeniu

Cu scopul soluționării problemei localizarii in interior, s-au făcut diverse studii ce constă în rapoarte academice, lucrări științifice și articole ce se folosesc de Wi-Fi, Bluetooth sau senzori în combinație cu diverși algoritmi. De asemanea, există sisteme comerciale ce au încercat să găsească o soluție pentru rezolvarea problemei de localizare în interior folosind diverse tehnici de poziționare. Capitolul se va inceheia cu justificarea deciziei luată în prezenta lucrare, bazată pe comparația cu rezultatele obținute din lucrările menționate.

Particle filters

Bluetooth smart technology

În [1], se studiază mai multe tehnici de poziționare printre care care și particle filters. Evaluarea este făcută într-un mediu static unde obiectele din jur nu-și schimbă poziția în timpul măsurătorilor. De asemenea, testarea nu ia în calcul oamenii din cadru și nici nu s-a ținut cont de puterea de consum a aplicatiei-ului.

Sunt testate două scenarii: un birou de 8x11m și un lanț de birouri ce formează împreună un triunghi de 20.5x16x25.5m în total. Sistemul poate fi evaluat pe două părți: “hardware” și “software”. Pentru partea de “hardware” se folosește un telefon și un set de echipamente ce se comportă ca niște beacon-uri. Pentru partea de “software” s-a folosit un telefon ce colectează date și le trimite la un PC pentru evaluare (le trimite când le colectează sau face o medie și trimite media).

Folosind “particle filters”, variabila observabilă constă în distanța de la beacon-uri la mobil, iar variabila ascunsă este descrisă de poziția mobilului. Spre deosebire de alte lucrări ([4], [5]), variabilele observabile cu privire la orientare sunt generate random și nu este luată în considerare o busolă sau un model de mișcare al mobilului. Se generează particule random și li se dau niște probabilități în funcție de observabile. Când numărul de particule scade sub un anumit prag, se generează alte particule noi și se aruncă cele vechi (“re-sampling”).

S-au folosit 5 beaconuri și algoritmul a fost testat în 10 locații diferite din birou. În fiecare locație s-au estimat 20 de poziții calculate pe baza RSSI-ului. Se folosește o medie a 5 măsurători de RSSI pentru a diminua efectul fluctuației valorilor.

În scenariul de 8x11m, rezultatele obținute au fost foarte bune obținându-se o eroare medie de 2.337m, dar în scenariul 20.5x16x25.5m s-a obținut o eroare medie de 6.901m. Din aceste rezultate reiese faptul că acesta tehnică are rezultate mai bune pentru distanțe între beaconuri până în 5m, obținându-se în 67% din cazuri o acuratețe mai mică de 3m.

Localizare robot

Un studiu relevant asupra rezultatelor acestui algoritm s-a făcut în [4]. În acesta lucrare s-a folosit algoritmul de trilaterare în combinație cu tehnica “particle filters”, bazându-se pe RSSI-ul primit de la beacon-uri.

Primul pas a fost cel de colectare date de la beacon-uri (RSSI-ul). În al doilea pas, RSSI-ul s-a transformat în distanță folosind formula (2.1). Următorul pas constă în etapa de estimare a poziției folosind trilaterare, apoi se aplică algoritmul de particle filters bazat pe rezultatul trilaterarii și pe mișcarea robotului. Pentru aplicarea tehnicii “particle filters” se folosește Monte-Carlo localization iterativ. În prima fază se generează particule random. Probabilitățile (greutățile) se calculează pe baza a cât de aproape sunt particulele de poziția dată de trilaterare. Greutățile sunt normalizate după fiecare pas și astfel suma lor este egală cu 1. Apoi urmează o etapă de predicție unde particulele sunt mutate pe baza poziției de trilaterare și a unui vector de control de la modelul de mișcare al robotului. Acest model de mișcare folosește rotația și numărul de pași pe care îi face robotul. În acesara lucrare se obține o acuratețe de 0.427 ± 0.229 într-un scenariu măsurând 6x8m.

(2.1)

Bayesian filtering

Un studiu relevant pentru tehnica “particle filters” este [10], în care se generează random particule cu stări diferite caracterizate prin poziție, viteza și direcție. Poziția se actualizează aplicând un model dinamic. Traiectoria unei persoane constă într-o linie dreaptă iar actualizarea poziției se face pe baza unei distribuții Gaussiene la un interval de timp.

Trilaterare

Poziționare folosind trilaterare, RSSI și BLE

În [1], se studiază de asemenea și tehnica trilaterarii. Pentru transformarea RSSI-ului în distanță se folosește formula (2.2), unde „A” este energia absolută măsurată în dBm (“decibel-milliwatts”) și se calculează că medie a RSSI-ului la distanță de 1 m față de nodul de referință, iar „n” este variabilă de propagare dependenta strict de mediu și se calculează tot pe baza unei medii a mai multor valori.

(2.2)

Cu 5 beacon-uri plasate în interior, în biroul de 8x11m s-a obținut o eroare medie de 2.8m și o eroare maximă de 8.8m. Folosind acelsi număr de becon-uri, în “living room”-ul de 20.5x16x25.5m s-a obținut o eroare medie de 4.5m și o eroare maximă de 8.3m.

În acestă lucrare s-au prezentat rezultatele a mai multor tehnici de poziționare pe care le-am menționat anterior. Acestea sunt prezentate în contextul cele două cadre testate si le-am afișat în figura 2.1.

Scenariu 8x11m

Scenariu 20.5x16x25.5m

Figura 2.1: Rezultate “indoor location” conform [1]

Folosirea senzorilor din telefoanele mobile

În [3], poziția curentă se bazeaza pe semnalele transmise de beacon-uri pentru identificarea utilizatorului într-o anumită zonă. Teza de master se focuseaza pe îmbunătățirea poziției prin folosirea de senzori inerțiali și magnetici. Se folosesc accelerometrul, magnetometrul și giroscopul. Poziția telefonului trebuie să fie în buzunar sau pe talia user-ului, iar punctul de plecare și orientarea se consideră a fi cunoscute. Dar s-a testat și situația în care oamenii se plimbau în ritmul lor natural în zona respectivă.

Din alte lucrări ([16]) a rezultat faptul că lunginea pasului nu influențează foarte mult acuratețea. Se definesc soluții pentru a determina numărul de pași și orientarea și se fac diverse ajustări pentru a obține o orientare a telefonului corectă (busolă urmărește rata unghiului giroscopului). Cum giroscopul și busola nu rezolvă singuri problema poziționării, s-a căutat o soluție: algoritmul “Kalman Filter”.

S-au testat în 3 situații: cu telefonul legat de mijlocul corpului în partea stângă, cu telefonul pus în partea stângă a buzunarului stâng și cu telefonul pus în partea dreaptă a buzunarului stâng. S-a ajuns la următoarele concluzii: datele de la sezori pot fi greșite dacă telefonul nu este lipit de corp, Kalman filter poate fi afectat de tulburări magnetice, un algoritm de detecție a lungimii pasului ar putea aduce îmbunătățiri (figura 2.2).

Figura 2.2: Rezultatele obținute cu valori primite de la senzori conform [3]

Pe distanțe între 91m și 193m s-a obținut o eroare medie a poziției de 3.26m. Cu cât distanța este mai mare cu atât eroarea este mai mare. Eroarea minimă a fost de 1.4m pe distanță de 91m și eroarea maximă a fost de 13m pe distanță de 193m (figura 2.3).

Figura 2.3: Rezultate în funcție de distanța parcursă folosind adte de la senzori

Fingerprinting

Metode de implementare a tehnicii fingerprinting

În [2] s-au testat mai multe implementări pentru algoritmul de fingerprinting: “k-NN” (“k-nearest neighbors”), “k-NN regression” si “naive bayes”. S-au făcut măsurători pe un coridor de 35m lungime și 2.3m lățime și în trei camere de 6x4m.

Primul pas constă în crearea radiomap-ului zonei prin realizarea de măsurători din 2 în 2 m. Măsurătorile au fost făcute de o persoană care ține tefonul la înălțimea taliei (ca să fie cât mai aproape de realitate). Deoarece unghiul din care se primește semnalul influențează valoarea acestuia, s-au făcut măsurători din 8 unghiuri diferite.

S-a obținut o acuratețe medie de 1.62 pentru algoritmul “k-NN”, 1.60m pentru “k-NN regression” și 2.13m pentru “naïve bayes” (figura 2.4). Trebuie menționat faptul că nu sunt alți oameni prezenți, mobila nu se mută, ușile nu se închid și nu se deschid. În realitate, când se întâmplă aceste lucruri, se așteaptă la o acuratețe mai mare.

Când telefonul se afla în mișcare, se obțin rezulate mult mai slabe. Cu cât viteza de mișcare crește, cu atât corectitudinea scade și poziția sare dintr-un segment în altul. Când telefonul se oprește, atunci se revine la rezultatele anterioare de o acuratețe acceptabilă.

Îmbunătățiri menționate în lucrare sunt alegerea unei poziții strategice a beaconurilor și a fingerprinturilor și crearea unui model al mediului cu scopul excluderii posibilităților de a estima poziția în locuri unde se afla un perete sau o zonă imposibil de atins.

Figura 2.4: Rezultate folosind tehnica de fingerprinting conform lucrării [2]

Bluethoot smart technology

Un exemplu bun de implementare a acestei metode este si in [1]. Procedura a constat în două etape: etapă de training și etapa de poziționare.

În cadrul acestei lucrări s-a analizat comportamnetul RSSI-ului în funcție de mai multe distanțe, iar rezultatele obținute sunt afișate în figură 2.5.

Înainte de a se crea baza de date, se creează o hartă a locului ce v-a fi împărțit în mai multe segmente. Se folosesc 5 beaconu-uri și se face împărțirea sub formă de grid. În etapa de training, se măsoară RSSI-ul obținut din centrul fiecărui segment. În etapa de poziționare, pentru determinarea poziției, se colectează RSSI de la “beacon”-urile din jur și se compară cu ce există în baza de date pentru zona respectiva.

În contextul unei camere de 8x11m, se obține o eroare medie de 2.7m și o eroare maximă de 5.4m, iar în contextual unui living room de 20.5x16x25.5m se obține o eroare medie de 2.7m și o eroare maximă de 11.2m.

Figura 2.5: Fluctuația RSSI-ului conform lucarii [5]

Sisteme comerciale

Odată cu dezvoltarea Bluethoot-ul smart, în ultimii trei ani de zile au fost dezvoltate diverse sisteme pentru localizare “indoor”. Fiecare dintre ele s-au dezvoltat căutând soutii cu un anumit scop: unele sisteme au obținut estimarea cât mai precisă a poziției utilizatorilor folosindu-se de senzorii device-urilor, alte sisteme au avut ca scop proximitatea urmărind dacă utilizatorii au intrat într-o anumită zonă.

iBeacon

Acest sistem folosește tehnologia Bluetooth “smart” și este bazat mai mult pe estimarea locației având în vedere interacțiunea cu utlizatorii.

Nu prevede o precizie foarte ridicată, tehnica prezintă o estimare a distanței de la telefon la “beacon”-uri.

Estimote

Sistemul Estimote este similar sistemului iBeacon, acesta folosind o tehnologie licențiată a iBeacon-ului. Nu au o precizie ridicată, nu acesta fiind principalul lor scop. Sistemul furnizează locații estimative.

SenionBeacon

Este un produs realizat în laboratoarele SenionLab. Se bazează pe “sensor fusion”. Acesta furnizează o precizie mare în timp real. Ca algoritmi utlizati se bazează pe “fingerprinting” și date de la senzori cum ar fi accelerometrul sau busola.

Supermarket LED lights

Ideea a fost realizată de Philips și a fost instalată în supermarket-uri. Inovația se referă la o alternativă a sistemelor ce folosesc “beacon”-uri. Prin intremediul luminilor se transmit coduri către camera telefonului și astfel clienții pot să-și localizeze promoțiile preferate și să detecteze ofertele din jur.

Carrefour smart shopping

Sistemul dezvoltat de Carrefour permite estimarea locației clienților și se bazează pe proximitate. Sistemul folosește “Onyx Beacons” și oferă clienților informații despre ce se afla în jurul acestora.

Tehnologii folosite

Tehnologia Bluetooth

Bluetooth a fost creat pentru a permite dispozitivelor electronice să comunice între ele, fără fir, pe o rază scurtă de transmitere. Raza ce se dorește a fi atinsă depinde de mai mulți factori cum ar fi propagare, interferențe, atenuare, reflecția semnalului, puterea de transmisie și obstacole. Bluetooth smart nu numai că a adus îmbunătățiri Bluetooth-ului clasic, ci a introdus un concept nou ce nu este compatibil cu vechiul bluetooth [8]. Nouă tehnologie a fost introdusă pentru a facilita comunicarea pe o rază scurtă și între dispozitive ce nu necesită un mare transfer de date: transmitere de valori de la senzori sau comenzi de control.

Bluetooth clasic

Pentru că două device-uri să comunice între ele este necesar să se realizeze o legătură între ele. Există două moduri în care se pot afla device-urile: “slave” sau “master”. Pentru un “master”, el poate suporta maxim 7 conexiuni simultane cu diferite “device”-uri “slave”. “Master”-ul inițiază o asociere prin transmiterea countinua de mesaje de “broadcast” ce vor fi preluate de “device”-uri pe modul “slave”, acestea aflandu-se în apropiere. Astfel se va realiza conexiunea între “slave” si “master”.

Raza de transmitere a Bluetooth-ului clasic depinde de clasa “device”-ului. În funcție de raza maximă pe care o poate atinge un anumit “device”, acestea sunt împărțite în 3 clase [8]:

Clasa 1 – raza maximă : 100 m

Clasa 2 – raza maximă : 10 m

Clasa 3 – raza maximă : 1m

Bluetooth smart

Blootooth-ul smart, comparativ cu cel clasic, este cu totul diferit. Nu mai este nevoie neapărat de o conexiune între “device”-uri pentru a se face schimb de informații, ci apare modul “broadcast” unde datele pot fi trimise fără a se stabili o conexiune. Suportă 4 moduri diferite: central, periferic, “broadcaster” și observator. Modul complementar “broadcaster”-ului este observatorul ce preia date transmise de “broadcaster”.

În comparație cu Bluetooth-ul tradițional care suporta 7 conexiuni maxim, aceasta specificație este îmbunătățită, Bluetooth-ul “smart” suportând un număr infinit de conexiuni simultane.

Bluetooth “smart” definește două abordări diferite în cea ce privește descoperirea nodurilor conectate: scanare activa și scanare pasivă. În scanarea pasivă, un telefon central ascultă și preia pachete transmise de alte telefoane cu care poate comunica. Scanarea activa este asemănătoare cu cea pasivă, cu excepția faptului că se pot trimite pachete prin care se cer mai multe informații [8].

Dacă puterea razei de transmitere a Bluetooth-ul smart este setată la maxim, raza de transmitere este mai mare decât cea în cazul Bluetooth-ului tradițional, dar în ambele situații este influențată de interferențele din contextul respectiv.

RSSI-ul este un indicator al puterii semnalului. Se măsoară în dBm, iar valoarea sa este un întreg pe 8 biți ce variază între -127 și 20 dBm, unde o valoarea mai mare indica a putere de semnal mai mare. Valoarea poate fi interceptată atât în timpul scanării de “device”-uri, cât și în timpul conexiunii cu un alt “device”. Pentru a converti RSSI-ul în distanță, au fost propuși câțiva algoritmi.

TPL-ul (“Transmitted power level”) este folosit pentru power control. Specificațiile Bluetooth-ului spun că device-urile cu Tx-ul cuprins între 4-20 dBm trebuie neapărat să aibe un control al puterii. Acest lucru este făcut în vederea conservării energiei și atenuarea interferențelor. Controlul asupra puterii se referă în special la atenuarea interferentelor din mediu. TPL-ul se măsoară în dBm și poate avea o valoare maximă de +20dBm. Valoarea minimă nu este definită ci este specifică furnizorilor.

Protocolul iBeacon

Pentru o precizie ridicată asupra localizării cât și pentru a permite utilizatorilor să interacționeze cu mediul înconjurător, o soluție ar fi folosirea “beacon”-urilor. “Beacon”-urile sunt capabile să transmită prin Bluetooth semnale ce sunt interceptate de telefoanele mobile.

Dintre tipurile de “iBeacon”-uri existente pe piață, în acesta lucrarea sunt folosite “Estimote Beacons” și ”Onyx Beacons”, iar ca telefoane mobile s-au folosit telefoane ce rulează pe sistemul de operare Android.

În [8] se prezintă pe larg tehnologia iBeacon. Ceea ce este cel mai interesant în acesta tehnica este faptul că nu oferă doar detalii estimative despre locație, ci oferă informații despre ce se afla în jur. Se ajunge la o acuratețe mult mai mare decât cea oferită de GPS, mai ales în interiorul clădirilor unde GPS-ul nu mai operează cu precizie prea mare (poate chiar deloc).

Protocolul “iBeacon” este “transmit-only”. “iBeacon”-ul se comportă ca un broadcaster, el transmițând periodic pachete de informații. Telefonele mobile doar le primesc, nu trebuie să și răspundă la acestea. Pachete conțin următoarele informații:

“Universal Unique Identifier” (UUID): este un identificator pentru organizația de care aparține “beacon”-ul.

“Major number”: este folosit pentru a identifica un anumit grup de “beacon”-uri deținute de o entitate (de exmplu un anumit magazin)

“Minor number”: este folosit pentru a indentifica un singur beacon

Pentru estimarea locației se recomandă RSSI-ul [8] ce reprezintă puterea semnalului primit de “receiver”, deci acesta nu este transmis în pachet. Intervalul de transmitere a pachetelor este de 100 milisecunde, deci un “iBeacon” va transmite de 10 ori pe secundă. Intrevalul de ascultare se poate seta din aplicația telefonului punându-se în balanță bateria acestuia și necesarul de informații ce trebuie primite.

Pentru crearea unui iBeacon nu este nevoie de un “hardware” specializat, orice device ce are cel puțin Bluetooth 4.0 este capabil de a se comporta ca un “beacon” (exemplu de device-uri: un laptop “Mac” ce include chipset-uri BLE, un iOS device ce include “BLE” și are instalat un “software” specific, un “Raspberry Pi” ce are Bluetooth 4.0 USB adapter).

Cele 2 funcții principale pe care le oferă iBeacon-urile sunt:

“Monitoring”: se referă la definirea spațiului fizic și este etapa în care se verifică “UUID”-ul, “major number” și “minor number”, sistemele de operare având abilitatea de a monitoriza mai multe beacon-uri în același timp

“Ranginig”: este etapa în care se determina cât de departe se afla telefonul de un anumit “iBeacon”, acest lucru realizându-se în funcție de RSSI și de constantă de calibrare

Calibrarea constă în setarea unei constante în funcție de mediu. Acest lucru este necesar deoarece interferențele din mediu diferă de la context la context. Interferențele poți fi RF-urile, pereții sau mobila din mediul respectiv.

Beacon-urile emit semnal în toate directiile aproximativ formând o sferă. S-a dovedit că bateria telefonului nu influențează puterea semnalului, cu excepția cazului în care aceasta este foarte descărcată. Statistic s-a dovedit că există trei zone în jurul unui beacon: “Immediate” (0-20cm), “Near” (20cm-2m), “Far” (2m-70m). În “Immediate Zone” acuratețea este stabilă, în “Near Zone” acuratețea este destul de sigură, iar în “Far Zone” acuratețea și RSSI-ul sunt slabe [8].

Android

Android-ul formează un ecosistem prin combinația a trei componente ([10]):

un sistem de operare “open-source” folosit pentru “embedded devices”

o platformă “open-source” pentru crearea de aplicații

“device”-urile, în special telefoanele mobile, ce rulează pe sistemul de operare Android și pentru care se creează aplicatia

Cu un SDK (“Software Development Kit”) simplu și complex, fără taxe de licențiere, documentație excelentă și cu o comunitate mare de dezoltatori, android-ul reprezintă o oportunitate de a crea software ce schimba modul în care oamenii își folosesc telefoanale mobile.

Android-ul oferă un set de API-uri (application programming interface) de desenare 2D. Aceasta se poate face în două modalități: fie se desenează pe un “View”, în acest fel desenarea propriu-zisă este administrată de sistem în mod normal respectându-se ierarhia proceselor de desenare, fie se desenează direct pe un “Canvas”, iar în acest fel se va putea chema metoda de “onDraw()” aleasă (se deține controlul animației).

Prima opțiune este cea mai bună alegere în cazul în care se desenează ceva simplu ce nu necesită schimbări dinamice. A doua opțiune, desenarea pe un “Canvas”, este o opțiune bună atunci când aplicația are nevoie de a se redesena singură. Desenarea pe un Canvas se poate face în mai multe feluri, unul dintre el ar fi folosirea unei componente de View ce ar rula pe același fir de executie cu activitatea de UI (“User Interface”) sau prin folosirea unui “SurfaceView”, astfel obținându-se controlul cu privire la rapiditatea de desenare.

Kilobolt framework

Framework-ul Kilobolt ([4]) pune la dispoziție o intrefața grafica ce folosește componenta “Canvas” pentru a reține așa numitele “draw calls”.

Pentru un desen sunt necesare minim 4 componente: o componentă de “Bitmap” ce reține pixeli, o componentă “Canvas” ce reține cererile de desenare (desenele realizate pe “bitmap”), o primitivă de desenare (de exemplu: “Rect”, “text”, “Bitmap”) și un “Paint” pentru descrierea culorilor și stilurilor de desenare.

Tehnologii Web

Javascript este un limbaj de programare utilizat pentu crearea de pagini “web” cu scopul de a le face mai interactive. Prin intermediul acestuia se manipulează “dom”-ul (“document object model”) acesta reprezentând o structură arborescenta a paginii, astfel realizându-se modificări în mod interactiv. “Ajax” (Asynchronous Javascript XML) este o tehnică de comunicare între “browser” și “server” prin care se pot actualiza porțiuni din pagina fără a părăsi pagina. “Jquery” este o bibliotecă de Javascript ce are ca scop simplificarea dezvoltării de aplicații pe parte de client. Prin intermediul acestuia se face ușor legătura între componenete ca CSS (“cascading style sheet”) și HTML (“hypertext markup language”) în Javascript. De asemenea include funcții ce pot fi folosite pentru interacțiunea cu serverul (“Ajax”). Tot bazat pe Javascript este și “plugin” – ul “Justgage” folosit pentru generarea de animații. Are la baza librăria “Raphael” pentru desen vectorial, deci este complet independent de rezoluție și se autoreglează.

“Serverul web” produce pagini dinamic sau static în format HTML ca răspuns la solicitarea utlizatorului. GlassFish este un “container” care gestionează componenetele unei aplicații “web” -JSP-uri (“Java server pages”) și “servlet”-uri. Acesta oferă o serie de servicii cum ar fi: monitorizarea procesului de pornire și oprire al unei componente, furnizarea capacității de procesare a mai multor acțiuni la un moment dat, asigurarea securității comonentelor și a portabilității. De asemenea acesta funcționează și ca un “web server” oferind suport HTTP pentru utilizatorii ce doresc informații de pe “site”. “Bootstrap” este un framework de “front-end” ce cuprinde o serie de funcționalități pentru crearea de site-uri web. Este creat pe bază de HTML, CSS și JavaScript cu scopul de a construi componenete “user interface”.

Justificarea deciziei

În această secțiune sunt explicate și motivate decizile și alegerile ce au fost luate pe baza lucarilor științifice din domeniu, documentației despre Bluetooth “smart” și a sistemelor comeciale existenete.

Conform studiilor prezentate, pentru calculul distanței cel mai potrivit ar fi folosirea RSSI-ului ([1], [8]), acesta fiind transformat în distanță pe baza constantei de calibrare. El se măsoară în momentul în care device-ul primește pachetele de informații de la “beacon”-uri.

Trilaterarea este cea mai simplă abordare și cea mai folosită, însă în combinație cu algoritmul de “particle filters” pare a avea rezltate mai bune. De asemenea, “particle filters” este o alegere în mai multe sisteme și implementări menționate anterior.

O altă abordare ce merită a fi testată este tehnica de “fingerprinting”. Aceasta are rezultate rezonabile în lucrările prezentate ([2], [6], [7]), mai ales în cadrul sistemului “SenionBeacon” ce furnizează o precizie mare în timp real.

O decizie fiabilă pare a fi proximitatea, aceasta fiind utilă în supermarket-uri când se dorește informarea clienților despre ce se afla în jur sau despre promoțiile existente.

Alte tehnici cum ar fi “cell-based” sau triangularea sunt eliminate pentru că acestea nu oferă performante adecvate. Tehnica de “cell-based” vizează mai mult nivelul de acuratețe al camereri, iar triangularea necesita un hardware specializat pentru folosire [1].

Cele trei abordări, “particle filters”, “fingerprinting” și proximitate vor fi implementate, testate și evaluate așa cum este prezentat în următoarele capitole, cu scopul soluționării problemei localizării in interior și analiza ulterioară a acesteia.

Arhitectură și implementare

În acest capitol se vor prezenta arhitectura și implementarea alegerilor precizate în capitolul anterior. Ca tehnici de poziționare se vor studia algoritmii “particle filters”, “fingerprinting” și “proximity”, apoi se vor procesa date de la mai mulți utilizatori cu scopul de a monitoriza timpul parcurs de aceștia într-un anumit loc.

Arhitectura sistemului

Sistemul este format din mai multe module așa cum este prezentat în figură 3.1:

Componenta de android ce este împărțită în mai multe submodule: scanare “beacon”-uri, algoritmica și interfața grafică

Componentă de “Java 2EE Server” (“Enterprise Edition”)

Modulul de bază de date

Clientul de web

Figura 3.1: Arhitectura sistemului

Sistemul rulează în două scenarii de test: o cameră de 6x8m și un coridor de 1.5x12m. Acestea sunt împărțite pe mai multe zone ce sunt înregistrate în baza de date, cu scopul de a imita anumite regiuni de interes dintr-un magazin.

Componenta de android trimite către “server” informații despre cât timp au stat utlizatorii într-o anumită zonă, iar “server”-ul salvează datele într-o bază de date. Datele sunt procesate și apoi afișate într-o interfață “web”.

Modulul android

Acest modul cuprinde partea de preluare date de la “beacon”-uri, procesarea acestora, aplicarea unor algoritmi pentru determinarea poziției utilizatorului și afișarea locației într-o interfață grafică (figura 3.2).

În prima etapă se scanează datele de la “beacon”-uri, perioada de scanare fiind setată la 110 milisecunde, iar peroada între două scanării succesive este de 100 milisecunde. “Beacon”-urile emit mesaje de “broadcast” de 10 ori pe secundă iar telefoanele care asculta captează aceste mesaje prin Bluetooth. La captarea mesajului se măsoară și RSSI-ul a cărui valoare depinde de distanța dintre “beacon” și telefon. În urmatoarae etapa “BeaconManager”-ul pune date într-un accumulator pentru ca mai târziu acestea să fie preluate de algoritmi. Datele prelucrate se trimit către o intrefata grafică și astfel se afișează locația estimativă a user-ului în contextul testat.

Legătura dintre beacon-uri și device se face prin Bluetooth “smart” (BLE). Cei trei algoritmi aleși sunt tratați separat, iar la final se va face o comparație între aceștia.

Figura 3.2: Modulul de Android

Java Web

Componentă de Android se conectează la server-ul de Java și trimite date cu privire la perioada de timp a utilizatorului petrecută într-o anumită zonă. “Server”-ul procesează datele și le stochează într-o bază de date comună.

Într-o interfață “web”, pentru realizarea unor statistici, sunt afișate toate datele de la toți utilizatorii ce s-au aflat într-o anumită regiune. Arhitectura “database – web server – web client ” este ilustrata în figură 3.3.

Figura 3.3: Arhitectura aplicație web

Bluetooh “smart beacons”

“Beacon”-urile nu se caracterizează printr-un “hardware” specializat, acestea conțin Bluetooth “smart chips” și orice “device” ce are cel puțin Bluetooth 4.0 se poate comporta ca un “beacon”. Despre protocolul “iBeacon” am menționat la capitolul 2.

Dintre tipurile de “iBeacon”-uri existente pe piață, în acesta lucrarea sunt folosite “Estimote Beacons” și “Onyx Beacons”, iar ca telefoane mobile s-au folosit telefoane ce rulează pe sistemul de operare Android.

Implementare

La submodulul de algoritmica s-au implementat toate cele trei abordări alese: “particle filters”, “fingerprinting” și proximitate. Pentru preluarea datelor de la senzori s-a folosit clasa “BeaconManager”, iar pentru interfață grafică s-a desenat, cu ajutorul “framework”-ului “Kilobolt”, o hartă a contextului studiat și poziția estimativă a utilizatorului.

Colecționare date beacon-uri

Pentru colecționarea datelor de la “beacon”-uri, s-a folosit clasa “BeaconManager”. Aceasta are următoarele funcționalități:

“monitoring”: se verifică zona de interes (dacă un device a intrat sau a ieșit dintr-o anumită zonă), apoi se verifică UUID-ul, “major number”-ul și “minor number”-ul, sistemele de operare având abilitatea de a monitoriza mai multe beacon-uri în același timp

“ranging”: este etapa în care se acumulează date de la beacon-uri și se măsoară RSSI-ul

Un exemplu de ulizare al funcționalităților date de clasa “BeaconManager” este ilustrat mai jos în secvența 3.1 (preluare date de la beacon-uri).

–––––––––––––––––––––––––––-

RangeNotifier rangeNotifier = new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for(Beacon beacon: beacons) {
accumulator.add(beacon.getBluetoothAddress(),beacon.getRssi());
}
}
};

––––––––––––––––––––––––––

Secvența 3.1: Exemplu colectare date beacon-uri

Implementare algoritmi

Particle filters

Implementarea algoritmul “particle filters” se caracterizează, în prima fază, prin preluarea RSSI-ului rezultat de la interacțiunea cu “beacon”-urile și transformarea acestuia în distanță (în funcție de constanta de calibrare, folosindu-se formula 2.2). Inițial se generează particule random pe toată suprafața. Estimându-se poziția utilizatorului folosind trilaterare, se aplică tehnica filtrării particulelor bazată pe rezultatul trilaterarii și mișcarea robotului. Probabilitățile (greutățile) se calculează pe baza a cât de aproape sunt particulele de poziția dată de trilaterare. Greutățile sunt normalizate după fiecare pas și astfel suma lor este egală cu 1.

Variabila ascunsă este descrisă de poziția mobilului, iar ca variabilă observabilă s-a ales doar distanță de la beacon-uri la mobil. Spre deosebire de alte lucrări ([3]), nu se preiau date de la senzori (pedometru sau busolă) întrucât acestea pot fi greșite. Variabilele observabile cu privire la orientare sunt generate random și nu este luată în considerare o busolă sau un model de mișcare al mobilului (figura 3.1).

Figura 3.1: Algoritm “particle filters”

Etapa de “sampling” este ilustrata în secvența 3.2. Acesata constă în dublarea particulelor cu greutate mare prin înlocuirea particulelor cu probabilitate mică cu particulele ce au probabilitate mare. Deci cele cu probailitate mare se vor dublă. Se alege random o greutate a unei particule și se compară cu dublul greutății cea mai mare. Atâta timp cât greutatea aleasă este mai mică decât dublul greutăți maxime, aceasta se scade din greutatea maximă și se alege următoare greutate.

––––––––––––––––––––––––––––––––––––––––––––––Random rn = new Random();
int index = rn.nextInt(Constants.NR_PARTICLES);
double beta = 0;
double [] weights = new double[Constants.NR_PARTICLES];
for (int k=0; k<particles.length; k++){
weights[k] = particles[k].getWeight();
}
double max = maxWeights(weights);

Particle [] particleFinal = new Particle[Constants.NR_PARTICLES];
Random r2 = new Random();

for(int i=0; i<weights.length; i++){
beta+=r2.nextDouble()*2*max;
while (beta > weights[index]){
beta-=weights[index];
index = (index + 1) % Constants.NR_PARTICLES;
}
try {
particleFinal[i] = (Particle)particles[index].clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}

}

––––––––––––––––––––––––––––––––––––––––––––––

Secvența 3.2: Etapă de “sampling” din algorimtul de fingerprinting

Fingerprinting

Se împarte suprafața testată sub formă de griduri. Algoritmul finerprinting constă în două etape: etapă de antrenare (figura 3.2 a) în care se fac măsurători din mijlocul fiecărui segment și etapa de poziționare (figura 3.2 b) când se compară RSSI-ul primit dintr-un segment al gridului și măsurătorile din setul de antrenare.

Se fac 5 seturi de măsurători timp de un minut, din mijlocul fiecărui segment. Astfel vom avea date primite de la toate “beacon”-urile în același timp, timp de un minut. În funcție de frecvența de apariție a anumitor valori, se calculează numărul de apariții al acestora, astfel creându-se o distribuție gausiana de valori.

Vectorul de apariții se normalizează și fiecare valoare va avea asociată o pondere. Acesta pondere va fi fi folosită în etapa de poziționare, când se înmulțesc ponderile de la fiecare beacon, pentru o anumită coordonată. Coordonată cu ponderea cea mai mare va indica poziția telefonului (figura 3.2).

a) b)

Figura 3.2: Algoritm fingerprinting

Etapa de cumulare a probabilitatilor de apariție a valorilor de RSSI este ilustrata în secvența 3.3. Fiecare clasa “Beacon” conține un set de valori cărora le sunt atribuite ponderi, iar aceste ponderi sunt comparate cu valorile obținute în seturile de antrenare. Astfel se obține, pentru fiecare coordonată, o pondere totală, iar coordonata ce are cea mai mare pondere totală se va alge ca fiind poziția estimată.

Coordonatele studiate au fost cele reprezentate de centrul segmentelor. Valorile seturilor de antrenare sunt preluate din niște fișiere externe ce au formatul astfel încât să se mapeze pe componentele unei clase Beacon.

–––––––––––––––––––––––––––-

public class Beacon {

public final float[][][][] probability = new float[Constants.NR_LINES]

[Constants.NR_COLUMNS][Constants.NR_SET_TRAINING]

[Constants.NR_VALUES_PROBABILITY];

}

private final Map<Strâng, Beacon> beacons = new HashMap<Strâng, Beacon>();

for (Map.Entry<Strâng, Integer> entry : values.entrySet()) {
Beacon b = beacons.get(entry.getKey());
if (b != null) {
for (int i = 0; i < Constants.NR_LINES; i++) {
for (int j = 0; j < Constants.NR_COLUMNS; j++) {
for (int k = 0; k < Constants.NR_SET_TRAINING; k++) {
probabilities[i][j] *= b.probability(i, j, k, entry.getValue());
}
}
}
}
}

––––––––––––––––––––––––––––––––––––––––––––––

Secvența 3.3: Etapă de cumulare a probabilităților totatle ale coordonatelor

Proximitate

Pentru acesata abordare am cumulat inițial RSSI-ul primit de la fiecare “beacon” într-un anumit moment, timp de câteva 2-3 secunde. În următoarea etapă, am preluat valoarea cea mai des întâlnită cumulata de la fiecare “beacon” în parte și am calculat maximul dintre aceste valori. Acest maxim ne poate spune care este beacon-ul de care telefonul se afla cel mai aproape. “Beacon”-urile au fost puse în mijlocul fiecărui segment, astfel prin rezultatul obținut (“beacon”-ul ce emite cel mai puternic semnal), se estimează segmentul în care se afla device-ul.

Figura 3.3: Proximity

Android

Că interfața grafică s-au realizat două hărți pentru cele două contexte studiate, camera de 6x8m și coridorul de 1.5x12m, cu ajutorul “framework”-ul pentru grafica “Kilobolt”. Folosind acest framework s-a reușit afișarea grafică a poziției estimativă a utilizatorului ce se afla în contextul respectiv (figura 3.4)

Desenarea s-a realizat pe un “SurfaceView” pentru randare mai rapidă a imaginiilor și s-a folosit o componentă de “Canvas”. “SurfaceView”-ul se ocupă de plasarea imaginii în locația corectă a ecranului. Accesul la suprafață principală este asigurat prin interfața “SurfaceHolder” ce poate fi recuperată prin apelarea metodei getHolder().

Figura 3.4: Context birou de dimensiuni 1.5x12m

Pentru conexiunea cu serverul de Java s-a folosit un “framework” numit “Retrofit”. Acesta este un “REST API” ușor de folosit ce are numeroase funcționalități. În “Retrofit” obiectele sunt serializate “by default” în format “JSON” (JavaScript Object Notation). Un exemplu de folosire a acestui “framework” este ilustrat în secvența 3.5. Pentru utilizarea acestuia se necesita existența a 3 clase:

Un POJO (“Plain Old Java Object”): reprezintă clasa model, “JSON”-ul primit de pe server este adăugat în acesta clasa

O interfață: reprezintă clasa prin care administrăm apelurile URL (Uniform Resource Locator)

Un adaptor pentru partea de client: este așa numita clasa “RestClient”

–––––––––––––––––––––––––––––––––––––––

public interface RestService {
@POST("/CustomerBehaviour/Incoming")
public void sendInfoUser(@Body SendModel sendModel, Callback<Strâng> callback);
}

public class Requests {
private static RestAdapter restAdapter = …

private static RestService service = restAdapter.create(RestService.class);
public static void sendInfoUser(SendModel sendModel, Callback<Strâng> callback) {
service.sendInfoUser(sendModel, callback);
}

}

––––––––––––––––––––––––––

Secvența 3.5: folosire “Retrofit framework”

Aplicația rulează pe mai multe firuri de execuție asincrone. Pe lângă firul de execuție principal (“thread”-ul de “UI”) se execută firul de executie pentru randarea suprafeței (“SurfaceView”-ul), firul de executie cu ajutorul căruia se preiau date de la “becon”-uri (100 de mimisecunde de ascultare și 110 milisecunde de repaus), firul de executie ce rulează algoritmii și trimite către interfața grafică eventualele modificări (se execută o dată pe secundă sau de două ori pe secundă, în funcție de algoritm) și firul de execuție ce trimite date serializate în format “JSON” către “server”-ul de Java cu privire la timpul petrecut de clienți inttr-o anumită zonă (o dată la 10 secunde).

Pentru construirea aplicației s-a folosit instrumentul de construire numit “Gradle”. Acesta este util pentru că aplicația software să poată fi extinsă, testată și menținută ușor.

Serverul web

Pentru crearea aplicației “web” s-au folosit diverse “framework”-uri pe parte de client (“Bootstrap”, “Javascript”, “AJAX”, “jQuery”, “Justgage”) și astfel s-a obținut o interfață cu ajutorul căreia se poate monitoriza timul petrecut de clienți într-o anumită zonă dintr-un anumit context. Cu ajutorul “plugin”-ului de “javascript” numit “JustGage”, s-a realizat afișarea pe grafice a timpului petrecut de toți utlizatorii studiați într-o anumită regiune, iar datele sunt preluate de pe server prin intermediul unui apel “AJAX”. Timpul este monitorizat pe parcursul unei zile (24 de ore) conform figurii 3.5.

Figura 3.5: Monitorizare timp total parcurs de utilizatori într-o anumită zonă

Evaluare

În acest capitol sunt prezentate criteriile de evaluare ale sistemului de estimare a locației, bazat pe tehnnologia Bluetooth smart. Sunt testați mai mulți algoritmi de poziționare cu scopul de analiză a traiectoriei utilizatorilor. De asemenea, sunt precizate scenariile de utilizare ale aplicației.

Criterii de evaluare

Pentru evaluarea poziționării bazată pe Bluetooth smart, am definit o serie de criterii de testare. Se pot define o serie de caracteristici importante în contextul localizării in interior. În funcție de importanta acestora pentru acest proiect, acestea sunt prezentate mai jos:

– precizie și acuratețe: un sistem de localizare bun trebuie să asigure o acuratețe cât mai mică și să fie cât mai precis, astfel ca utilizatorul să se poată localiza într-un anumit loc cu o eroare cât mai mică

– scalabilitate: sistemul trebuie să fie scalabil astfel încât să permită extinderea suprafeței cu un efort minim

– folosirea aplicației de către mai mulți utilizatori in mod simultan: atunci când se conectează la aplicație mai mulți utilizatori in același timp, sistemul trebuie să fie suficient de stabil pentru a se menține

– timp de răspuns: timpul de răspuns trebuie să fie cât mai realistic, astfel încât poziționarea în intreriorul camerei să aibe rezultate cat mai rapide (la fel și datele cu privire la timpul petrecut de utilizatori ar trebui să se actualizeze cat mai repede)

Analiza RSSI

În acesta secțiune sunt prezentate caracteristici ale RSSI-ului pe baza căruia se face localizarea “indoor”. În comparație cu Bluetooth-ul clasic, se aștepta ca RSSI-ul “smart” să aibe următoarele caracteristici:

Valoarea RSSI-ului în cazul în care telefonul nu se afla în mișcare (este static) nu este una stabila, ea poate varia cu valori cuprinse într-un anumit interval

Există o corelație între RSSI și distanța bazată pe formula 2.1 descrisă la capitolul 2.

Măsurarea statică a RSSI-ului

Prin măsurarea statică a RSSI-ului s-a analizat cât de mult variază acesta în funcție de multiplele interferențe din mediu și cum fluctuează în funcție de distanță. S-au făcut măsurători pe distanțe de 0.5m, 3m, 10m și 15m, iar rezultatele obținute sunt ilustrate în figură 4.1.

Variație RSSI la 0.5m b) Variație RSSI la 3m

Variație RSSI la 10m d) Variație RSSI la 15m

Figura 4.1: Variația valorii RSSI

Pentru calculul posibilității de apariție a unei anumite valori, s-a ales un interval de la -99 la -40 și s-au făcut măsurători pentru două “beacon”-uri în paralel, la o distanță de 5m și 10m. Rezultatele sunt afișate în figura 4.2.

S-a observat faptul că “beacon”-urile oferă valori de RSSI asemănătoare pe distanțe diferite ce se modifica de la o măsurătoare la alta pentru același “beacon”. De asemenea, măsurătorile diferă și de la “beacon” la “beacon” pe aceeași distanță, deci nu există un standar precis de limitare al intervalului de valori obținute.

5m b) 10m

Figura 4.2: Probabilitatea de apariție a unei valori RSSI

Valorile RSSI-ului fluctuează mult, chiar și pentru o măsurătoare statică. Însă se menține un standard de apariție a unei anumite valori, acesta fiind valoarea cu probabilitate de apariție cea mai mare.

RSSI vs distanță

Pentru transformarea RSSI-ului în distanță este necesară etapă de calibrare (toate “beacon”-urile trebuie testate și calibrate).

Cu ajutorul formulei 2.2, se calculează distanță (d-ul). Constanta “A” din formulă reprezintă o medie de RSSI pe care o arata beacon-ul la un metru. De asemenea, trebuie calculat “n”-ul din formula, ce reprezintă o ajustare în funcție de mediu (acesta se reglează în funcție de mai multe măsurători).

În figură 4.3 este ilustrat modul în care RSSI-ul variază în funcție de distanță. Pe grafic sunt puse valorile cele mai des întâlnite de “beacon”-uri pe o anumită distanță și se observă că pot fi aceleași valori la distanțe diferite.

Figura 4.3: Variație RSSI în funcție de distanța de măsurare

RSSI vs unghi

Pentru investigarea influenței unghiului s-a testat pe două de beacon-uri în felul următor: s-au așezat beacon-urile la diferite distanțe de telefon și în fiecare poziție s-au evaluat 4 unghiuri. Rezultatele obținute sunt illustrate în figură 4.4.

0.5m b) 1m

c) 5m d) 10m

15m

Figura 4.4: RSSI in functie de unghi

Se observă că unghiul dintre “beacon” și telefon afectează măsurarea RSSI-ului: cu cât distanța este mai mare cu atât RSSI-ul pare a fi mai stabil din punct de vedere al unghiului de măsurare.

Concluzie RSSI

RSSI-ul este un paramatru destul de nefavorabil pentru poziționare. O relație stabilă între distanta și RSSI se poate observa numai atunci când mobilul și “beacon”-ul sunt foarte aproape unul de celălalt. După câțiva metrii, RSSI-ul începe și oscilează foarte mult. Acest lucru se datorează interferentelor din mediu. De asemenea, se observă o diferență de măsurare de la un telefon la altul, chiar dacă acestea au aceleași proprietăți.

Prin compararea de măsurători repetate într-un context static unde obiectele nu se mișca, rezultatele sunt asemănătoare. Acest lucru însemna că se poate crea o harta de “fingerprint”-uri ce poate fi salvată și folosită, luând în considerare faptul că mediul înconjurător nu se schimbă foarte mult. Acestă abordare este mai corectă decât celelalte abordări care se bazează pe distanța provenită de la valoarea RSSI-ului.

Mediu de test

Evaluarea este făcută la unul din sediile firmei Teamnet, într-un birou de 8x6m și un coridor de 1.5x12m. În ambele scenarii sunt prezente tehnologii RF și mobila. Există rețele de Wi-fi și este foarte posibil ca și alte dispositive Bluetooth să fie active în incinta. Deci mediul este plin de zgomot și obstacole cea ce îl face să fie asemănător unui scenariu tipic din viața reală unde se poate monta un sistem de indoor positioning.

Rezultate

În acesta secțiune sunt prezentate rezultatele obținute la testarea scenariilor menționate anterior.

Coridor 1.5x12m

Am împărțit un coridor pe o distanță de 12×1.5m în 3 segmente și am pus câte un beacon în fiecare segment (în mijlocul segmentului) asemănător figurii 4.1.

Figura 4.1: Împărțire coridor pe segmente

Fingerprinting

După etapa de training, am făcut 20 de măsurători din mijlocul fiecărui segment (din 4 în 4 m) și am obținut o acuratețe așa cum este ilustrata în tabelul 4.1.

Tabel 4.1: Acuratețe fingerprinting în contextul unui coridor

Observații:

se obține o acuratețe de <4m în 88.3% din cazuri și de <8m în 95% din cazuri

în mișcare poziția estimată poate să sară de la un segment la altul

Proximitate

Pentru proximitate am luat câte 20 de măsurători din interiorul fiecărui segment, iar rezultatele obținute sunt illustrate în tabelul 4.2.

Tabel 4.2: Acuratețe proximitate în contextul unui coridor

Observații:

se obține o acuratețe de <4m în 90% din cazuri și de <8m în 98.3% din cazuri

în mișcare poziția estimată poate să sară de la un segment la altul

Particle Filters

Pentru aplicarea algoritmului de particle filters, ne-am plimbat cu telefonul de-a lungul coridorului și am luat câte 20 de măsurători la 7 coordonate. Rezultatele obținute sunt illustrate în tabelul 4.3.

Tabel 4.3: Acuratețe particle filters în contextul unui corridor

Observații:

se otine o acuratețe de <0.5m în 34.2% din cazuri, de <1m în 54.2% din cazuri, de <2m în 80.7% din cazuri și de <3m în 97.8% din cazuri

se observă o acuratețe mai bună spre centrul coridorului

Comparație – “particle filters” vs “proximity” vs “fingerprinting”

Se observă că algoritmul de fingerprinting are rezultate puțin mai slabe în comparație cu metoda proximității. De asemenea, se obține un efort mult mai mare în cazul algoritmului de fingerprinting datorită etapei de training, iar dacă se schimbă ceva în cadrul contextului unde s-a făcut training, rezultatele tind să fie și mai slabe. Deci comparând cu fingerprinting, metoda proximității are rezultate mai bune și este mai puțin costisitoare de timp.

Însă se observă o acuratețe mult mai bună în cazul algoritmului de particle filters față de ambele metode menționate anterior. Încă un avantaj ar fi faptul că poziția estimată nu sare brusc la distanțe foarte mari față de estimarea curentă.

Camera 8mx6m

Fingerprinting vs Particle Filters

Am împărțit o cameră de 800mx600m în 12 segmente (din 2 în 2 m) și am așezat 5 beacon-uri în interiorul acesteia așa cum este ilustrat în figură 4.2.

Figura 4.2: Împărțire office pe segmente

Fingerprinting

Se fac seturi de antrenari în care se reține câte un vector de valori de RSSI pentru fiecare “beacon” pentru toate cele 12 segmenete. Pentru analiza tehnicii de “fingerprinting”, se fac câte 20 de măsurători din mijlocul fiecărui segment, după care pe baza rezultatelor obtiunte am calculat acuratețea așa cum este ilustrat în tabelul 4.4.

Tabel 4.4: Acuratețe office fingerprinting

Procentajul de poziționare în segmentul corect (adică cu o acuratețe mai mică de 2m) este ilustrat în tabelul 4.5, iar procentajul de poziționare la un segment distanță (într-unul din segmentele din jur) este ilustrat în tabelul 4.6.

Tabel 4.5: Procentaj poziționare segmentul corect – fingerprinting

Tabel 4.6: Procentaj de poziționare la un segment distanta – fingerprinting

Observații:

Se obține o acuratețe de <2m în 41% din cazuri și de <4m în 87% din cazuri.

În colțuri și în mijloc se obțin cele mai bune rezultate (adică în locurile cele mai apropiate de beacon-uri).

În mișcare, poziția estimată sare de la un segment la altul destul de des

Particle Filters

Pentru studierea algoritmului de particle filters am realizat o simulare a acestei tehnici în care utilizatorul era mișcat cu ajutorul unor butoane. Distanțele de la “beacon”-uri la particule sunt destul de corecte atâta timp cât am simulat semnale de RSSI ca fiind cât mai precise și nu foarte fluctuante. Simularea are rezultate foarte bune, particulele estimanad poziția simulată a user-ului care este controlată prin butoane. O imagine semnificativă a rezultatelor se afla în figura 4.3.

Figura 4.3: Simulare “particle filters”

Pentru a testa în realitate am făcut 20 de măsurători pentru 7 segmente din mijlocul acestora. Rezultatele sunt prezente în tabelul 4.7.

Tabel 4.7: Acuratețe office particle filters

Procentajul de poziționare în segmentul corect (<2m) este ilustrat în tabelul 4.8, iar procentajul de poziționare la un segment distanța este prezentat în tabelul 4.9.

Observații:

Se obține o acuratețe de <2m foarte bună în cele două segmente din mijlocul camerei și foarte slabă în restul segmentelor, iar o acuratețe de <4m s-a obținut în 97.5% din cazuri.

Se observă că poziționarea obținută este foarte aproape de centru camerei, ea deplasându-se foarte puțin față de centru în funcție de mișcarea telefonului, astfel se poate spune, în cele mai multe cazuri, în ce sfert de cameră se afla acesta.

Tabel 4.8: Poziționare în segmental corect – particle filters

Tabel 4.9: Poziționare la un segment distanta – particle filters

Pentru a estima cât de precisă este informația de poziționare în sfertul de cameră corect, am reîmpărțit camera în 4 regiuni așa cum este ilustrat în figură 4.4.

Figura 4.4: Reîmpărțirea office-ului în 4 regiuni

Am denumit sferturile de cameră în felul următor astfel că vechile segmente vor aparține de cele noi:

0, 1, jumătate din 4 și jumătate din 5 aparțin de Segment I

2, 3 jumătate din 7 și jumătate din 6 aparțin de Segment II

8, 9, jumătate din 4 și jumătate din 5 aparțin de Segment III

10, 11, jumătate din 6 și jumătate din 7 aparțin de Segment IV

S-au evaluat rezultatele obținute și s-au grupat în funcție de sfertul de camera spre care indicau. Procentele obținute sunt ilustrate în tabelul 4.10.

Observații:

Se obține o poziționare în sfertul de cameră corect în proporție de 80%

Cu cât te apropii mai mult de unul din beacon-uri, cu atât algoritmul tinde să vină în sferul de cameră corect

Tabel 4.10: Procente obținute față de sfertul de cameră correct – particle filters

Comparație – Fingerprinting vs Particle Filters

Pentru o acuratețe de <2m este mult mai bun algoritmul de “finerprinting” și foarte slab algoritmul de “particle filters”, dar pentru o acuratețe de <4m este mult mai precis algoritmul de “particle filters” și are și rezultate mai bune.

Pe o distanata mai mică de 3m algoritmul de “particle filters” are rezultate foarte slabe, acesta estimând poziția foarte aproape de centru în cele mai multe cazuri, dar se pot obține informații referitor la ce sfert din cameră se afla device-ul în 80% din cazuri.

Proximitate

Alegând acesta metodă, pentru a ne aștepta la o acuratețe de <2m, este necesar plasarea de beacon-uri din 2 în 2 m în fiecare segment.

Astfel am împărțit o cameră de 800mx600m în 12 segmente și am așezat 12 beacon-uri în interiorul acesteia așa cum este ilustrat în figură 4.5.

Figura 4.5: Aranjare beacon-uri pentru aplicare proximitate

Pentru a testa proximitatea am făcut câte 20 de măsurători din interiorul fiecărui segment, iar rezultatele pe care le-am obținut sunt afișate în tabelul 4.10.

Tabel 4.10: Acuratețe office – proximitate

Procentajele de poziționare în segmentul corect (cu o acuratețe mai mică de 2m) sunt afișate în figură 4.6, iar cele de poziționare la un segment distanță (cu o acuratețe mai mică de 4m) sunt ilustrate în figură 4.7.

Figura 4.6: Acuratețe proximitate în același segment

Observații:

Se obține o acuratețe de <2m în 85% din cazuri și de <4m în 98% din cazuri.

Un dezavantaj ar fi acela că, în mers, estimarea poziției sare de la un segment la altul.

Figura 4.7: Acuratețe proximitate la un segment distanță

Caracteristici rezultate

Particle Filters

Dacă se așteaptă o acuratețe de <2m, algoritmul “particle filters” are rezultate mult mai bune în cazul în care “beacon”-urile sunt așezate în linie dreaptă pe un coridor în comparație cu rezultatele în cazul în care “beacon”-urile sunt plasate în interiorul unei camere.

În cazul în care se aștepta la o acuratețe de <4m, în contextul prezentat, se obțin rezultate foarte bune pentru acest algoritm. Însă pentru o acuratețe de <4m, o idee la fel de bună ar putea fi proximitatea care ar avea rezulate asemănătoare.

În comparație cu “fingerprinting”, “particle filters” are rezultate foarte slabe în contextul unei camere de 8x6m folosind 5 beacon-uri pentru o precizie de <2m, dar este mult mai bun în cazul în care “beacon”-urile sunt plasate în linie dreaptă la distanță de 4m, obținându-se o acuratețe destul de bună.

O altă particularitate a acestui algoritm este aceea că poziția estimată nu sare foarte departe de poziția anterioară, spre deosebire de celelalte metode când se poate întâmpla acest lucru dedtul de des, mai ales în mers.

Se observă rezultate destul de slabe în comparație cu simularea, caz în care se primesc distanțe corecte de la “beacon”-uri.

Fingerprinting

Pentru o acuratețe de <2m și “beacon”-uri plasate random la distanțe mai mari de 2m, algoritmul de “fingerprinting” este mai bun decât proximitatea sau “particle filters”. Pentru “beacon”-uri plasate la distanțe de 2m, proximitatea are rezultate puțin mai bune în comparație cu “fingerprinting”. Cu “beacon”-uri plasate în linie dreaptă, “particle filters” are rezultate mult mai bune chiar și pentru o acuratețe de <2m.

Un dezavantaj foarte mare al acestei metode este etapa de antrenare în care se fac set-uri de antrenamente pentru a “învăța” poztia corectă. În plus, antrenamentul ar putea fi influențat negativ de schimbările de context din cadrul respectiv.

O altă problemă a acestei abordări ar fi scalabilitatea. În cazul extinderii spațiului de analiza, extinderea sistemului implica un efort destul de mare datorită “fingerprint”-urilor ce trebuie reluate la granița dintre zona vechie și zona nouă introdusă și datorită noilor “fingerprint”-uri ce trebuie făcute.

Proximitate

Acesta metoda are rezultate foarte bune în cazul în care “beacon”-urile sunt plasate la distanțe aproximativ egale cu acuratețea ce se dorește a fi obținută, dar cu cât acuratețea este mai mică (la fel distanța dintre beacon-urilor) cu atât mai mult rezultatele fluctuează între segmentul corect și segmentele vecine.

Analiza timplui petrecut de clienți într-un anumit loc

În contextul unui spațiu de 6x8m, cu scopul de a analiza comportamentul clienților în vederea descoperii preferințelor acestora, s-a ales metoda cu cele mai bune rezultate în contextul unei camere unde se dorește o acuratețe de aproximativ 2m.

S-a testat cu 2 utilizatori care s-au plimbat în interiorul spațiului de 6x8m, în același timp, timp de 2 minute, ce au avut următoarea traiectorie reală:

ușer 1: 10 secunde în segmentul 0, 10 secunde în segmentul 3, 10 secunde în segmentul 7, 15 secunde în segmentul 8, 10 secunde în segmentul 0, 20 secunde în segmentul 3, 10 secunde în segmentul 0, 10 secunde în segmentul 3, 10 secunde în secmentul 7

ușer 2: 10 secunde în segmentul 3, 10 secunde în segmentul 5, 10 secunde în segmentul 10, 15 secunde în segmentul 9, 10 secunde în segmentul 3, 20 secunde în segmentul 5, 10 secunde în segmentul 3, 10 secunde în segmentul 5, 10 secunde în secmentul 10

În tabelul 4.11 este ilustrat timpul real petrecut de clienți în segmentele camerei, pentru valori mai mari de 6 secunde, iar în tabelul 4.12 este ilustrat ceea ce s-a obținut în urma aplicării metodei de proximitate, tot pentru valori mai mari de 6 secunde. Proximitatea a dat informații cu privire la segmentul în care se afla user-ul la fiecare 2s.

Tabel 4.11: Timpul real petrecut de clienți în fiecare segment

Tabel 4.12: Timpul obținut în fiecare segment aplicând proximity

Utilitatea sistemului

Un sistem de localizarea indoor poate fi folost în diverse scenarii cum ar fi un spital (se poate crea o hartă unde este estimată pozitia curentă a user-ului și prezentarea de detalii cum să ajungă într-un anumit loc, fapt ce ar fi foarte util pentru pacienți), un muzeu (poate fi folosit pe post de ghid prin oferire de informații când vizitatorul a ajuns într-un anumit loc), în aeroport (ar fi foarte util de folosit ca o prezentarea a pașilor ce trebuie făcuți într-un aeroport prin estimarea locației curente și prezentarea drumului spre următoarea etapă) sau într-un mall (prin prezentarea de promoții în funcție de locația curentă și sugestii despre cum se ajunge în magazinul preferat).

Acesata lucrare vizează utilitatea sistemului de localizare in interior în principal din două puncte de vedere:

a clientului, pentru a i se furniza locația estimativă și pentru că acesta să poată vizualiza o hartă a magazinului, astfel găsind mai ușor articolele preferate

a deținătorilor magazinului, aceștia având posibilitatea de a analiza timpul petrecut de clienți în diferite zone ale magazinului și de a extrage informații despre zonele de interes maxim (pentru că ulterior să poată să introducă noi promoții în funcție de numărul de clienții interesați)

Comparații cu alte sisteme

În [1] s-au obținut aproximativ aceleași rezultate cu sistemul propus de noi, acestea fiind considerate mai bune sau mai proaste în funcție de context. Se folosește Bluetooth “smart”, 5 “beacon”-uri puse la distanță de aproximativ 5m în primul caz și de aproximativ 7m în cel de al doilea caz. După o selecție a celor mai buni algoritmi testați, s-a obținut o eroare medie de 2.3m în primul scenariu folosind “particle filters” și de 2.7m în cel de al doilea scenariu folosind “fingerprinting”. Noi am obținut, folosind proximitate și “beacon”-uri puse din 2 în 2m, o eroare medie de 2m , iar folosind “particle filters”, cu “beacon”-uri puse din 4 în 4 m în line dreapta, am obținut o acuratețe mai mică de 2m în 80% din cazuri și de 3m în 97% din cazuri. Rezultatele sunt asemănătoare și se pot compara cele 2 sisteme în funcție de contextul de aplicare (dacă se dorește o acuratețe mai mică de 3-4m și mai puține “beacon”-uri, se obțin rezultate mai bune în lucrarea [1], în schimb dacă se dorește o acuratețe de cel puțin 2m cu o precizie ridicată, sunt rezultate mai bune în cazul sistemului propus de noi, însă acesta implica folosirea mai multor “beacon”-uri).

În [3] se realizează un sistem de localizare in interior bazat pe datele primite de la senzori, dar au limitări foarte mari în ceea ce privește orientarea telefonului și poziția acestuia față de corpul utilizatorului. Pe distanțe între 91m și 193m au obținut o eroare medie a poziției de 3.26m, însă dacă telefonul se ținea în mână și nu era legat de mijlocul corpului, datele de la pedometru și de la busola nu mai erau unele corecte. Astfel, în acest caz, rezultatele au foat mult mai slabe. Din acest punct de vedere se poate spune că sistemul propus de noi este mai bun, acesta funcționând independent de poziția și orientarea telefonului.

În lucrarea [2] se propun diverse tehnici de localizare indoor folosind “fingerprinting”. Au obținut o acuratețe medie de 1.62m în cazul celui mai bun algoritm folosit, însă tehnica de “fingerprinting” nu este recomandată în locurile unde se fac modificări de context, pentru că rezultatele obținute ar fi mult mai proaste și ar trebui refăcută baza de date cu “fingerprint”-uri. În plus, sistemul nu este scalabil, în momentul în care se dorește extinderea acestuia trebuie refăcute “fingerprint”-urile ce stau la granița spațiului nou cu spațiul vechi și măsurate “fingerprint”-uri noi pentru zona nouă analizată. Din aceste puncta de vedere, sistemul propus de noi, care nu se bazează doar pe “fingerprinting”, este mai bun în contextele cu probleme menționate.

Sistemele comerciale, prezentate la capitolul 2, au fiecare un scop precis și folosesc tehniciile de poziționare indoor cele mai potrivite pentru interesele pe care le urmăresc. De exemplu cei de la “SenionBeacon” se bazează pe “sensor fusion” și furnizează o precizie mare în timp real folosind algoritmi pe bază de “fingerprinting” și date de la senzori cum ar fi accelerometru sau busolă (lucru care nu ar fi potrivit în contextul propus de noi). De asemenea, ideea realizată de cei de la Philips (Supermarket LED lights) nu se încadrează în cerințele urmărite de lucrarea curentă, sistemul propus fiind limitat de luminile ce trebuie să fie poziționate strategic în supermarket.

Concluzii și activități viitoare

Acest capitol prezintă concluziile bazate pe evaluarea sistemului și de asemenea, se precizează câteva idei pentru o activitate viitoare.

Concluzii

Sistemul de localizare in interior și de analiza al comportamentului utilizatorilor a fost testat și evaluat în două scenarii, pe baza unor algoritmi și date provenite de la mai multe “beacon”-uri, prin intermediul tehnologiei Bluetooth “smart”. Scopul proiectului a fost studierea proprietăților “BLE”-ului și descrierea posibilităților de aplicare a acestuia pentru a asigura localizarea in interior. Acest lucru vizează analizarea traiectoriei utilizatorilor în interiorul unei clădiri pentru că ulterior să se poată realiza o statistică cu privire la preferințele acestora. Pentru o înțelegere mai aprofundată a comportamentului RSSI-ului, au fost făcute teste pentru analiza acestuia.

Tehnicile sunt evaluate în două scenarii de test create pentru a imita scenarii din lumea reală, dintr-un spațiu comercial. Experimentele practice au fost făcute după un studiu amănunțit despre alte sisteme de localizare existente în prezent. Concluzia evaluării constă în faptul că Bluetooth-ul “smart” poate fi considerat o soluție viabilă pentru localizare in interior, cu un timp de răspuns bun. Abordările prezentate au dovedit o precizie ridicată și o acuratețe de câțiva metri, ceea ce este suficient pentru urmărirea user-lor în interiorul unei clădiri.

Pe parcursul desfășurări proiectului s-au descoperit insuficiențe ce trebui luate în considerare înainte de dezvoltarea unui astfel de sistem. Unul dintre ele este corelarea RSSI-ului cu distanța dintre telefon și “beacon”-uri, ce s-a dovedit a avea rezultate destul de slabe. De asemenea, RSSI-ul s-a dovedit a fi influențat de schimbările din context, lucru ce afectează în mod negativ algoritmii bazați pe locații învățate anterior.

Activități viitoare

La capitolul activități viitoare, o idee ar fi cea de rezolvare a problemei scalabilității algoritmului de “fingerprinting”, prin introducerea de algoritmi de “machine learning” cu ajutorul cărora sistemul să se poată recalibra și să-și actualizeze baza de date singur.

O altă idee de îmbunătățire ar fi poziționarea strategică a “beacon”-urile astfel încât să se obțină rezultate cât mai bune. S-a dovedit faptul că poziția beacon-uri influențează precizia și acuratețea (de exemplu atunci când telefonul este prea departe de “beacon”-uri, algoritmul “particle filters” nu mai are rezultate concludente), așa că o strategie formală pentru o poziționare corectă a “beacon”-urilor ar fi de ajutor.

De asemenea, folosirea de date adiționale de la senzorii din telefon ar putea ajuta la o acuratețe mai bună, în măsura în care datele provenite de la aceștia sunt folosite cât mai corect având în vedere faptul că pot fi de cele mai multe ori greșite. Pentru algoritmul “particle filters”, în prezent, am folosit direcții și orientări random ale particulelor, dar dacă aceste observabile ar proveni de la senzori ca pedometrul sau busola, după aplicarea unor algoritmi de “sensor fusion”, ar fi o îmbunătățire a estimării locației telefonului.

Bibliografie

[1] Dahlgren, Erik, and Hasan Mahmood. Evaluation of indoor positioning based on BluetoothR Smart technology. Diss. Master’s thesis, 2014.

[2] Bekkelien, Anja, Michel Deriaz, and Stéphane Marchand-Maillet. "Bluetooth indoor positioning." Master's thesis, University of Geneva (2012).

[3] Li, Wenjie, and Pablo Esteban Quiroga Garcia. "On indoor positioning for mobile devices." (2011).

[4] Raghavan, Aswin N., et al. "Accurate mobile robot localization in indoor environments using bluetooth." Robotics and Automation (ICRA), 2010 IEEE International Conference on. IEEE, 2010.

[5] Rodas, Javier, Carlos J. Escudero, and Daniel Iglesia. "Bayesian filtering for a bluetooth positioning system." Wireless Communication Systems. 2008. ISWCS'08. IEEE International Symposium on. IEEE, 2008.

[6] Yang, Zheng, Chenshu Wu, and Yunhao Liu. "Locating in fingerprint space: wireless indoor localization with little human intervention." Proceedings of the 18th annual international conference on Mobile computing and networking. ACM, 2012.

[7] Sutton, Oliver. "Introduction to k Nearest Neighbour Classification and Condensed Nearest Neighbour Data Reduction." University lectures, University of Leicester (2012).

[8] Gast, Matthew S. Building Applications with IBeacon: Proximity and Location Services with Bluetooth Low Energy. "O'Reilly Media, Inc.", 2014.

[9] Bloch, Joshua. "Effective java (the java series)." (2008).

[10] Meier, Reto. Professional Android 4 application development. John Wiley & Sons, 2012.

[11] Cho, James, S. The Beginner's Guide to Android Game Development. Glasnevin Publishing, 2014

[12] Witten, Ian H., and Eibe Frank. Data Mining: Practical machine learning tools and techniques. Morgan Kaufmann, 2005.

[13] Kalin, Martin. Java web services: up and running. "O'Reilly Media, Inc.", 2013.

[14] Olson, Steven Douglas. Ajax und Java. O'Reilly Germany, 2007.

[15] McFarland, David Sawyer. Javascript & jQuery: the missing manual. "O'Reilly Media, Inc.", 2011.

[16] Shala, Ubejd, and Angel Rodriguez. "Indoor positioning using sensor-fusion in android devices." (2011).

Similar Posts