Использование линейного ускорения Android по сравнению с применением фильтра нижних частот

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

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


person dgldy    schedule 23.06.2013    source источник
comment
Фильтр нижних частот обычно — плохая идея, особенно если у вас есть доступ к линейному ускорению. Чем бы Вы хотели заняться? Зачем тебе ускорение?   -  person Ali    schedule 24.06.2013
comment
Я просто пытаюсь записать и проанализировать типичные профили ускорения при выполнении одновременных действий. К счастью, я нашел бесплатное приложение, использующее линейный акселерометр. Я обнаружил расхождение между линейным и обычным акселерометрами в том, что обычный акселерометр выдает показания до 2G (и это подтверждается вызовом функции getMaxRange()). Однако линейный акселерометр возвращает показания до 3G — несмотря на то, что его функция getMaxRange() возвращает 2G. Я очень смущен. Если это поможет, я видел все это на Samsung Galaxy S2.   -  person dgldy    schedule 29.06.2013
comment
3G разумно, просто подумайте об этом. Максимум, что вы можете измерить, это 2G, и после удаления гравитации (1G) вы действительно можете получить 3G в некоторых ситуациях, в зависимости от ориентации. Другими словами: acceleration = gravity + linear-acceleration и не забывайте, что это векторы со знаками! Длина действительно может быть такой, какой вы ее пишете.   -  person Ali    schedule 29.06.2013


Ответы (1)


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

Как уже упоминалось, только некоторые телефоны реализовали TYPE_LINEAR_ACCELERATION и TYPE_GRAVITY и обычно оснащены гироскопом. У Droid Razr даже есть гироскоп, но они так и не удосужились реализовать его или TYPE_LINEAR_ACCELERATION. Я полагаю, что в GS2 реализовано TYPE_LINEAR_ACCELERATION, но нет гироскопа, поэтому они, должно быть, использовали магнитный датчик или какой-то фильтр нижних частот. Это может быть неприятно.

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

Если у вас нет телефона с TYPE_LINEAR_ACCELERATION, вы застряли с TYPE_ACCELERATION, который не может отделить гравитацию (наклон) от линейного ускорения.

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

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

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

Я реализовал все эти подходы в проекте с открытым исходным кодом Acceleration Explorer.

person Kaleb    schedule 25.07.2013
comment
Хороший ответ, но в настоящее время все ссылки на github не работают. - person mcy; 30.03.2016
comment
В последнее время консолидация проектов. Обновлено. :) - person Kaleb; 30.03.2016