2011-07-11 11 views
6

Chcę przenieść obiekty na ekranie iPhone'a (prostokąt, kółko itd.), Przesuwając iPhone'a. Na przykład przenoszę iPhone'a wzdłuż osi X, a obiekt przesuwa się wzdłuż osi X. To samo dotyczy osi Y, Z.Odległość przesunięta przez Accelerometer

Jak mogę to zrobić? Czy mogę uzyskać dla niego algorytm?

Dziękuję.

P.S: Poszukałem przez chwilę i wydaje mi się, że jest to możliwe za pomocą akcelerometru.

Odpowiedz

13

uzyskać pozycję poprzez integrację przyspieszenie liniowe dwukrotnie ale błąd jest straszne. W praktyce jest bezużyteczne.

Oto an explanation why (Google Tech Talk) o 23:20. Gorąco polecam ten film.

Jednak żyroskop może pracować dla twojej aplikacji, zobacz między 37: 00-38: 25 w filmie.

Podobne pytania:

track small movements of iphone with no GPS
What is the real world accuracy of phone accelerometers when used for positioning?
how to calculate phone's movement in the vertical direction from rest?
iOS: Movement Precision in 3D Space
How to use Accelerometer to measure distance for Android Application Development
How can I find distance traveled with a gyroscope and accelerometer?

3

Niełatwe do zrobienia dokładnie. Akcelerometr zgłasza tylko przyspieszenie , a nie ruch. Możesz spróbować (liczbowo) zintegrować przyspieszenie z czasem, ale najprawdopodobniej skończy się to zbiorczym błędem sumującym się i prowadzącym do niezamierzonego ruchu.

Pseudokod, oczywiście niesprawdzone:

init: 
    loc = {0, 0, 0} ; location of object on screen 
    vel = {0, 0, 0} ; velocity of object on screen 
    t = 0    ; last time measured 

step: 
    t0 = time   ; get amount of time since last measurement 
    dt = t0 - t 
    accel = readAccelerometer() 
    vel += accel * dt ; update velocity 
    loc += vel * dt ; update position 
    displayObjectAt(loc) 
+0

Więc mówisz, że nie jest praktyczna rzecz do zrobienia na iPhone? – MeIr

+1

Prawidłowo. Łącza w odpowiedzi Ali pokazują, że prawdopodobnie nie będzie to przydatne. – duskwuff

1

Dlaczego nie używacie samego przyspieszenia zamiast odległości przebytej? Na przykład; Jeśli twoje przyspieszenie wynosi 1,4G na wschód, twój obiekt powinien przesuwać się na wschód o 13 pikseli na sekundę, aż zmieni się twoje przyspieszenie.

Tak więc ruch obiektu będzie taki, jak pod względną siłą i myślę, że jest bardziej realistyczny. Szybsze przesuwanie urządzenia, większa siła do efektu obiektu.

Zobacz również:

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

i

Using accelerometer, gyroscope and compass to calculate device's movement in 3D world

+0

Kiedy zrobisz jakiś ruch, na przykład w lewo, dostaniesz wyjście tak: -1g 0g 0g 0g 1g bo gdy będzie zatrzymać ruch otrzymasz siły, które będą negatywne dla siła początkowa, która wytworzyła ruch. musisz jakoś przefiltrować i nie jest to łatwe. –

Powiązane problemy