[Android programiranje]

Započeo Zepi, 11.01.2011, 23:03

« prethodna tema - sledeća tema »
Idi dole

Zepi

11.01.2011, 23:03 Poslednja Izmena: 12.01.2011, 23:18 od holodoc
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?





gagi

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$



Zepi

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.

gagi

#3
12.01.2011, 10:42 Poslednja Izmena: 12.01.2011, 10:59 od gagi44
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

holodoc

#4
12.01.2011, 21:11 Poslednja Izmena: 12.01.2011, 21:17 od holodoc
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 :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

gagi


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. 

holodoc

#6
12.01.2011, 22:41 Poslednja Izmena: 12.01.2011, 22:48 od holodoc
Da si nekad imao prilike da se susretneš sa ovakvim platformama verovatno ne bi tako tvrdio.

DPrimera 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.

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.
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.
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

holodoc

Promenih naziv teme iz [Android prigramiranje] u [Android programiranje] da ne ostavimo utisak da se bavimo prodajom opojnih sredstava :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

gagi

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. :)

Zepi

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.


holodoc

#10
13.01.2011, 17:14 Poslednja Izmena: 13.01.2011, 17:17 od holodoc
@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 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 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:


<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

Zepi

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.

pesovic

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.



Zepi

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... :)

holodoc

@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 :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

Idi gore