Данные с датчиков HTC Desire

16 мая 2011 г.

Давно хотел написать статью о том как однажды пришлось поработать с данными, получаемыми от датчиков HTC Desire, находящегося под управлением Android.

Цель была такова: определение перемещения объекта. То есть по данным с датчиков была возможность получить значения ускорений и моментов времени этих измерений. Далее обрабатывая данные уже получить скорость и затем перемещение.

HTC Desire 4

Работа с данными

Для начала пришлось повозиться со средой разработки для андроида. Но в итоге было написано приложение, которое собирало данные в базу SQLite на флешку. Вот первые данные которые удалось получить:

Это график ускорения от времени, приложение запустили и телефон просто толкнули по столу чтобы он проскользил. Далее пошли уже всякие испытания, хотелось проверить например значение насыщения датчиков(максимально измеримое значение). Телефон двигался по круговой траектории с постепенным ускорением. График данных ниже:

Насыщение датчиков произошло на значении примерно 18,35 м/c^2.
Далее хотелось уже попробовать обработать получаемые данные:

Тут показан пример также скольжения телефона по столу: синий — ускорение, красный — скорость, зеленый — перемещение. Этот не очень удачный, один из первых примеров, тут перемещение так и не удалось определить.
Вот более идеальный пример подобного опыта:

На данном примере после обработки данных было получено правдоподобное значение перемещения телефона по столу.
В дальнейшем захотелось посмотреть как будут выглядеть данные при ходьбе с телефоном:

А так же при беге с телефоном:

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

в данном опыте телефон лежал на столе, и одна из его сторон поднималась до привидения перпендикулярного положения телефона к столу. Здесь красный — угол (получаемый с гироскопа), зеленый — значение на датчике ускорения(по сути значение = ускорение + сила тяжести), фиолетовый — значение ускорения(с поправкой за значения угла). То есть в данном примере удалось исключить влияние силы тяжести.

Заключение

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

Теги: рубрика Android
  • Похожие статьи
  • Предыдущие из рубрики