Odhalování akcelerace v autě (iPhone akcelerometr)

hlasů
11

Já jsem pracoval na aplikaci pro iPhone, kde se snažíme vypočítat zrychlení jedoucího auta. Podobné aplikace dosáhli tohoto (Dynolicious), ale rozdíl je, že tato aplikace je určena pro použití při obecném řízení ve městě, ne na táhnout pás.

To nás vede k jedné velké obavy, že Dynolicious byl naštěstí schopen vyhnout: kopce. Ano, vrchy.

Existují dvě důležité etapy tento: kalibrace a skutečné jízdě.

Naše počáteční běh byl jednoduchý a trpěl následky. Během kalibrační fáze, vzal jsem průměrnou sílu na telefonu, a během jízdy, jen jsem odečte průměrná síla z aktuálního síly získat aktuální zrychlením tento rámec. Problém s tímto je, že typický vůz dostane mnohem větší sílu, než jen dopředu silou - vše od odbočky do výtluků byla příčinou hodnoty jít ven synchronizace s tím, co se skutečně děje.

Příští ročník bylo přidat podmínku, že iPhone musí být orientovány tak, že na obrazovce se směřovalo k zadní části vozu. Při použití této metody jsem se snažil řídit pouze silou na osy, ale to samozřejmě vést k problémům, pokud iPhone byl zaměřen přímo ve vzpřímené poloze, protože gravitace.

Někteří trigonometrie později, a já se podařilo pracovat gravitaci z rovnice tak, aby vůz byl skutečně četl velmi, velmi dobře iPhone.

Dokud jsem trefil svah. Jakmile se úhel auto změnilo, najednou jsem byl příjem zrychlení a zpomalení, které nedávalo smysl, a my jsme opět jít ven synchronizace.

Mluvit s někým mnohem chytřejší než já matematické vedou k řešení, které jsem se snažil realizovat po dobu delší, než bych chtěl připustit. Je to kroky jsou následující:

1) Při kalibraci měření gravitace jako vektor namísto velikosti. tento vektor ukládat. 2) Je-li vůz na počátku pohybuje vpřed, se vektor pohybu a odečtěte gravitace. Slouží jako přední hybnosti. (Ignorovat, prozatím, uživatel případy, kdy to bude obtížné a nechal se soustředit na matematiku :) 3) od přední vektoru a vektoru gravitace, zkonstruovat letadlo. 4) Pokud je přijata síla, projekt to na rovinu, jak se zbavit boční síla / etc. 5) Poté, použít tuto sílu, známou velikost gravitace, a známý dopředu ve směru pohybu v podstatě řešit trojúhelník dostat dopředu vektor.

Problém, který způsobuje největší potíže v tomto novém systému není krok 5, který jsem dostal do bodu, kdy všechna čísla vypadají, jako by měly. Nejtěžší je vlastně detekce vpřed vektoru. Jsem výběru vektorů, jejichž velikost přesahuje gravitace, a odtud, je v průměru a odečtením gravitace. (Dělám nějakou kontrolu chyb, aby se ujistil, že nejsem s použitím síly, jen proto, že iPhone akcelerometr byl pryč trochu, což se stává častěji, než bych chtěl). Ale když jsem plot těchto vektorů, které já používám, ale ve skutečnosti se liší podle úhlu asi 20 až 30 stupňů, což může vést k některým silným nepřesnosti. Konečným výsledkem je, že aplikace je ještě nepřesné teď než dříve.

Takže v podstatě - vše, co matematika a iPhone mozek venku - nějaké do očí bijící chyby? Veškeré potenciálně lepší řešení? Nějaké zkušenosti, které by mohly být užitečné vůbec?

Ocenění: nabízejí odměnu ve výši $ 250 na první odpověď, která vede k řešení.

Položena 28/04/2010 v 22:24
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
10

Potřebuješ gyroskop. V opačném případě existuje několik konfigurací zrychlujícím autě na kopci, který může vést ke zcela stejných hodnot na akcelerometru. Budou zcela nemožné rozlišit. To je důvod, proč inerciální navigační systémy kombinují gyroskop a akcelerometr.

Důvod, proč nemůžete to byl dán Einstein! Použitím lokálního měření nelze rozlišit gravitaci a zrychlení. Máte nějaké užitečné non-místní informace - předpoklad, že gravitace tady, a gravitace několik yardů nad tam, mají stejnou hodnotu. Ale nelze srovnávat s gravitací ve dvou různých místech, aniž by prostředky k provedení, co se nazývá „paralelní transport“. To je to, co dělá gyroskopu.

