Я получаю обратный вызов с широтой и долготой, как я могу лучше всего вычислить “текущую скорость” и другие полученные значения?

(Я думаю, что этот вопрос независим от платформы, но я, оказывается, кодирую для Nexus One).

О "текущей скорости": я получаю обратный вызов каждое приблизительно второе сообщение мне, каковы моя текущая широта и долгота. Я могу calc расстояние между текущим местоположением и предыдущим местоположением, таким образом, я могу отслеживать кумулятивное расстояние и совокупное время. С этим я могу сказать, чем средняя скорость была для ВСЕГО прохождения.

Но как делают меня calc текущая скорость? Я подозреваю, что должен использовать новые образцы N, правильно? Я думаю об этом правильный путь? Что такое хорошее эмпирическое правило для N? Сколько образцов, или сколько секунд назад?

Во "время остановки": Если я просто останавливаюсь, я могу все еще получить немного отличающиеся широты и долготы, о которых сообщают мне, правильно? Так, решение, что я действительно не перемещаюсь, означает говорить что-то как, "предыдущие X блокировок все были в метрах Y друг друга", право? Я думаю об этом правильный путь? Что такое хорошее эмпирическое правило для X и Y?

Даже о "расстоянии": я буду преуменьшать его, потому что я буквально сокращаю углы? Существует ли алгоритм или эмпирическое правило для определения, когда я "поворачиваюсь", и я должен добавить в небольшой выдумке?

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

Править: Я отрекаюсь от извинения. В моем исходном вопросе я записал, что расстояние также является полученным значением. Если я просто буду использовать необработанные данные GPS, то я буду преувеличивать расстояние из-за погрешностей. Я мог бы обходить прямую линию, но необработанный GPS lat/long будет колебаться, поэтому если я calc общее расстояние путем измерения расстояния между точками, я буду преувеличивать его. Вот некоторые ссылки, которые связаны с этой проблемой.

Сглаживайте данные GPS
http://www.cs.unc.edu/~welch/kalman/Levy1997/index.html
Как разумно ухудшить или сглаживать данные GIS (упрощение полигонов)?
Как 'сглаживать' данные и вычислить градиент строки?

6
задан MackM 23 February 2018 в 00:25
поделиться

5 ответов

О текущей скорости: большинство устройств GPS отправляют вам эту информацию самостоятельно

1
ответ дан 17 December 2019 в 00:09
поделиться

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

// delay is the time difference between the 2 samples you have
delay = 5;   // 5 second delay

// figure out how far along x and y we have moved since last time
dx = newx - oldx;
dy = newy - oldy;

// distance travelled
distance = sqrt(dx*dx + dy*dy);

// find the speed. if the positions were measured in metres and the time in seconds
// this will be the average speed in metres per second, over the last 5 seconds
speed = distance / delay;

Чем дольше вы можете дождаться от образцов (например, если вы сохраняете последние 30 выборок позиции и используете задержку 30 секунды), тем более стабильный ваш ответ будет (т. Е. Менее шумно будет), но медленнее будет реагировать на любые изменения в скорости.

Почему вам нужно добавить эту задержку? Ну, блок GPS в вашем телефоне, вероятно, не очень точный. Если вы стояли еще, позиция возвращается каждую секунду, может колебаться о справедливой. Этот шум колебания заставит это выглядеть так, будто вы случайно спригнивается вокруг комнаты, и может привести к тому, чтобы вы сообщили о умеренной скорости, даже если вы вообще не двигаетесь. Решение, которое я перечислял, не поможет, когда вы остаетесь еще, так как результат от 30 секунд назад будет так же неправильно, как положение от 1 секунды назад. То, что вам действительно нужно сделать, это среднее положение в течение некоторого времени, а затем сравнить это в среднем положении из немного ранее. Например, ...

принимайте 10 образцов положения и среднего их. Это позиция 1.
Возьмите еще 10 образцов и среднем их. Это позиция 2.
Используйте эти 2 позиции с помощью кода выше, чтобы получить скорость.

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

3
ответ дан 17 December 2019 в 00:09
поделиться

Ваш подход не прав, но наивный. Существует огромная математическая основа для таких задач - называемых, несомненно, фильтры. Вы можете получить намного лучше, чем «усреднение последних n значений».

Для одного, фильтры Kalman легко реализовать и настраивать, и, как правило, достаточно хороши для практических задач.

Кроме того, не пытайтесь сгладить или средний сигнал GPS - GPS-приемник делает это само собой. Вместо этого базовый фильтр на ожидаемых ускорении транспортного средства (или человека).

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

2
ответ дан 17 December 2019 в 00:09
поделиться

Что касается «резки углов», вы всегда можете приблизиться к кривой (с помощью сплайнов или для реального переживания - регрессии), в противном случае я думаю, что вы находитесь на правильном пути.

Что касается того, сколько образцов и стоят еще, вместо того, чтобы принимать постоянную n, я бы посмотрел на отклонение образцов.

1
ответ дан 17 December 2019 в 00:09
поделиться

Скорость тока - это разница между положением (теперь) и положением (предыдущим) так, чтобы получить текущую скорость, которую вам нужно только сравнить текущую и последнюю позицию.

Но: Как это вполне уязвимо для небольших неточностей во время отслеживания времени / положения, он не надежен, поэтому вы должны в среднем его по последним позициям. Сколько зависит от случая использования, тем длиннее временные рамки менее «тока» скорость, но тем более точнее.

0
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: