Detekci rotace točit iPhone?

hlasů
4

Chci vytvořit aplikaci by mohla odhalit počet spin-li uživatel otočí zařízení iPhone. V současné době jsem pomocí kompasu API, aby úhel a snaží mnoho způsobů, jak detekovat rotaci. Níže je uveden seznam řešení, které jsem se snažil: 1 / Vytvořte 2 úhlu pasti (kus na plné kolo) na plné kolo zjistit, zda je úhel dostaneme z kompasu kolem nich, nebo ne. 2 / Součet všech úhel vzdálenost mezi časy, že kompas je aktualizován (ve funkci updateHeading). Ať se snaží rozdělit úhel částku až 360 => můžeme získat počet spin

Problém je v tom: pokud je telefon otáčet příliš rychle, může kompas není dohnat rychlostí telefonu, a vrátí se nám úhel s posledním čase (ne kontinuálně jako ve skutečném rotaci).

Snažíme se také použít akcelerometr pro detekci rotace. Nicméně, tento způsob nemůže fungovat při otočení telefonu na ploché rovině.

Máte-li nějaké řešení nebo zkušenosti na toto téma, prosím, pomoz mi.

Díky moc.

Položena 19/01/2010 v 07:37
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

IPhone4 obsahuje MEMS kompas, tak to je nejpřímější cesta.

Jak jste si všimli, magnetometr má pomalou odezvu. To může být snížena pomocí předjímající algoritmus, který používá stagnaci učinit kvalifikovaný odhad o tom, co je směr proudu ve skutečnosti je.

Za prvé, je nutné určit skutečnou výkonnost senzoru. K tomu je potřeba otočit na přesné míry na každém z několika otáček, a zaznamenávat chování kompasu. Rotační platforma by měla mít způsob, jak číst okamžitou pozici.

Při nižších rychlostech, uvidíte různý stupeň pevným zpožděním. Jak se zvyšuje rychlost, bude prodleva růst, dokud se blíží 180 °, a v tomto okamžiku kompas náhle flip. Při vyšších rychlostech, vše uvidíte je mizerný, i když se může zdát, že nebude hodit, když vyletí opakovat na stejné hodnotě. V některých z těchto vyšších rychlostech kompas může zobrazit otáčet dozadu, proti směru otáčení.

Získání otočný stůl může být hádka, a zajistit, že nemá vliv na lokální magnetické pole (což kompas k ničemu), je výzvou. Ideální tabulka bude vyrobena z hliníku, a pokud je třeba použít ocelovou tabulku (nejběžnější), musíte namontovat telefon nemagnetického platformy, aby si to tak daleko od oceli, jak je to možné.

Místní obchod Stroj bude dobrým místem pro začátek: CNC stroje jsou snadno schopni dělat to, co je potřeba.

Jakmile se dostanete dat o výkonu kompas, budete muset postavit model sledovaných hodnot oproti skutečné orientaci a rotační rychlostí. Invertní model a aplikovat ho na čtení pro získání odhad skutečných hodnot.

Jednoduchá implementace algoritmu bude udržet historii hodnot, a vést seznam rozdílu mezi po sobě následujících čteních. Protože víme, že je kompas lag, když hodnota rozdílu je nenulový, budeme znát aktuální hodnota má určitý stupeň nepřesnosti v důsledku zpoždění.

Dalším krokem je vytvořit seznam ‚opravených‘ hodnot, kde se používá know zpoždění podle dosavadního stavu skutečných hodnot pro vytvoření aktualizovaného hodnotu, která je použita k vytvoření aktualizovaného hodnotu, která se přidává k poslední hodnotě v ‚opravil‘ seznamu, a je uložen jako nejnovější hodnotu.

Když se kumulativní korekci (rozdíl mezi posledními hodnotami ve skutečném a opraveného seznamu přesáhnout 360 stupňů, to znamená, že jsme v podstatě nevědí, kam směřuje. Doufejme, že nebude dosaženo kompas, že bod, protože většina rotační pohyb by měl obecně za poměrně krátkou dobu.

Vzhledem k tomu, vaším cílem je pouze počítat rotace, budete pryč méně než plnou rotaci, dokud se karta chyba dosahuje podstatně vyšší hodnoty. Nejsem si jistý, co bude tato hodnota, protože to závisí na tom, jak skutečné kompas zpožděním a skutečnou rychlostí otáčení. Ale pokud vám jde jen o malý počet otáček (5 nebo tak nějak), měli byste být schopni získat použitelné výsledky.

Odpovězeno 03/09/2010 v 23:12
zdroj uživatelem

hlasů
0

Pokud používáte iPhone 4, byl problém vyřešen a můžete použít Jádro Motion získat rotačních dat.

U starších zařízení, myslím, že zajímavý přístup by bylo pokusit se odhalit viklání při otáčení zařízení, pomocí UIAccelerometer na velmi jemné intervalem hlášení. Byste měli být schopni získat nějaké rozumné vzory zjištěné z pohybu kolmo k rovině otáčení.

Odpovězeno 06/10/2010 v 15:18
zdroj uživatelem

hlasů
0

Dalo by se použít rychlost zrychlení zjistit, jak rychle se telefon spřádání a použít ho k vyplnit prázdná místa, dokud neustane telefon, na kterém místě byste mohli znovu dotaz kompas.

Odpovězeno 21/01/2010 v 19:09
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more