После некоторых экспериментов в научном стиле я обнаружил:
У iPhone есть магнитометр, у него есть 3 оси X, которые идут слева направо от экрана. Y, который идет снизу вверх. И Z, который выходит из-за телефона и выходит вперед.
Магнитное поле Земли, как и ожидалось по законам физики, не является сферой, в том месте, где я нахожусь (Бразилия), оно наклонено примерно на 30 градусов. (это означает, что я должен держать телефон под углом 30 градусов к нулевой оси 2).
Один из возможных методов расчета севера - это использование векторного произведения вектора, касательного к магнитному полю (т.е. вектора, который сообщает вам магнитометр), и гравитации. Результатом будет вектор, указывающий на восток. Если вы хотите, вы можете сделать еще одно перекрестное произведение между востоком и гравитацией, в результате чего получится вектор, указывающий на север.
Знайте, что датчики iPhone довольно хороши и улавливают любые незначительные колебания и вибрации, поэтому рекомендуется использовать фильтр нижних частот, чтобы удалить шум из сигнала.
Сам iPhone имеет сложную процедуру для определения «истинного курса», я не совсем понял, но он каким-то образом использует акселерометр для компенсации наклона. Вы можете использовать акселерометр и компенсировать обратно, если хотите, например, если телефон наклонен на 70 градусов, вы также можете изменить истинный курс на 70 градусов, и в результате телефон будет игнорировать наклон.
Также процедура истинного курса, проверьте, перевернут ли iPhone или нет. Если рассматривать его по горизонтали, перед вами как 0, то примерно на 135 градусов он решает, что он перевернут, переворачивая результаты.
Обратите внимание, что та же система координат применяется и к акселерометру, что позволяет использовать векторные операции между данными акселерометра и магнитометра без особых возни.
person
speeder
schedule
23.03.2011