Laboratorija za računarsku tehniku

Softverske teme => Programiranja => Temu započeo: Zepi 11.01.2011, 23:03

Naslov: [Android programiranje]
Poruka od: Zepi 11.01.2011, 23:03
Pošto telefoni postaju sve moćniji i sa sve više ugrađenih hardverskih funkcionalnosti nameće se i ova tema.

Konkretno sve je više telefona koji su veoma pristupačni a da u sebi imaju ugrađen GPS modul, akcelerometar, žiroskop a da ne nabrajam što je tu već kamera, 3G i SD kartica, tako da ovo više nisu telefoni nego skoro razvojna okruženja.

Ako neko ima iskusta sa ovom platformom mogao bi da ih ovde iznese.

Koji su osnovni problemi?
Koliko je teško raditi sa ugrađenim hardverom u telefonu na različitim telefonima ...... i tako dalje?




Naslov: Odg: [Android prigramiranje]
Poruka od: gagi 12.01.2011, 10:04
Radio sam pre par meseci  sa Freescale i.mx51 EVK. Ploča ima podršku za Linux, Android i WinCE, procesor je zasnovan na Cortex-A8 jezgru (koje se nalazi i u iPhone-u) bio je jedan dodatak za kameru, veliki touch screen i još svašta nešto. Nije me zanimo Android jer mi je zadatak bio da "oživim" ploču pod Linuxom i posao je bio izuzetno lak. Kada kupiš ovakav razvojni sistem uz njega obično stiže i operativni sistem (a danas skoro svi proizvođači podržavaju navedenu trojku) u koji je već ugrađen BSP (Board Support Package) tako da više ne misliš o portiranju OS-a na ploču. Sve što je meni bilo potrebno da uradim jeste da detaljno pročitam dokumentaciju, prikljulim ploču, preko HyperTerminala podesim konfiguraciju i sve je proradilo kako treba. Ista situacija bi verovatno bila i sa Androidom jer sve je već bilo tu. :) 

Ukoliko bi želeo da sam napraviš svoju ploču i na nju portiraš OS ili da eventualno dodaš neki komad hardvera koji nije na razvojnom sistemu onda posao uključuje i pisanje BSP-a što je jako komplikovan zadatak i zahteva savršeno poznavanje i hardvera i softvera a uz to oduzima i prilično vremena. Da bi se smanjio "time to market" većina razvojnih timova se odlučuje za koncept o kome sam pričao gore - opredeliš se za jednog proizvođača, od njega kupiš razvojni sistem uz koji dobiješ portiran OS i kompletne šeme ploče a onda se kreće u paralelan razvoj hardvera i softvera. Dok hardverski tim ne napravi krajnji proizvod softverski tim može da odradi i da testira dobar deo buduće aplikacije što znatno smanjuje vreme izbacivanja proizvoda a ako se uzme u obzir da je životni ciklus proizvoda zbog stalnog napretka tehnologije veoma kratak onda je jasno koliko je važno završiti što pre. :)

Sve ovo gore sam napisao samo da bih te ubedio da razmisliš o sledećem predlogu - ako već želite da se igrate sa ovakvim stvarima onda razmislite o nekom razvojnom sistemu jer ako se igraš sa telefonima nećeš baš moći mnogo toga da radiš direktno sa hardverom dok sa ovakvom "igračkom" može da se eksperimentiše i sa hardverom i sa softverom. Naleteo sam skoro na BeagleBoard i deluje mi super za male pare
http://beagleboard.org/
http://elinux.org/BeagleBoard
Cena joj je oko 150$. Poredjenja radi, Freescale i.MX51 košta oko 1000$


Naslov: Odg: [Android prigramiranje]
Poruka od: Zepi 12.01.2011, 10:14
Nisam ni znao da ovako nesto postoji.

Cena je stvarno prihvatljiva.

Za početak bi probali priču sa telefonom koji ima u sebi GPS i akcelerometar.
Cilj bi bio da se uradi akvizicija ova dva senzora i da se ispita njihova tačnost, rezolucija i još neke karakteristike
a sve to snimiti na SD karticu bilo bi super.

Moraću malo detaljnije da pogledam ovaj beagle board.
Naslov: Odg: [Android prigramiranje]
Poruka od: gagi 12.01.2011, 10:42
Tu ti ne mogu pomoći mada mislim da ne bi trebalo da bude preterano komplikovano obezbediti te podatke tako da zavisi sve od toga šta si ti "zakuvao" po pitanju obrade. :) Evo ti jedan link koji može da se iskoristi, skini kod i pogledaj:
http://code.google.com/p/open-gpstracker


