Просто пытаюсь ответить ... поправьте меня, если я не прав ..
1. Да, вы на правильном пути
2. Гравитация в КМ уже «изолирована» от гравитации пользователя (значение гравитации, вызванное ускорением пользователя), поэтому в документации Apple CM есть две гравитации, «гравитация» и «пользовательское ускорение».
// Примечание: не полностью изолированы //
3.
если у вас есть сила тяжести 0, это означает, что ось вращения ядра перпендикулярна гравитации.
gravity.z - экран iPhone, поэтому он составляет -9,82 м / с2, если вы положите его на рабочий стол с экраном в вертикальном положении, на самом деле трудно получить 0 или максимальное значение силы тяжести из-за шума датчика (это нормально, все датчики имеют Шум, особенно дешевый датчик).
что я делаю в своих приложениях, так это то, что я переключу свою ось отсчета на другую ось (в вашем случае это может быть x или y) для определенных пределов, как стратегия зависит от цели или от какой стороны вы ориентируетесь.
Другое дело, гироскоп быстрый, но не стабильный, вам необходимо повторно откалибровать значение в течение нескольких интервалов. В моем случае каждые 5 секунд. Я экспериментировал с гироскопом для вычисления угла между двумя плоскостями, я пробовал с точно линейкой 90 градусов, и она будет давать ошибку примерно на 0,5 градуса каждую секунду, пытаясь продолжать увеличиваться, но это мое, может быть, у других есть лучший способ избежать ошибка.
ниже мои шаги "
- Init
- Считать гравитацию XYZ -> Xg Yg Zg
- Проверьте, если Xg <0,25. Если TRUE, попробуйте Yg, тогда Zg // Примечание 1 = 1g = 9,82 м / с ^ 2 </li>
- Чтение компаса и гироскопа
- Сконфигурируйте и откалибруйте гироскоп с помощью компаса и рассчитайте, исходя из того, какую ось я использую в точке 3.
- Если прошло 5 секунд, затем выполнить повторную калибровку, прочитайте компас
- Если разница с показаниями гироскопа составляет> 5 градусов, пропустите калибровку гироскопа.
- Если разница с показаниями гироскопа составляет <5 градусов, откалибруйте гироскоп с использованием значения компаса </li>
Примечание: для номера 7: проверить, не подвержен ли телефон воздействию магнитного поля или рядом с такой большой стальной или электрической линией высокого напряжения, а также с шумным и тяжелым оборудованием на заводе-изготовителе.
Вот и все ... Надеюсь, это поможет вам ...
И извините за мой английский ..