Zapomeňte na $ 250, ale myslím, že byste mi měl dát pivo na množství času na výzkum a vývoj tě úspory. :-)

Odpovězeno 28/04/2010 v 22:39
zdroj uživatelem

hlasů
3

K vyřešení tohoto problému, pokud je to možné, budete muset odkazovat něco vně vozu . Pravděpodobně pomocí GPS měření nadmořské zisk je nejvíce přímý přístup. To znamená, že výpočet svahu s použitím změřené výškový zisk, a použít ke kompenzaci měření zrychlení.

Jak již bylo zmíněno, na velmi hluboké úrovni, neexistuje žádný způsob, jak rozlišovat mezi gravitací a zrychlení; toto je známé jako princip ekvivalence (a bylo jedním z nejdůležitějších poznatků Einstein). Takže člověk by potřeboval vědět víc, než výstup akcelerometru k vyřešení tohoto problému, a to dělá problém obtížné. Pro různé přístupy k této problematice, viz zde .

Váš nejlepší nadějí je odkaz něco vně vozu, jako je signál GPS, nebo obrázky měřit změnu v umístění něco vně vozu, nebo magnetické pole Země, atd Vzhledem k tomu, se bude konat v blízkosti mnoha kovu (auto) zemského pole bude pravděpodobně obtížné měřit, a kontinuální fotky nějakého sledovaného objektu (jako slunce), je samozřejmě obtížné, takže se zdá, že GPS je vaše nejlepší sázka.

Více o tom, proč je nutné zajistit externí odkaz:

Je to stojí za zvážení, zda byste mohli využít jedinečné vlastnosti gravitace, která 1) je to vždy „on“, 2) má vždy stejnou velikost (pro tuto situaci). Ale když vše, co vím, je celkové zrychlení, nelze spolehlivě oddělit dva příspěvky. Jako na obrázku níže, přehlídky, jen věděl, velikost gravitace nestačí ... pod obraz je vypracován v rámci telefonu odkazu, kde se měří výsledné zrychlení (black vektor) a větší barevné šipky jsou možná gravitační vektory , zatímco odpovídající barvy menší šipky jsou odpovídající zrychlení vektory. Takže vidíte, aniž by věděl, a úhel, že nemáte dostatek informací k vyřešení problému.

alt textu http://i42.tinypic.com/6gasnb.png

Další věc, kterou byste měli být schopni udělat, je integrovat výstup z gyroskop najít úhel vektoru gravitace. To znamená, že za předpokladu, že začnete na rovině, a pak vždy sledovat z kterých si myslíte, že gravitace by měl vycházet z nahromaděných drobných změn. Ale to je velmi náchylné k chybám, a vaše chyba ve výpočtu bude rychle akumulovat s časem; a to také předpokládá, že máte přístup ke gyroskopu.

Proto jediným vhodným řešením je použití externích informací.

Odpovězeno 29/04/2010 v 05:23
zdroj uživatelem

hlasů
1

To není váš problém vyřešit úplně, ale doufejme, že to uklidí to, co jsem se snažil udělat. Věřím, že nakonec budete potřebovat nějaký jiný nástroj, aby bylo možné tento plně provést. GPS as tom10 navrhl zvuky jako nejlepší volba pro mě (protože tam není k dispozici gyroskop), ale já jsem předvídat problémy s tím, jako je doba lag a nepřesnosti v GPS souřadnicích (nevím, jak přesné iPhone GPS ).

Za prvé se domnívám, že iPhone je pevně připojena k vozu po celou dobu. Na svahu, který je směrem nahoru nebo dolů bez křivky vlevo nebo vpravo, můžete provést následující kroky ke kalibraci.

Kalibrace

  1. Najít plochu tak, aby jeho stupeň nepříznivého není znatelně mění.
  2. Najít vektoru zrychlení, když se vůz nepohybuje vzhledem k silnici. Zaznamená tuto plnou vektoru (X, Y, a Z složky) jako v1 . g = | v1 | je velikost gravitace, která by měla zůstat stejná po celou dobu.
  3. Začnou rovně vpřed na svahu (nahoru nebo dolů ji, ne na stranu a samozřejmě plochý povrch je příliš velký).
  4. Zaznamená toto plné zrychlení vektor jako v2 .
  5. Najít v3 , vektor označující vpřed pohybem, tím, že v2 - V1 (odečtením gravity).
  6. Najít V4 = v3 x ( v1 x v3 ), kde x je vektor součin .
  7. Najít jednotky vektor v4 , v5 = v4 / | v4 |

