[Android programiranje]

Započeo Zepi, 11.01.2011, 23:03

« prethodna tema - sledeća tema »
Idi dole

pesovic

Akcelerometar moze pomoci i da se popravi pozicija stacionarnog GPS uredjaja. Kada GPS uredjaj stoji u mestu velika je verovatnoca da ce se nece dobijati stalno jedna ista pozicija, vec ce pozicija uredjaja setati u radijusu od nekoliko desetina pa do 100 m (takva iskustva sam imao a Telit GM862-GPS uredjajem koji je opremljen poprilicno dobrom aktivnom antenom, mnogo boljom nego u bilo kom mobilnom telefonu).
Tacnost odredjivanja pozicije stacionarnog uredjaja moze se poboljsati i bez akcelerometra, ako se posmatra neki skup prethodnih odmeraka (npr, poslednjih tri pa je "prava" pozicija teziste tog trougla) a u opstem slucaju kao teziste mnogougla. Akcelerometar tu moze pomoci da se iz proracuna izbace bas velike greske GPS pozicije (ako uredjaj stvarno miruje ili pravi male pomeraje, odstrane se prevelika odstupanja od prethodno utvrdjene pozicije).

 

gagi


Sad malo fizike,

akcelerometar meri ubrzanje, a ubrzanje je prvi izvod brzine (a=dV/dt), pa ako integralis ubrzanje dobijas brzinu. Ako jos jednom integralis brzinu koja je izvod predjenog puta (V=ds/dt), dobijas relativnu poziciju (u odnosu na tacku iz koje si zapoceo integraciju). Treba napomenuti da akcelerometri uglavnom daju vrenosti ubrzanja po tri koordinatene ose x,y i z, tako da se integracija po svakoj vrsi posebno a na kraju se pozicija racuna kao s=sqrt(x^2+y^2+z^2). Isto vazi i za brzinu. Treba napomenuti da se pod integraljenjem ne podrazumeva resavanje integrala vec samo sumiranje odmeraka pomnozenih intervalom odmeravanja.

Ovaj postupak se moze koristiti ako je od neke tacke GPS signal postao los (ulazak u tunel ili zgradu) da odredis putanju dok ponovo ne dobijes dobar GPS signal. Takodje ako GPS signal "seta" oko neke pozicije, jednostavnom integracijom ubrzanja sa akcelerometra mozes znati da li je prijemnik zaista tako menja poziciju ili je u pitanju greska usled nepreciznosti GPSa. Ovo su sigurno vec dobro ispitane stvari, verujem da ima puno radova na ovu temu.


Pa ja n puta pricam o Kalmanu i dead reckoning-u i radovima na ovu temu...  :whistle2:


Naravno, uvek postoji DOP (H,V,P) koji obično pokaže da kvalitet signala nije zavidan pa se uz pomoć matematike (Kalmanov filter i još par metoda čija imena ne znam tačno ali mogu da pronađem u literaturi) može vršiti korekcija ali ti je za to potreban dodatan izvor informacija koje onda "crpiš" od akcelerometra. Ne znam o čemu je Žepi razmišljao ali kombinacija akcelerometra i GPS-a je dovoljna da se izvrši korekcija inače nepreciznog GPS signala (dead reckoning) a primetio sam da je ovo tema koja je predmet brojnih naučnih radova.



Za one koje je mrzelo da malo "proguglaju" o ovim tehnikama evo jednog citata

Citat

Automotive navigation
Dead reckoning is today implemented in some high-end automotive navigation systems in order to overcome the limitations of GPS/GNSS technology alone. Satellite microwave signals are unavailable in parking garages and tunnels, and often severely degraded in urban canyons and near trees due to blocked lines of sight to the satellites or multipath propagation. In a dead-reckoning navigation system, the car is equipped with sensors that record the wheel rotation and steering direction. These sensors are often already present in cars for other purposes (anti-lock braking system, electronic stability control) and can be read by the navigation system from the controller-area network bus. The navigation system then uses a Kalman filter in order to integrate the reliability and short-term accuracy of the sensor data with the long-term accuracy of the satellite data into a position fix that combines the best of both worlds.



holodoc

