HoshiKata
Я уже делал это раньше на земле и в ракетостроении.
Самое лучшее, что я видел, - это робот из Лаборатории Дрейпера в Кембридже. У них были ошибки в несколько сантиметров без GPS через десятки минут.
Гораздо лучше гироскопы, акселерометры и хронометраж, чем на телефоне.
На открытом воздухе в хорошую погоду проще использовать GPS и фильтр, чтобы попасть под воду, чем использовать акселерометры.
Неотъемлемые проблемы заключаются в следующем: датчик имеет шум, нелинейность и смещение, и вы не можете пробовать его достаточно быстро или с достаточно хорошей временной точностью.
Это не значит, что ее нельзя решить, но это трудно :)
Глядя на 1 сеньор, скажем, ускорение, идущее влево/вправо, мы назовем это "X".
Обратите внимание, как реальное значение "x" сильно отличается от измеренного:
Xmeasured = смещение + guassianNoise + a0*x + a1*x^2 + a2*x^3 + a3*x^3 ...
Где a0-почти 1, а a1 - an-почти (не совсем) ноль, но для большинства приложений вы можете рассматривать их как ноль.
Смещение (незначительный дрейф по температуре) несколько фиксировано, и вы можете найти его для конкретной таблицы датчиков, но оно мало, но не равно нулю.
Вы можете использовать фильтры низких и высоких частот для отклонения шума и смещения (соответственно), или фильтр Калмана оценивает смещение, сравнивая его с GPS в течение нескольких минут, но ни один из них не работает очень хорошо (я пробовал).
Когда вы интегрируетесь, вы в конечном итоге интегрируете все эти ошибки. Очень маленькие вещи вызывают метры ошибок.
Кроме того, когда вы вращаете телефон, вы вращаете свою систему координат, поэтому поиск обновленного положения GPS или местоположения в комнате также усугубляется ошибками гироскопа и тем, как обновляется гироскоп / магнитометр.
Так много ошибок, так много лет, чтобы исправить это :)
Это фантастическая проблема, которую нужно попытаться решить, поэтому, пожалуйста, не отчаивайтесь полностью, но это не то, что вы можете сделать в выходные.
Ракетостроение проще, но это большая проблема, которую нужно решить, и я потратил на нее некоторое время. Очень весело.
Удачи :)