Это распространенная проблема с данными о местоположении, которые генерируются GPS-приемниками. Типичный приемник потребительского уровня, который я использовал, имеет точность определения местоположения, определенную как CEP 2,5 метра. Это означает, что для стационарного приемника в «идеальной» среде обзора неба с течением времени 50% координат местоположения будут находиться в круге с радиусом 2,5 метра. Если вы посмотрите на положение, о котором сообщает приемник, он, кажется, случайно блуждает вокруг истинного положения, иногда отодвигаясь на несколько метров от его истинного положения. Если вы просто интегрируете расстояние, пройденное между выборками, вы получите очень большое видимое расстояние, пройденное для стационарного устройства.
Простой алгоритм, который я довольно успешно использовал для функции одометра транспортного средства, выглядит следующим образом
for(;;)
{
Stored_Position = Current_Position ;
do
{
Distance_Moved = Distance_Between( Current_Position, Stored_Position ) ;
} while ( Distance_Moved < MOVEMENT_THRESHOLD ) ;
Cumulative_Distance += Distance_Moved ;
}
Значение MOVEMENT_THRESHOLD будет влиять на точность конечного результата. Если значение слишком мало, то некоторые из случайных отклонений, выполняемых стационарным приемником, будут включены в окончательный результат. Если значение слишком велико, то выбранный путь будет приближен к серии прямых линий, каждая из которых равна пороговому значению. Дополнительное расстояние, пройденное приемником, поскольку его путь отклоняется от этого отрезка прямой, будет пропущено.
Точность такого подхода по сравнению с одометром транспортного средства была довольно хорошей. Насколько хорошо это работает с пешеходом, должно быть проверено. Проблема с людьми заключается в том, что они могут совершать гораздо более крутые повороты, чем транспортное средство, что приводит к большим ошибкам в приближении по прямой. Существует также постоянная проблема с затуманиванием вида неба и многолучевым распространением сигнала, вызванным зданиями, транспортными средствами и т. Д., Которые могут вызывать ошибки позиционирования в 10 с.