#17
14.01.2011, 19:59 Poslednja Izmena: 14.01.2011, 20:03 od holodoc
Pa ja n puta pricam o Kalmanu i dead reckoning-u i radovima na ovu temu...  :whistle2:


Naravno, uvek postoji DOP (H,V,P) koji obično pokaže da kvalitet signala nije zavidan pa se uz pomoć matematike (Kalmanov filter i još par metoda čija imena ne znam tačno ali mogu da pronađem u literaturi) može vršiti korekcija ali ti je za to potreban dodatan izvor informacija koje onda "crpiš" od akcelerometra. Ne znam o čemu je Žepi razmišljao ali kombinacija akcelerometra i GPS-a je dovoljna da se izvrši korekcija inače nepreciznog GPS signala (dead reckoning) a primetio sam da je ovo tema koja je predmet brojnih naučnih radova.
Ako sam možda i bio neprecizan pri postavljanju originalnog pitanja valjda je postalo jasno u mojim naknadnim postovima da mi ne treba objašnjenje kako  akcelerometar može da popravi tačnost GPS uređaja koji se kreće (to je samo po sebi već jasno ali u svakom slučaju hvala Urošu na trudu i napisanom objašnjenju) već kako (i da li uopšte) može da popravi tačnost uređaja koji stoji u mestu i ne pomera se. Primera radi korisnik sa GPS uređajem u bašti nekog kafića koji želi da sazna svoju trenutnu lokaciju ali bez da trči ko idiot u krug po bašti samo da bi akcelerometar imao dovoljno podataka da popravi tačnost njegovog GPS očitavanja.

Ja možda i dalje mašim neku bitnu stavku u svom rezonovanju ali glavna poenta mog pitanja ostaje da li akcelerometar, kao uređaj čija funkcija zavisi isključivo od uslova da postoji kretanje, može na bilo koji način da poveća tačnost GPS uređaja koji se ne pomera ili može da služi samo za kompenzaciju grešaka koje se javljaju usled kretanja GPS prijemnika.

Pominju se i Kalmanov filter i "dead reckoning". Dok mi Kalmanov filter liči na nešto što može bez problema da se koristi za povećanje tačnosti stacionarnih uređaja (ali i dalje ne vidim svrhu akcelerometra u takvom scenariju kad se prijemnik ne kreće) "dead reckoning" se i dalje oslanja na to da se uređaj kreće tako da ni to nije odgovor na moje pitanje :) Zašto insistiram na stacionarnosti uređaja u svom pitanju? Zato što većina korisnika mobilnih telefona sa GPS funkcijom verovatno ne trči sprintom dok očitava svoju poziciju (i time eventualno rizikuje da ga neki tramvaj ili vozilo pokupi usput) već to obično radi dok stoji u mestu.

Nadam se da sam sada otklonio nedoumicu u vezi mog pitanja :)

Za one koje je mrzelo da malo "proguglaju" o ovim tehnikama evo jednog citata
Nema potrebe za ovakvim stilskim figurama i potcenjivanjem sagovornika. Internet je postao toliko velik da mu je ta prednost postala ujedno i najveća mana jer nudi informacije širokog spektra kredibiliteta i kvaliteta pa korisnik u kratkom intervalu mora da se odluči kojem izvoru informacija više da veruje.

Ako bi se ljudi vodili logikom da su pretraživači odgovor na sva moguća pitanja šta bi onda po tome bila svrha recimo obrazovnih i naučno-istraživačkih institucija? Zar onda profesori i naučnici ne bi bili suvišni pošto bi u holovima tih institucija mogli da se postave računari gde bi studenti savlađivali svoje gradivo a ispiti bi mogli da se vrednuju na osnovu vremena koje je potrebno studentu da na Internetu nađe stranicu relevantnu za pitanje koje mu je postavljeno? Čemu onda ovakvi forumi kad sve informacije mogu da se nađu na netu?

Ako sam kulturno i uz puno uvažavanje sagovornika postavio pitanje u vezi nečega što me interesuje na mestu za koje smatram da ipak posećuju ljudi koji imaju malo veći kredibilitet od Google pretraživača i Interneta zar nije logično da očekujem bar malo kolegijalnosti i dobre volje koja se neće završiti upućivanjem na pretraživače uz potcenjivanje sagovorenika? Prosto čovek da ne poveruje da ponekad nije u pitanju lenjost ili mrzovolja kad postavi neko pitanje na forumima zar ne? :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