Što se Beagla tiče, skoro sam je našao i na prvi pogled mi je delovao super. Ima još jedna niskobudžetna ploča
http://shop.igep.es/
Kod telefona možeš da koristiš samo deo funkcionalnosti, ovde ti je sve raspoloživo.  <:-P
Naslov: Odg: [Android prigramiranje]
Poruka od: holodoc 12.01.2011, 21:11
Ako imaš nameru da pišeš softver za Android platformu koji će se koristiti i na drugim Andoroid uređajima (ne samo za lične testove) moj ti je predlog da nabaviš telefon (uređaj) sa Androidom i da isključivo njega koristiš za testiranje i razvoj jer nijedna razvojna platforma, koliko god kvalitetna bila, ne može uspešno da simulira realne hardverske mogućnosti komercijalnih uređaja sa Androidom.

Drugim rečima, jedna te ista aplikacija može da funkcioniše recimo odlično na nekom HTC Desire uređaju ali može veoma lako da se desi da imaš problema na uređajima niže klase tipa HTC Wildfire. Zato u principu ako kreneš sa pisanjem aplikacija krećeš od uređaja sa najmanjim zajedničkim sačiniocem hardverskih mogućnosti za uređaje koji se mogu naći na tržištu Android telefona na kojem planiraš da plasiraš softver.

Što se tiče merenja tačnosti GPS uređaja na Android platformi (u principu važi isto i za bilo koju drugu platformu) mislim da ti je bolje da se odmah u startu okaneš takve rabote iz solidnog broja razloga od čega su skoro svi vezani za prirodu samog GPS-a. Kao prvo tačnost dobijenih informacija na takvim uređajima se konstantno menja i to u zavisnosti od položaja i okoline uređaja. Viđao sam ljude koji su recimo merili tačnost GPS uređaja iza staklene površine verujući da staklo ne predstavlja prepreku a istina je da staklo predstavlja užasnu smetnju za prolazak GPS signala zbog njegove refrakcije i refleksije. Plus što i ako se odlučiš da vršiš precizna merenja tačnosti geopozicioniranja moraćeš da nađeš mnogo tačniji GPS uređaj (verovatno vojne preciznosti) sa podrškom za WAAS (valjda nisam omašio skraćenicu) (jeste WASS - http://en.wikipedia.org/wiki/Wide_Area_Augmentation_System)a to koliko znam nema nijedan Android uređaj niti GPS uređaj koji bi verovatno mogao da platiš :)

Ista priča važi i za akcelerometar. Uređaj koji je ugrađen u većinu komercijalnih telefona koji se mogu naći i na našem tržištu sasvim je dovoljan za većinu stvari koje bi ti verovatno ikada pale na pamet da ih realizuješ. Mislim da je ubedljivo najzanimljivija aplikacija koju sam video na Androidu a da koristi akcelerometar digitalna "vaservaga" (libela) koja meri i automatski na ekranu prikazuje da li je mereni objekt "u vinklu" :) Probaću da nađem negde taj projekat :)
Naslov: Odg: [Android prigramiranje]
Poruka od: gagi 12.01.2011, 22:12
Citat: holodoc  12.01.2011, 21:11
nijedna razvojna platforma, koliko god kvalitetna bila, ne može uspešno da simulira realne hardverske mogućnosti komercijalnih uređaja sa Androidom.

Da si nekad imao prilike da se susretneš sa ovakvim platformama verovatno ne bi tako tvrdio. Na primer Freescale uvek nudi kompletnu "reference design" ploču na kojoj ima sve što može na pamet da ti padne uz mogućnost proširivanja a uz to dobijaš i portiran softver. Primera radi iPhone ima mnogo siromašniji i skromniji hardver od ovih ploča.

Što se tačnosti tiče Brežanac je u pravu. :) Refleksija je užasan problem, posebno ako je većina satelita na horizontu a prijemnik se nalazi na primer na parkingu izmedju zgrada i drveća. Tada zna totalno da "podivlja" i da pokaže odstupanja i do nekoliko stotina metara. 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. Dakle ukoliko se GPS prijemnik i akcelerometar dobro upare može se postići mnogo veća tačnost GPS-a. WAAS sistem koristi fiksnu zemaljsku stanicu uz pomoć koje vrši korekciju ali mi nije poznato da se takva korekcija može vršiti na prostorima Srbije. 
Naslov: Odg: [Android prigramiranje]
Poruka od: holodoc 12.01.2011, 22:41
Citat: gagi44  12.01.2011, 22:12Da si nekad imao prilike da se susretneš sa ovakvim platformama verovatno ne bi tako tvrdio.
Citat: gagi44  12.01.2011, 22:12DPrimera radi iPhone ima mnogo siromašniji i skromniji hardver od ovih ploča.
Pa o tome upravo i pričam, da je većina tih razvojnih sistema čist overkill u odnosu na hardverske mogućnosti komercijalnih uređaja i da jednostavno ne možeš da se osloniš na to da potencijal hardvera na razvojnom sistemu dobro "emulira" opseg raspoloživog potencijala i mogućnosti uređaja koji se mogu naći na tržištu. Evo primera radi svrati na bilo koji od Android portala (možeš i direktno na Market) i isprobaj par aplikacija koje koriste "egzotične" funkcije Androida kao što su GPS itd. Primetićeš ogromnu razliku u performansama na različitim uređajima i to samo zato što je razvoj rađen na nekoj ali od mašine gde se uopšte nije vodilo računa o tome da postoje i smrtnici koji teraju HTC Tatoo i slične slabe aparate.

