Неправильно ли указано свойство MagneticField CMDeviceMotion? - PullRequest
0 голосов
/ 26 марта 2012

Я экспериментировал с CMDeviceMotion, и особенно с startDeviceMotionUpdatesUsingReferenceFrame.Значения магнитного поля в этом мне не кажутся правильными.

Например, если я сделаю:

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];
}];       

, он показывает вектор магнитного поля размером около 50, но почти выровненныйс гравитацией.То есть, когда устройство лежит ровно на столе, x и y близки к нулю, а z близка к -50, независимо от того, как я вращаю устройство.

Размер 50 будет правильным по размерудля магнитного поля Земли (согласно Википедии должно быть между 25 и 65 микротеслами), но направление вектора кажется совершенно неправильным.Мне было интересно:

  • Это что-то особенное только в моем месте (Стокгольм, Швеция) или
  • Свойство magnetField показывает оставшееся магнитное поле без поля Земли, или
  • Это ошибка

У вас есть похожий опыт использования свойства MagneticField?

1 Ответ

2 голосов
/ 28 марта 2012

ОК, тайна раскрыта.

Теперь я использовал систему отсчета CMAttitudeReferenceFrameXTrueNorthZVertical, которая дает результаты, аналогичные ... XArbirtraryCorrectedZVertical, который я использовал ранее.Затем я рассчитал, как вектор магнитного поля располагается относительно силы тяжести, повернув его обратно к контрольному кадру, используя заданное положение.

Оказывается, магнитное поле довольно стабильно указывает на 5 градусов к востоку от истинного севера, но сугол около 73 градусов в землю.И это точно в соответствии с ожиданиями моего местоположения в Швеции, согласно этой карте .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...