Как работает калибровка компаса?


8

Мне интересно, как работает калибровка компаса / почему, например, рисование 8 или вращение телефона по всем 3 осям работает (или, по крайней мере, должно работать) - я имею в виду, я бы понял процесс калибровки, если приложение скажет мне: Укажите на север, затем нажмите эту кнопку там, но вы можете начать с нуля приложения, просто вращая телефон! Как это сделать? Кроме того, мне нужно войти в специальный режим калибровки или я могу нарисовать эти цифры (например, 8) непосредственно в Google Maps? Как Google Maps узнает, что я не просто перемещаю телефон, но хочу откалибровать компас? Спасибо за любую подсказку!


Помечено как дублирующее, пожалуйста, не публикуйте два отдельных вопроса по одной и той же проблеме. Редактировать существующий вопрос с новой информацией; android.stackexchange.com/questions/30328/…
pzkpfw

1
Перемещение объекта через магнитное поле может вызвать электрический ток, который, я думаю, в этом случае измеряется. Рисунок 8 гарантирует, что телефон движется вдоль каждого возможного вектора в 2D-плоскости, что должно позволить ему отличать север от юга. Я думаю. Что касается карт, это легко понять - в другой раз вы делаете такой абсурдный ход со своим телефоном? Это сильно отличается от обычных движений и должно быть простым для обнаружения.
Мэтью Рид

@ bigbadonk420 Это не дубликат, это совершенно другой вопрос.
Мэтью Прочитал

1
Техническая информация: electronics.stackexchange.com/questions/22144/…
bwDraco

Ответы:


3

Калибровка компаса работает путем определения напряженности магнитного поля Земли. Но иногда из-за сильных помех от других электронных устройств, таких как трансформаторы, датчик компаса может неправильно понять магнитные полюса Земли и может указывать в неправильном направлении.

Чтобы убедиться в этом, он просит пользователей откалибровать компас, вращая его в направлении, указанном на рисунке 8, чтобы он мог судить об интенсивности магнитного поля во всех направлениях. Из этих данных он выводит фактические полюса Земли.


1
Это на самом деле неправильный ответ. Калибровка может только устранить искажения, исходящие от объектов, прикрепленных к устройству (таким образом, вращающихся вместе с устройством во время калибровки). Если объекты находятся в окружающей среде, телефон будет наблюдать фиксированное магнитное поле, и он не будет знать, как далеко от истинного севера он направлен.
Марко Топольник

5

Цель калибровки - выяснить, как компенсировать влияние компонентов вашего телефона (винты, магниты динамиков и т. Д.) На измеренное магнитное поле.

Процесс калибровки основан на том факте, что вы можете разделить внутренние и внешние вклады в магнитное поле, наблюдая за тем, как поле изменяется при повороте телефона. Например, в одной ориентации магнитное поле от магнита в динамике будет добавлять к полю Земли; но когда телефон ориентирован в противоположном направлении, два поля будут частично отменены.

Когда вы поворачиваете телефон, магнитометр записывает, как изменяется величина измеренного поля, и использует его для калибровки датчиков магнитного поля x, y и z. Смотрите геометрикал ответ на аналогичный вопрос для более подробной информации об этом процессе. Обратите внимание, что эта калибровка не позволяет компенсировать влияние других внешних объектов (например, вашего холодильника) на магнитное поле.

Что касается реализации в Google Maps: я считаю, что Google Maps не контролирует калибровку компаса, потому что в Android API такой функциональности нет. Магнитометр, вероятно, постоянно калибруется, и Google Maps просто просит вас повернуть телефон, чтобы магнитометр мог собирать данные, необходимые для точной калибровки.

Другими словами, вы можете откалибровать ваш компас в любое время, когда датчик магнитного поля используется, просто взмахнув телефоном - нет «режима калибровки».


Но как ОС Android решает, когда менять значения калибровки, реагировать ли я на движение или через равные промежутки времени или и то, и другое?
Hamish_Fernsby

Android должен просто вести историю чтений и продолжать применять жесткую поправку к ним. Это даже указано в документации .
Марко Топольник

3

В любой точке пространства напряженность и направление магнитного поля является суммарным эффектом всех источников магнитного поля, влияющих на эту точку. Магнитное поле Земли является одним из них. Намагниченные отвертки, машины, магниты на холодильник и т. Д. - все это создает поля. Поля также создаются током, протекающим через провода. Это как наливать воду в стакан из нескольких источников. Как только он в стекле, вы не можете сказать, откуда он.

Не существует инструмента, который мог бы определять «фактические полюса» Земли путем измерения магнитного поля в точке. Однако телефон может определить точку, в которой ось телефона параллельна силовой линии N / S, и определить, какой конец телефона направлен на север. Если вы танцуете вдали от объектов, которые могут намагничиваться, таких как автомобили и стальные заборы, поле, которое измеряет телефон, может быть в первую очередь полем земли, и, следовательно, компас телефона будет правильно откалиброван. Однако если вы поместите телефон в намагниченную машину, он укажет неправильное направление на север. Сталь в каждой машине намагничена в той или иной степени.

Высокоточные компасы такого типа используются на самолетах, а серьезные морские суда на самом деле имеют крошечные корректирующие магниты, которые регулируются винтами для ошибок N / S и E / W. Они калибруются после установки путем поворота транспортного средства по известным направлениям (например, роза компаса, нарисованная геодезистом на рулежной дорожке вдали от металлических зданий) и возни с магнитами, пока ошибка компаса не будет минимизирована. Затем остаточные ошибки записываются на «карту коррекции компаса» для использования при коррекции указанных показаний. Поиск "карта коррекции компаса", чтобы увидеть изображения.

Теоретически, GPS можно использовать для калибровки компаса при ходьбе или вождении, поскольку мгновенный трек GPS точен. Я не слышал об этом, хотя, возможно, это обычное дело. Это будет работать даже в намагниченной машине. Тем не менее, в самолете или на корабле это не сработает, потому что направление движения транспортного средства в той или иной степени обычно слегка колеблется от ветра, и GPS не знает об этом.


Это не говорит о том, как и почему работает общая процедура калибровки в Android.
Руслан

1

Я проверил измерения полей компаса, предоставленные телефоном Android, и обнаружил, что, если я поверну телефон на 180 градусов, поле не изменится на противоположное, что должно быть в случае, если датчики исправны. Это может быть связано с внутренним магнетизмом деталей телефона или неточностью считывания показаний датчика.

Если вы не компенсируете это и просто используете чтение как есть и пытаетесь рассчитать направление на север, вы обнаружите, что они неверны: вращение телефона на 90 градусов вокруг вертикальной оси не приводит к вращению измеренного магнитного поля на тот же угол (это справедливо для любого угла, просто проверить его с углом 90 градусов).

Таким образом, цель калибровки - разработать формулу компенсации, которая преобразует неправильные показания магнитного датчика в более реалистичные значения, из которых мы можем рассчитать правильный подшипник. Я предполагаю, что он ищет оптимальное смещение нуля для каждой оси, которое даст результирующую длину магнитного вектора независимо от ориентации телефона (это должно иметь место в идеальной ситуации, но это не тот случай, когда ноль смещен по любой оси ).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.