2011-07-11 4 views
6

Je souhaite déplacer des objets sur l'écran de l'iPhone (rectangle, cercle, etc.) en déplaçant l'iPhone. Par exemple, je déplace l'iPhone le long de l'axe X et l'objet se déplace le long de l'axe X. La même chose pour Y, axe Z.Distance parcourue par l'accéléromètre

Comment est-ce que je peux faire ceci? Puis-je obtenir un algorithme pour cela?

Merci.

P.S: J'ai regardé pendant un moment et il me semble que c'est possible avec un accéléromètre.

Répondre

13

Vous obtenez la position en intégrant l'accélération linéaire, mais deux fois l'erreur est horrible. C'est inutile en pratique.

Voici an explanation why (Google Tech Talk) à 23:20. Je recommande fortement cette vidéo.

Cependant, la souris gyro peut fonctionner pour votre application, voir entre 37: 00-38: 25 dans la vidéo.

des questions similaires:

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

Pas facile à faire avec précision. Un accéléromètre ne signale que accélération, pas de mouvement. Vous pouvez essayer (numériquement) d'intégrer l'accélération au fil du temps, mais vous risquez de vous retrouver avec des erreurs cumulatives cumulant et conduisant à des mouvements involontaires.

pseudocode, évidemment non testé:

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

Vous dites que ce n'est pas chose pratique à faire sur l'iPhone? – MeIr

+1

Correct. Les liens dans la réponse d'Ali montrent que cela ne fonctionnera probablement pas utilement. – duskwuff

1

Pourquoi ne pas utiliser l'accélération elle-même la distance au lieu déplacé? Par exemple; Si votre accélération est de 1.4G est, votre objet devrait se déplacer vers l'est de 14pixels par seconde jusqu'à ce que votre accélération change.

Donc le mouvement de cet objet sera comme s'il était sous une force relative et je pense que c'est plus réaliste. Dispositif de déplacement plus rapide, plus grande force pour effectuer l'objet.

Regardez aussi:

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

et

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

+0

Lorsque vous ferez un mouvement, par exemple vers la gauche, vous obtiendrez la sortie comme ceci: -1g 0g 0g 0g 1 g parce que quand vous arrêter le mouvement, vous obtiendrez la force qui sera négatif force initiale qui a créé le mouvement. vous devez en quelque sorte le filtrer et ce n'est pas facile. –

Questions connexes