Какова реальная точность телефонных акселерометров при позиционировании?
Я работаю над приложением, в котором я хотел бы отследить местоположение мобильного пользователя в здании, где GPS недоступен. Пользователь начинает с хорошо известного фиксированного местоположения (с точностью до 5 сантиметров), после чего акселерометр в телефоне должен быть активирован для отслеживания любых дальнейших движений относительно этого фиксированного местоположения. Мой вопрос заключается в том, насколько точно можно ожидать, что в смартфонах текущего поколения (iPhone, Android-телефонах и т. Д.) Можно будет отслеживать положение некоторых людей на основе акселерометра, которым эти телефоны обычно оснащены?
Были бы хороши конкретные примеры, например: "Если я перейду на 50 метров X от начальной точки, на 35 метров Y от начальной точки и на 5 метров Z от начальной точки, я могу ожидать, что мое местоположение будет приблизительно в пределах +/- 80 сантиметров на большинстве современных смартфонов ", или что угодно.
У меня есть только поверхностное понимание методов, таких как фильтры Калмана, для исправления дрейфа, хотя, если такие методы актуальны для моего приложения, и кто-то хочет описать качество исправлений, которые я мог бы получить с помощью таких методов, это было бы плюсом.
3 ответа
Если вы дважды интегрируете значения акселерометра, вы получите положение, но ошибка ужасна. Это бесполезно на практике.
Вот объяснение, почему (Google Tech Talk) в 23:20.
Я ответил на аналогичный вопрос.
Я не знаю, открыт ли этот поток или даже если вы все еще пытаетесь использовать этот подход, но я мог бы, по крайней мере, внести свой вклад в это, учитывая, что я пробовал то же самое.
Как сказал Али.... это ужасно! Наименьшая погрешность измерения в акселерометрах после повторной интеграции оказывается без повторной установки. И благодаря постоянному увеличению и уменьшению ускорения при ходьбе (фактически, с каждым шагом в ногу) эта ошибка быстро накапливается со временем.
Извините за плохие новости. Я также не хотел верить этому, пока не попробую сам... фильтрация нежелательных измерений также не работает.
У меня есть другой подход, возможно, правдоподобный, если вы заинтересованы в продолжении вашего проекта. (подход, который я использовал для своей диссертации на соискание ученой степени в области компьютерной инженерии)... через обработку изображений!
Вы в основном придерживаетесь теории для оптических мышей. Оптический поток, или, как его называет вид, Эго-Движение. Алгоритмы обработки изображений реализованы в Androids NDK. Даже реализовал OpenCV через NDK для упрощения алгоритмов. Вы преобразуете изображения в оттенки серого (с компенсацией различной интенсивности света), затем применяете пороговое значение, улучшение изображения на изображениях (чтобы компенсировать размывание изображений при ходьбе), затем обнаружение углов (повышение точности для общих оценок результатов), затем сопоставление с шаблоном, которое выполняет фактическое сравнение между кадрами изображения и оценивает фактическое смещение в количестве пикселей.
Затем вы проходите процедуру проб и ошибок, чтобы оценить, какое количество пикселей представляет какое расстояние, и умножиться на это значение, чтобы преобразовать смещение в фактическое смещение. Это работает до определенной скорости движения, однако реальная проблема заключается в том, что изображения с камеры все еще слишком размыты для точного сравнения из-за ходьбы. Это можно улучшить, установив скорость затвора камеры или ISO (я все еще играю с этим).
Надеюсь, это поможет... в противном случае Google для Egomotion для приложений реального времени. В конце концов вы получите правильные вещи и поймете толкование, которое я вам только что объяснил. наслаждаться:)
Типичные микросхемы телефонного акселерометра разрешают +/- 2g при 12 битах, обеспечивая 1024 бит во всем диапазоне или 0,0643 фута / с ^2 фунта / кв. Частота дискретизации зависит от тактовой частоты и общей конфигурации. Типичные скорости позволяют от одного до 400 выборок в секунду, более высокие скорости обеспечивают меньшую точность. Если вы не установите телефон на улитку, измерение смещения, скорее всего, вам не подойдет. Вы можете использовать оптическое измерение расстояния вместо акселерометра телефона. Обратите внимание на устройство Panasonic EKMB1191111.
Оптический подход хорош, но OpenCV предоставляет несколько функций преобразования. Затем вы показываете соответствие (OpenCV предоставляет это).
Не имея второй точки отсчета (2 камеры), вы не сможете восстановить свое местоположение из-за глубины. В лучшем случае вы можете оценить глубину на точку, предположить движение, оценить допущение, основанное на нескольких кадрах, и переоценить каждую глубину и движение, пока это не будет иметь смысла. Который не так уж сложно кодировать, но он не стабилен, мелкие движения вещей на сцене облажаются. Я старался:)
Со второй камерой это совсем не сложно. Но у мобильных телефонов их нет.