2015-03-10 1 views
1

valeurs accéléromètres sont fournies par rapport à l'orientation de l'appareil ..valeurs de l'accéléromètre ios à toute orientation

Mon but est d'obtenir ces valeurs, quelle que soit la position de l'appareil.

Dans un scénario envisagé, si l'appareil est placé dans un véhicule, placé face vers le haut ou horizontalement, les valeurs de l'accéléromètre selon y indiqueraient l'accélération du véhicule. Que se passe-t-il si l'appareil est placé dans la boîte à gants avec une orientation aléatoire? Nous pouvons obtenir les valeurs de tangage et de lacet et les convertir en degrés pour obtenir le déplacement angulaire de l'appareil par rapport à la position d'orientation normale, mais à ce moment d'orientation aléatoire, puis-je convertir les valeurs d'accélération en normale des valeurs de position d'orientation? Fondamentalement ce que je suis suit: obtenir le déplacement angulaire de l'appareil -> convertir les valeurs d'accéléromètre reçues à la position déformée à une position normale d'orientation face vers le haut -> obtenir le Y pour voir l'accélération réelle du véhicule indépendamment de la position du dispositif.

Référence (point 3.1): http://www.itsasiapacificforum2014.co.nz/files/3314/0194/4873/Abstract_-_Automatic_Accelerometer_Reorientation_for_Driving_Event_Detection_Using_Smartphone_by_Passakon_Prathombutr.pdf

+0

Cela pourrait aider? http://blog.sallarp.com/iphone-accelerometer-device-orientation/ – Sunkas

Répondre

0

Son assez simple en fait, simplement commencer à générer des mises à jour de mouvement de l'appareil à l'aide d'un cadre de référence:

- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame 

Selon ce que vous voulez vous atteindre pouvez sélectionner l'un des les différentes options

typedef enum { 
    CMAttitudeReferenceFrameXArbitraryZVertical = 1 << 0, 
    CMAttitudeReferenceFrameXArbitraryCorrectedZVertical = 1 << 1, 
    CMAttitudeReferenceFrameXMagneticNorthZVertical = 1 << 2, 
    CMAttitudeReferenceFrameXTrueNorthZVertical = 1 << 3 
} CMAttitudeReferenceFrame; 

par exemple, en utilisant « CMAttitudeReferenceFrameXMagneticNorthZVertical » les lectures que vous obtenez de la Accelera tion serait constante quelle que soit la position du dispositif (ils sont alignés avec "gravité" ci-dessous "et" nord "à l'avant). Je ne me souviens pas de la position de référence exacte mais je crois que le «haut du téléphone» pointe vers le nord tandis que «l'écran du téléphone» pointe vers le haut.

+0

J'ai tracé un graphique en utilisant ceci et ce que je m'attend à ce que peu importe comment l'appareil est conservé Je devrais pouvoir obtenir l'accélération réelle de l'appareil Y axe, mais ce n'est pas ce que j'ai. C'est pourquoi je calcule le déplacement angulaire de l'appareil à partir de la ** position normale ** (face vers le haut et placé horizontalement). Donc, je peux en quelque sorte traduire le 3 axes en arrière et calculer l'accélération à la ** position normale ** – Nil