gagi

Nemam nameru nikoga da vređam na bilo koji način, ne znam zašto si se pronašao uvređenim. Kalmanov filter nećeš moći da primeniš bez nekog dodatnog senzora jer nemaš sve parametre koji su potrebni.   Tvoj GPS prijemnik meri GPS poziciju svake sekunde. Recimo da si u prvoj sekundi bio na mestu A a u drugoj na mestu B. U toj jednoj sekund takođe dobijaš podatke i od akclerometra pa možeš da odrediš pravac, smer  i brzinu kretanja i da izračunaš gde je tačka B. Ukoliko se podatak koji dobiješ od prijemnika i koji izračunaš na osnovu podataka sa akcelerometra ne slaže došlo je do greške i može se vršiti korekcija. Naravno, pošto ništa nije savršeno nije lako doneti odluku o načinu na koji se vrši korekcija (ko je u pravu a ko greši) i postoje razni algoritmi za korekciju ovih vrednosti a kao što sam rekao naleteo sam na par zaista kvalitetnih naučnih radova na ovu temu. Ovo bi bilo dovoljno da i sam shvatiš da niko ne mora da trči okolo (i da ga umesto tramvaja pokupi dežurna ekipa psihijatara) i da se korekcija vrši čak i dok sediš i da je to mnogo jednostavnije od situacije kada si u pokretu. Prvo, da bi došao do kafića prešao si neki put pa bi sistem već trebalo da zna tvoju lokaciju (neka to bude tačka K). Ako GPS pokaže nakon toga pokaže da si na novoj lokaciji a akclerometar miruje korekcija je naizgled jednostavna, treba samo odbaciti novu i usvojiti staru. Kažem skoro jer ipak postoji mogućnost da je u trenutu kada si došao u tačku K već bila pogrešna lokacija (usled kumulativne greške akcelerometra, varijacije GPS signala i mase drugih faktora) ali stanje mirovanja predstavlja sjajan trenutak u kome algoritam može eliminisati grešku. Što duže miruješ imaš sve više koordinata i uz dobar algoritma možeš tačno odrediti stvarnu lokaciju. Nadam se da sam otklonio sve nedoumice u vezi tvojih pitanja. Ako imaš još neke, rado ću ti pojasniti ono što znam.  :)

P.S. Sve vaći i za dead reckoning. Ne mora da se kreće, pozicija ostaje ista sve do novog kretanja.

holodoc

#19
14.01.2011, 21:44 Poslednja Izmena: 14.01.2011, 21:47 od holodoc
Ma nisam se našao uvređenim samo konstatujem da nije baš prijatno kada neko na potpuno legitimno pitanje dobije uput da "gugluje" iako je to verovatno već uradio ;)

Da remiziramo onda. U principu koji god metod da se kroisti za povećanje tačnosti GPS očitavanja svi se baziraju na pomeraju i verovatnoći a akcelerometar je u svakom slučaju zadužen za izračunavanje pomeraja (posredno naravno). Dakle i ako sedim u nekom kafiću moja pozicija će i dalje biti izračunata triangulacijom (da se tako uslovno izrazim) svih prethodnih merenja i pomerajem koje sam recimo radio od trnutka uključenja uređaja. Deluje kao poprilično neprecizan sistem kada se uzme u obzir da bi greške u tom slučaju bile kumulativne :)

