2011-08-12 2 views
5

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

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

ответ

2

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

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

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

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

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

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

+4

Еще интереснее (и забавно) просто оставить устройство на столе на полминуты, вычесть гравитацию и интегрировать то, что осталось дважды, чтобы получить изменение позиции. Оценка будет заключаться в том, что устройство переместилось на несколько сотен метров. –

+0

Hah OK, это намного хуже, чем я думал ... –

+0

Я пытался это сделать. Я добавил фильтр низких частот к скорости, чтобы избежать получения ... в этом случае у меня нет значимого движения с неподвижным устройством. Но перемещая его, даже движение в несколько сантиметров дает результаты, которые кажутся случайными. Конечная скорость часто сильно отличается от 0. – ARLabs

0

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

+0

Правда, хотя он будет определять гравитацию (это то, как игры когда-либо используют эту вещь, чтобы знать ориентацию устройства) в состоянии покоя или с постоянной скоростью. –

+0

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

+0

2Sean: Android имеет линейный датчик ускорения, который вычитает гравитацию. – Fixpoint

3

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

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

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

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

+0

как я могу вычислить обнаружение шагов с помощью Accelerometer android? @ Антон Ханссон – Erum

Смежные вопросы