Я просто думаю вслух, и я еще не играл с API акселерометра Android, так что терпите меня.
Прежде всего, традиционно для навигации с помощью акселерометров вам понадобится 6-осевой акселерометр. Вам нужны ускорения по осям X, Y и Z, а также вращения Xr, Yr и Zr. Без данных вращения у вас не будет достаточно данных для определения вектора, если вы не предполагаете, что устройство никогда не меняет свое положение, что было бы довольно ограничивающим. Все равно никто не читает TOS.
О, и вы знаете, что INS дрейфует вместе с вращением Земли, верно? Так что это тоже. Через час вы таинственным образом поднимаетесь в космос по склону под углом 15 °. Это при условии, что у вас есть INS, способная сохранять местоположение так долго, что телефон пока не может.
Лучший способ использовать акселерометры - даже с 3-осевым акселерометром - для навигации - это привязать к GPS для калибровки INS, когда это возможно. Там, где не хватает GPS, INS хорошо дополняет. GPS может внезапно выстрелить в вас за 3 квартала, потому что вы слишком близко подошли к дереву. INS не очень хорош, но, по крайней мере, он знает, что вас не сбил метеор.
Что вы можете сделать, так это записать данные акселерометра телефона и многое другое. Вроде стоит недели. Сравните это с хорошими (я имею в виду действительно хорошими) данными GPS и используйте анализ данных, чтобы установить корреляцию тенденций между данными акселерометра и известными данными GPS. (Совет от профессионала: вам нужно будет проверять GPS-альманах в течение нескольких дней с хорошей геометрией и большим количеством спутников. В некоторые дни у вас может быть только 4 спутника, и этого недостаточно). Что вы можете сделать, так это обнаружить, что когда человек идет со своим телефоном в кармане, данные акселерометра регистрируют очень специфическую картину. На основе сбора данных вы устанавливаете профиль для этого устройства с этим пользователем и какой тип скорости представляет этот шаблон, когда к нему прилагались данные GPS. Вы должны уметь обнаруживать повороты, подъем по лестнице, сидение (калибровка на время скорости 0! ) и различные другие задачи. То, как удерживают телефон, нужно рассматривать как отдельные входные данные целиком. Я чувствую запах нейронной сети, которая используется для интеллектуального анализа данных. Другими словами, что-то слепое к тому, что означают вводимые данные. Алгоритм будет только искать тенденции в паттернах, не обращая внимания на фактические измерения INS. Все, что он знал бы, этоhistorically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now.
И это соответственно сдвинуло бы фигуру вперед. Важно, чтобы он был полностью слепым, потому что, просто положив телефон в карман, он может быть ориентирован в одном из 4-х различных направлений и 8-м, если вы меняете карманы. И есть много способов держать телефон в руке. Здесь мы говорим о большом количестве данных.
Очевидно, у вас все еще будет много дрейфа, но я думаю, вам больше повезет, потому что устройство будет знать, когда вы остановились, и позиционный дрейф не будет постоянным. Он знает, что вы стоите на месте, основываясь на исторических данных. Традиционные системы INS не имеют этой функции. Дрейф сохраняется во всех будущих измерениях и усугубляется экспоненциально. Безбожная точность или наличие вторичной навигации, которую нужно проверять через регулярные промежутки времени, абсолютно жизненно важны для традиционных INS.
У каждого устройства и у каждого человека должен быть свой профиль. Это много данных и много вычислений. Все ходят с разной скоростью, с разными шагами, кладут свои телефоны в разные карманы и т. Д. Конечно, для реализации этого в реальном мире потребуется обработка чисел на стороне сервера.
Если вы использовали GPS для начальной базовой линии, часть проблемы заключается в том, что GPS имеет тенденцию иметь собственные миграции с течением времени, но они не являются постоянными ошибками. Установите приемник в одном месте и зарегистрируйте данные. Если нет исправлений WAAS, вы можете легко получить исправления местоположения, дрейфующие в случайных направлениях на 100 футов вокруг вас. С WAAS, возможно, до 6 футов. Возможно, вам действительно повезет с системой RTK субметра на рюкзаке, чтобы хотя бы отключить алгоритм ANN.
У вас по-прежнему будет угловой дрейф с ИНС, используя мой метод. Это проблема. Но если вы зашли так далеко, чтобы построить ИНС, чтобы в течение нескольких недель разливать данные GPS и ИНС среди n пользователей, и действительно заставили ее работать до этого момента, вы, очевидно, пока не возражаете против больших данных. Продолжайте идти по этому пути и используйте больше данных, чтобы помочь разрешить угловой дрейф: люди - существа привычки. Мы в значительной степени делаем то же самое, что ходим по тротуарам, сквозь двери, поднимаемся по лестнице, и не делаем сумасшедших вещей, таких как прогулки по автострадам, сквозь стены или с балконов.
Допустим, вы берете страницу Большого Брата и начинаете хранить данные о том, куда люди идут. Вы можете начать наносить на карту ожидаемые места, где люди будут ходить. Можно с уверенностью сказать, что если пользователь начнет подниматься по лестнице, он окажется на том же основании, что и человек перед ней. После 1000 итераций и некоторых корректировок методом наименьших квадратов ваша база данных с большой точностью знает, где находятся эти лестницы. Теперь вы можете исправить угловой снос и местоположение, когда человек начинает идти. Когда она ударяется по лестнице, или поворачивает в коридор, или идет по тротуару, любое отклонение от нее можно исправить. Ваша база данных будет содержать секторы, взвешенные по вероятности того, что человек будет ходить туда или что этот пользователь ходил туда в прошлом. Пространственные базы данных оптимизированы для этого с помощьюdivide and conquer
для выделения только значимых секторов. Это было бы похоже на те проекты Массачусетского технологического института, где оборудованный лазером робот начинает с черного изображения и рисует лабиринт в памяти, делая каждый поворот, освещая все стены.
Области с интенсивным движением будут иметь больший вес, а районы, где никто никогда не бывал, получат нулевой вес. Области с более высоким трафиком имеют более высокое разрешение. По сути, вы получите карту всех мест, где кто-либо был, и используете ее в качестве модели прогноза.
Не удивлюсь, если с помощью этого метода можно определить, какое место в театре занимает человек. При наличии достаточного количества пользователей, идущих в кинотеатр, и достаточного разрешения, у вас будут данные, отображающие каждую строку театра и ширину каждой строки. Чем больше людей посещают какое-либо место, тем с большей точностью вы можете предсказать, что этот человек находится.
Кроме того, я настоятельно рекомендую вам получить (бесплатную) подписку на журнал GPS World, если вы заинтересованы в текущих исследованиях такого рода. Каждый месяц я увлекаюсь этим.