Da pojasnim još malo zašto sam dodatno insistirao na nekim detaljima ovde i raspravi o preciznosti na mobilnim uređajima. Novi HTML 5 stanrdad koji se očekuje da u skorijoj budućnosti postane de facto standard za razvoj aplikacija za web i mobilne telefone u sebi sadrži tzv. Geolocation API (http://www.w3.org/TR/geolocation-API/) koji će umnogome olakšati izradu aplikacija kojima je geopozicioniranje važna stavka.

Da stvar bude interesantnija pomenuti API podržava sve sisteme mapa koje se baziraju na WGS (http://en.wikipedia.org/wiki/World_Geodetic_System) pa zaista neće biti problema prilikom brzog prelaska na korišćenje recimo Google mapa ili nekog drugog, potpuno namenskog rešenja :) Za sada se većina demoa koji se mogu naći online oslanjaju na identifikaciju lokacije hosta sa koga dolazi klijentski zahtev aplikaciji (preko IP adrese) ali kao što rekoh zahvaljujući koncepciji koja omogućava korišćenje najrazličitijih sistema za očitavanje geolokacije mogu se koristiti i drugi izvori za određivanje pozicije.

Evo jednog konkretnog primera (neophodan HTML 5 kompatibilan browser tipa Chrome, Firefox 3.5+, Safari) koji se oslanja na geolokaciju putem IP adresa (znači da umesto vaše prave lokacije može biti prikazana lokacija rutera putem kojeg se kačite na mrežu ili recimo najbližeg provajdera) ali još jednom kažem ovo je samo demonstracija koja nema za cilj da pokaže tačnost već upotrebu novog sistema.

http://html5demos.com/geo
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

gagi


Da remiziramo onda. U principu koji god metod da se kroisti za povećanje tačnosti GPS očitavanja svi se baziraju na pomeraju i verovatnoći a akcelerometar je u svakom slučaju zadužen za izračunavanje pomeraja (posredno naravno). Dakle i ako sedim u nekom kafiću moja pozicija će i dalje biti izračunata triangulacijom (da se tako uslovno izrazim) svih prethodnih merenja i pomerajem koje sam recimo radio od trnutka uključenja uređaja. Deluje kao poprilično neprecizan sistem kada se uzme u obzir da bi greške u tom slučaju bile kumulativne :)


Tako nekako, osim za nepreciznost jer i dalje imaš GPS a on ponekad ima i po 8-9 sateita u kalkulaciji a obično su tako dobijene lokacije veoma bliske stvarnoj pa se otvara mogućnost za kombinovanje. Uz dobar algoritam dobija se znatno precizniji sistem, ali za većinu civilnih potreba i ovi neprecizni su dovoljni. Kad voziš kola znaš sigurno da nisi na trotoaru. :) Zanimljivo da ukoliko pokušaš da naručiš precizni prijemnik iz SAD, prijemnik koji radi na velikim visinama ili prijemnik koji radi na brzinama večim od 1000 km/h postoji velika šansa da nećeš dobiti dozvolu njihovih nadležnih jer takvi prijemnici se koriste za navodjenje projektila. Njima je bitno da ne omanu par desetina metara.

Zepi

Citao sam Kalmanov algoritam i tek sad da kažem kad smo se malo dohvatili ove priče neke stvari mi postaju jasnije.

Uglavnom sve bi zavisilo od početne tačke.

Što se tiče tačnosti kad sam radio sa TELIT-om prijavljivao mi je da ima signale i od čak 11 satelita pa su onda koordinate veoma tacne bile.
Nakon toga pokrenuti akcelerometar i uporedjivati vrednosti nakon svake sekunde i određivati greške.

Iako mi ovo nije bila primarna tema definitivno ću se posvetiti i njoj radi sigurnosti i tačnosti.

gagi


Citao sam Kalmanov algoritam i tek sad da kažem kad smo se malo dohvatili ove priče neke stvari mi postaju jasnije.

Uglavnom sve bi zavisilo od početne tačke.

Što se tiče tačnosti kad sam radio sa TELIT-om prijavljivao mi je da ima signale i od čak 11 satelita pa su onda koordinate veoma tacne bile.
Nakon toga pokrenuti akcelerometar i uporedjivati vrednosti nakon svake sekunde i određivati greške.

Iako mi ovo nije bila primarna tema definitivno ću se posvetiti i njoj radi sigurnosti i tačnosti.


Problem je kumulativna greška pa dobar algoritam mora povremeno da "veruje" satelitu. Pored Kalmana postoje i Alpha-Beta trackeri ili nešto sličnog naziva, zaista ne mogu da se setim tačnog imena ali ako ti bude bila potrebna pomoć mogu da pronađem tačan naziv. Kad uhvati 11 satelita, Telit sigurno ima veoma dobru lokaciju. Pored broja satelita u NMEA porukama koje šalje Sirf možeš da izvučeš brdo drugih informacija koje mogu da pomognu oko određivanja kvaliteta signala. Definitivno ovde imaš dosta posla. :)

Idi gore