Можно ли рассчитать скорость путем интегрирования данных акселерометра во времени? - PullRequest
5 голосов
/ 12 августа 2011

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

Будет ли это работать?

Ответы [ 3 ]

3 голосов
/ 12 августа 2011

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

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

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

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

2 голосов
/ 12 августа 2011

Теоретически, вы могли бы сделать это;на практике нет.

Вы должны были бы предположить, что знаете начальную скорость, но если предположить, что вы начинаете с скорости 0, это не такое плохое предположение.

Вы также должны знатьактуальная ориентация устройства на протяжении всего периода.В противном случае вы не сможете дифференцировать изменение ускорения из-за фактического ускорения и просто из-за вращения устройства.

(Помните, что вы должны вывести ускорение из-за гравитации из показаний!)

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

Кроме всех этих вещей, конечно, это работает!API действительно говорит вам, в каких единицах измерения (м / с ^ 2).Вы можете попросить датчик для очень быстрых обновлений.Я думаю, что было бы интересно посмотреть, насколько (не) точным это будет, написав приложение, которое делает это, а затем положит трубку, а затем пойдет вперед и остановится.Насколько близко к 0 это чтение тогда?

0 голосов
/ 12 августа 2011

Наверное, нет, потому что если вы движетесь с медленной постоянной скоростью, я не думаю, что акселерометр обнаружит что-либо.

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