Как повысить точность датчиков акселерометра и компаса? - PullRequest
7 голосов
/ 29 сентября 2011

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

Работает нормально, проблема в том, что компас и акселерометр очень «вариативны», а текстовое представление постоянно перемещается вверх и вниз влево и вправо, потому чтонеточность датчиков.

есть способ ее решить?

Ответы [ 4 ]

8 голосов
/ 13 ноября 2011

Наша проблема такая же.У меня также была такая же проблема, когда я создавал простой проект дополненной реальности.Решение состоит в том, чтобы использовать экспоненциальное сглаживание или функцию скользящего среднего.Я рекомендую экспоненциальное сглаживание, потому что для этого нужно хранить только одно предыдущее значение.Пример реализации доступен ниже:

private float[] exponentialSmoothing( float[] input, float[] output, float alpha ) {
        if ( output == null ) 
            return input;
        for ( int i=0; i<input.length; i++ ) {
             output[i] = output[i] + alpha * (input[i] - output[i]);
        }
        return output;
}

Альфа-коэффициент сглаживания (0 <= альфа <= 1).Если вы установите альфа = 1, выход будет таким же, как вход (без сглаживания).Если вы установите альфа = 0, выход никогда не изменится.Чтобы удалить шум, вы можете просто сгладить значения акселерометра и магнитометра. </p>

В моем случае я использую значение альфа-акселерометра = 0,2 и значение альфа-магнитометра = 0,5.Объект будет более устойчивым, а движение довольно красивым.

3 голосов
/ 29 сентября 2011

Вам следует взглянуть на фильтры нижних частот для данных об ориентации или слияния датчиков, если вы хотите сделать шаг дальше.

Удачи в вашем приложении.

JQCorreia

1 голос
/ 29 сентября 2011

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

Создайте историю последних N значений (поэтому сохраняйте значение в массиве, увеличивая индекс, когда вы достигнетеN начать с нуля снова).Затем вы просто используете среднее арифметическое хранимых значений.

0 голосов
/ 06 декабря 2011

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

Интеграция гироскопа может быть выполнена довольно простым способом с использованием дополнительного фильтра .

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