Citat: gagi44  12.01.2011, 22:12WAAS sistem koristi fiksnu zemaljsku stanicu uz pomoć koje vrši korekciju ali mi nije poznato da se takva korekcija može vršiti na prostorima Srbije.
WAAS nije ali EGNOS (http://www.esa.int/esaNA/SEM2HGF280G_egnos_0.html) jeste (potpuno ista stvar stim što je EGNOS savremeniji). Pre nekih 6 meseci imao sam priliku da vidim uređaj sa podrškom za EGNOS (prošvercovao komšija iz Italije). Mislim da je bio Magellan ili tako nešto. Nisam uspeo da utvrdim koliko je uređaj precizan iz jednog veoma jednostavnog razloga - nisam uspeo da nađem neophodne mape za Srbiju :(

EDIT: Interesantan dev portal za EGNOS (http://egnos-portal.gsa.europa.eu/). Bar deluje interesantno na prvi pogled.
Naslov: Odg: [Android programiranje]
Poruka od: holodoc 12.01.2011, 23:20
Promenih naziv teme iz [Android prigramiranje] u [Android programiranje] da ne ostavimo utisak da se bavimo prodajom opojnih sredstava :)
Naslov: Odg: [Android programiranje]
Poruka od: gagi 12.01.2011, 23:55
Ono što je meni bilo dostupno dok sam radio na tracking uređaju nije imalo podršku ni za WAAS ni za derivate koji se nalaze po Evropi pa smo zato morali da se dovijamo. Istakao bih činjenicu da ovakvi sistemi samo povećavaju tačnost ali i dalje ostaju situacije u kojima nema pomoći. Tada na scenu stupa akcelerometar koga na žalost nisam imao ugrađenog u uređaj ali da sam ga imao sigurno da bih mogao da ga iskoristim za korekciju pozicije u takvim situacijama (Kalman ili Alfa-Beta). Kao što rekoh, ne znam šta je Žepi smislio ali igra sa ovom kombinacijom može vrlo lako da se proširi u jedan ozbiljan rad koji može negde i da se objavi. :)
Naslov: Odg: [Android programiranje]
Poruka od: Zepi 13.01.2011, 10:28
Hvala za promenu naslova :)

Trenutno se bavim merenjima potresa na određenim lokacijama više u akvizicone svrhe dok ne ustanovim kolika je tačnost i pouzdaost takvih sistema,

Što se tiče tačnosti GPS ona se svodi na 2 do 2-5 metara u proseku a zavisi od mnogo faktora, broja satelita, refleksije signala, metereoloških uslova i postoji dosta algoritama koji pokušavaju da je smanje prvenstveno oslanjajući se na verovatnoću.

Za ideje koje ja imam tačnost od oko 2 metra je sasvim dovoljna tj. da se vidi kojim ulicama sam prošao a u ovu priču želim da uđem jer sam do sada koristio TELIT kao GPS modul, SUNSPOT kao upravljaču jedinicu sa akcelerometrom a sve je to moralo da bude nakačeno na laptop radi snimanja izmerenih fajlova.

Sve ovo bi trebalo jedan mali android za zameni veoma uspešno.

Samo čekam ponovo telekom akciju za uzmem nekog androida, verovatno onog HUAWEI-a.
Ima sve što treba da ga testiram za ove svrhe.

Naslov: Odg: [Android programiranje]
Poruka od: holodoc 13.01.2011, 17:14
@gagi44
Kako tačno se akcelerometar koristi za korekciju tačnosti GPS uređaja? :I Imaš neki link ili bar ključne reči po kojima bih tražio informacije? Ovo što sam ja uspeo da nađem na Gugletu je sve vezano za navigacione sisteme na satelitima i sl.

@Zepi
Batali se ćorava posla i kupi neki dobar Android telefon, što HUAWEI sigurno nije :) Kod nas ubedljivo najbolju ponudu Android telefona ima Telenor kod kojeg možeš da nabaviš odlične HTC Android uređaje, recimo HTC Wildfire (http://csl.tfc.kg.ac.rs/forum/ttp://www.telenor.rs/sr/Privatni-korisnici/eShop-Telefoni/Mobilni-telefoni/?eshop&do=phone_info&phone_id=269) koji je defacto naslednik matorog HTC Tattoo-a, uređaja koji je bio veoma popularan kod nas kada je HTC počeo da izrađuje jeftinije Android bazirane uređaje.

E sad ako hoćeš da koristiš telefon isključivo za testiranje i razvoj aplikacija onda možeš da prođeš jeftinije kupovinom telefona u nekoj od radnji direktno (HTC Wildfire možeš naći za nekih 240€) ali onda ostaješ uskraćen za net a svaki Android telefon bez neta je ravan gibanici bez sira  :((  S druge strane ako kupuješ telefon u nekoj od radnji on mora biti otključan za sve mreže dok ćeš kod mobilnih operatera naići na ograničenje da moraš da koristiš njihovu mrežu (njihov broj).

Naravno apsolutni ubica u ponudi je HTC Desire (http://www.telenor.rs/sr/Privatni-korisnici/eShop-Telefoni/Mobilni-telefoni/?eshop&do=phone_info&phone_id=249) ali je on sa nekih 500€ poprilično težak za budžet (mada može da se nabavi i uz određeni Telenorov paket sa mesečnim sistemom plaćanja).

Korisni linkovi:

Naslov: Odg: [Android programiranje]
Poruka od: Zepi 13.01.2011, 19:01
Da tek sad sam i ja primetio da akcelerometar može da popravi tačnost GPS-a pa ako je to stvarno tačno uputi nas malo.

Sto se telefona tiče ne bi menjao broj pa ću uzeti nešto iz MTS-a bas sam pričao sa nekoliko korisnika HUAWEI-a i generalno svi su zadovoljni a konkretno U8110 je replika tattoo-a samo sa 2.1 androidom. Videću šta će da stigne u MTS uskoro.
Naslov: Odg: [Android programiranje]
Poruka od: pesovic 13.01.2011, 19:34
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.


Naslov: Odg: [Android programiranje]
Poruka od: Zepi 13.01.2011, 19:37
Svaka čast.

Ne mogu da verujem da se nisam setio ove veze.

Hteo sam da radim to integraljenje baš da bi računao dužinu puta a nije mi palo na pamet da to povežem sa GPS-om.

Verovatno da ima radova na tu temu ali sigurno ima i mesta za rad.

Novi projekat u najavi... :)
Naslov: Odg: [Android programiranje]
Poruka od: holodoc 13.01.2011, 19:54
@pesovic
Da ali ako sam dobro shvatio taj postupak u suštini eliminiše isključivo sistematsku grešku koja se javlja zbog kretanja GPS prijemnika, recimo ako se prijemnik nalazi u objektu koji se kreće velikom brzinom (avion itd.), ali ne može i da aktivno popravlja tačnost recimo nekog stacionarnog GPS uređaja?

Ono što je meni prvo palo na pamet (čisto kao pretpostavka) kad je pomenut akcelerometar za povećanje tačnosti GPS uređaja je bilo da se on koristi za neku vrstu proračunu perifernih brzina rotacije GPS prijemnika u odnosu na zemljinu površinu pa da eventualno te male razlike u izračunatom ubrzanju po sve tri ose mogu da doprinesu preciznijem određivanju lokacije? :) Doduše nemam blagu pretpostavku koliku razliku u promeni parametara akcelerometri mogu da registruju uspešno i kog su reda.

Naravno ovo je bila samo pretpostavka :)
Naslov: Odg: [Android programiranje]
Poruka od: pesovic 13.01.2011, 20:12
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).

 
Naslov: Odg: [Android programiranje]
Poruka od: gagi 14.01.2011, 09:20
Citat: pesovic  13.01.2011, 19:34
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:

Citat: gagi44  12.01.2011, 22:12
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.

Naslov: Odg: [Android programiranje]
Poruka od: holodoc 14.01.2011, 19:59
Citat: gagi44  14.01.2011, 09:20Pa ja n puta pricam o Kalmanu i dead reckoning-u i radovima na ovu temu...  :whistle2:

Citat: gagi44  12.01.2011, 22:12Naravno, 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 :)

Citat: gagi44  14.01.2011, 09:20Za 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? :)
Naslov: Odg: [Android programiranje]
Poruka od: gagi 14.01.2011, 21:04
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.
Naslov: Odg: [Android programiranje]
Poruka od: holodoc 14.01.2011, 21:44
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
Naslov: Odg: [Android programiranje]
Poruka od: gagi 14.01.2011, 22:05
Citat: holodoc  14.01.2011, 21:44
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.
Naslov: Odg: [Android programiranje]
Poruka od: Zepi 14.01.2011, 22:55
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.
Naslov: Odg: [Android programiranje]
Poruka od: gagi 14.01.2011, 23:23
Citat: Zepi  14.01.2011, 22:55
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. :)