V5 ukazuje ve směru, že gravitace bude ukazovat, když je vůz na dokonale rovný povrch. Nyní si můžete alespoň zjistit, zda jste na svahu nějakého druhu a jaký úhel je z tohoto svahu. To lze provést následujícím způsobem:

  1. Zaznamená aktuální zrychlení vektor, .
  2. Najít skalární součin a v1 , c = . v1
  3. Je-li c je menší než g (v protikladu k je rovno g), auto je na svahu. Úhel sklonu je theta = arccos (c / g).

Nicméně, toto je místo, kde jsme se dostat do problémů. Dokonce i když se omezíme na svazích, které jsou nahoru a dolů, spíše než zakřivení / banking vlevo nebo vpravo, my stále nemůže říct s jistotou, pokud je sklon se děje nahoru nebo dolů - jen úhel ní. Najdeme zde zpočátku v případě, že auto je jít nahoru nebo dolů svahu u brát tečku produkt v1 a v3 (kladná hodnota indikuje klesající svah, a zápornou hodnotu stoupající ve sklonu).

Ty by mohly být nicméně moci využít skutečnosti, zda je velikost celkové vektoru zrychlení je zmenšení nebo zvětšení jako sklon zvyšuje nebo klesá, aby se hádat se na to, ale nebude to mít jisté. Například, v případě, že úhel (theta) sklonu je 0 stupňů (nebo dostatečně blízko k ní), a nyní není, a výstupek (skalární součin) celkového zrychlení na jednotku vektoru v3 klesá, pak bychom mohli usuzovat, že auto se chystá do svahu. Opět platí, že to bude jen hádat, která by mohla velmi dobře být v pořádku. Říkám mohl, ale to, co mám na mysli, je, že to bude v pořádku občas.

To je asi tolik informací, kolik mohu představit dostat ven ze systému, který právě používá akcelerometr. Hodně štěstí!

Odpovězeno 29/04/2010 v 20:20
zdroj uživatelem

hlasů
1

Některé myšlenky:

  • Gravitace je vektorová veličina, nikoliv velikost.
  • Tíhové zrychlení a zrychlení v důsledku nějaké jiné síly nejsou rozlišitelné (můžete také není schopen rozeznat rozdíl mezi jít za rohem a kolejových vozu).
  • Možná budete mít větší štěstí dvěma akcelerometry, ale pak byste potřebovat dva telefony.

Kdyby mě tomu tak bylo, tak bych sepsat disclaimer, který říká: „To nefunguje na kopcích, použijte přímý, rovnou silnici pro testování.“

PS: Líbí se mi, peněžní odměnu za odpovědi, budu mít jistotu, a psát to jako podnět k meta.stackoverflow.com: P

Odpovězeno 28/04/2010 v 22:39
zdroj uživatelem

hlasů
0

@The Gazzardian,

Takže vaše zásadní problém, jak jsem pochopil, je pro detekci přední vektor. Můžete se rozhodnout tyto:

  1. Ochutnat rychlost řekněme každých 0,2 sekundy po dobu 5 sekund a zapnout vzorkování off pro příštích n sekund, takže zdroj není upíná. A teď, co můžete udělat z těchto datových bodů je, budete schopni rozeznat rychlost změny rychlosti (existují jednoduché numerické metody, jak najít derivátové pomocí datových bodů). Ale to zvyklý vám zrychlení v pravém slova smyslu, protože je zvyklý vám směr. Pokud vím, akcelerometr dává směr také, o kolik je nakloněn k jedné osy / gravitace.

Konzultovat tento údaj zjistit úhel: Úhly a Hills http://lh6.ggpht.com/_p7FIkTnaSc4/S9kkKF7oECI/AAAAAAAABYg/D1tbxNQXo0E/s288/Hill.png

Dalším možným způsobem, je najít další sílu během lezení kopce. S ohledem na zvláštní síly, měli byste být schopni najít úhel. Svislá složka extra síly je proti, vertikální složku v opačném směru, g.

Odpovězeno 29/04/2010 v 07:23
zdroj uživatelem

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