J'ai expérimenté avec CMDeviceMotion, et en particulier avec startDeviceMotionUpdatesUsingReferenceFrame. Les valeurs de magneticField ne me semblent pas correctes.La propriété MagneticField de CMDeviceMotion est-elle incorrecte?
Par exemple, si je fais:
CMDeviceMotion *manager = [[CMDeviceMotion alloc] init];
manager.deviceMotionUpdateInterval = 0.1;
[manager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryCorrectedZVertical toQueue:queue withHandler:^(CMDeviceMotion *motion, NSError *error) {
CMMagneticField fld = motion.magneticField.field;
NSLog(@"%5.1f %5.1f %5.1f", fld.x, fld.y, fld.z);
[self handleDeviceMotion:manager.deviceMotion];
}];
il montre un vecteur champ magnétique avec une taille d'environ 50, mais presque aligné avec gravité. Autrement dit, lorsque l'appareil est à plat sur une table, x et y sont proches de zéro, et z est proche de -50, indépendamment de la façon dont je fais tourner l'appareil.
Le 50 aurait la taille correcte pour le champ magnétique de la Terre (selon Wikipedia devrait être entre 25 et 65 micro Tesla), mais la direction du vecteur semble tout faux. Je me demandais si:
- Il est quelque chose de particulier à mon endroit que (Stockholm, Suède), ou
- La propriété champ magnétique disponible restant sur le champ magnétique sans champ de la terre, ou
- Ceci est bug
Avez-vous des expériences similaires avec la propriété magneticField?
Au moins pour une partie de votre question, le [docs] (http://developer.apple.com/library/ios/DOCUMENTATION/CoreMotion/Reference/CMDeviceMotion_Class/Reference/Reference.html#//apple_ref/occ/ instp/CMDeviceMotion/magneticField) sont vos amis: "... vous donne le champ magnétique total dans le voisinage de l'appareil sans biais de l'appareil ... ces valeurs reflètent le champ magnétique de la Terre plus les champs environnants, moins biais de l'appareil." – rickster
Vrai, mais le vrai comportement ne semble pas être selon les docs ... – fishinear
Votre question m'a inspiré de jouer avec le magnétomètre moi-même ... J'ai essayé ce code (n'utilisant pas le cadre de référence de votre réponse depuis que je suis intéressé par la direction de champ relative à l'appareil), mais tout ce que je vois est <0,0,0>. Ai-je manqué quelque chose qui n'est pas dans votre extrait? – rickster