как калибровать датчик ориентации в андроиде?

Я пишу приложение в Google Android 2.1, который должен знать, с которым стоит направление (n/w/s/e) устройство (HTC Hero). Датчик и его слушатель работают отлично, но значения, которые я получаю от датчика, являются полностью дрянными. например, это говорит мне, что я столкнулся бы с севером, когда устройство стоит перед SW или так...

Это, кажется, известная проблема с устройствами на базе Android. "Решения", которые я нашел в сети, похожи на это:

  • встряхните устройство вокруг
  • переместите устройство как восемь
  • коснитесь на устройствах назад

Это, как думают, инициировало перекалибровку датчиков. И: вещь с "перемещающимися" работами для меня..., но это не очень профессионально, я предполагаю...

таким образом - как я инициировал перекалибровку датчика ориентации от SDK? Мне нужен датчик, который будет правильно калиброван без любого необычного материала, который заставил бы пользователей этого приложения быть похожими на полных идиотов, в то время как они "вручную" перекалибруют свои телефоны...

Там какой-либо путь состоит в том, чтобы сделать это правильно?

Править:

Или: там какой-либо путь состоит в том, чтобы определить ПРОГРАММНО, если устройство правильно калибруется или нет? Как опция нейтрализации так сказать... затем я мог предупредить пользователя, что устройству нужна "ручная" перекалибровка.

16
задан S.L. Barth - Reinstate Monica 15 December 2015 в 07:02
поделиться

2 ответа

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

С этими микроустройствами всегда есть некоторый перекос, с которым вам придется иметь дело. Если вы проверите значения для акселерометра, вы увидите, что в состоянии покоя они не всегда возвращают 9,8 м/с^2 (или, по крайней мере, последовательно между устройствами).

Возможно, в справке вам нужно просто сказать пользователю, чтобы он повернул/повернул телефон в восьмерку, чтобы сбросить компас.

3
ответ дан 30 November 2019 в 23:34
поделиться

Я предполагаю, что вы имеете в виду магнитометр внутри героя.

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

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

Обычная практика - дополнять данные одного датчика данными другого датчика для повышения точности. Можно использовать GPS для определения курса, когда пользователь движется. Однако если он движется медленно, это тоже будет неточным. Можно интегрировать данные акселерометра для определения изменения ориентации (не абсолютной). Но, честно говоря, гирометр был бы более идеален в этом случае.

Системы, которые работают подобным образом, иногда называют инерциальными навигационными системами (INS), потому что они могут, учитывая фиксированную точку в пространстве, точно определять свое последующее относительное положение и ориентацию без дополнительных внешних данных. Использование фильтра Калмана является обычной практикой для повторной калибровки системы время от времени, когда доступно абсолютное положение (например, полученное через GPS).

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

0
ответ дан 30 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: