Внутреннее отслеживание (IMU + метки) - PullRequest
2 голосов
/ 27 сентября 2011

это еще один вопрос о внутреннем слежении с использованием инерции (смартфон + aceel + gyro) Во-первых, я хотел бы сказать, что я прочитал почти каждый пост на stackoverflow, посвященный этой теме. И я знаю, что для отслеживания позиции нам придется интегрировать ДВАЖДЫ ускорение , и это очень бесполезно в реальном приложении из-за всех ошибок дрейфа ...

Но оказалось, что мне не нужно строить самолет или что-то еще, и мне не нужно разрабатывать приложение, которое должно РАБОТАТЬ, чтобы быть проданным, или что-то в этом роде. Я просто хочу реализовать простое приложение для Android, которое использует «теоретическую» концепцию внутреннего слежения -

  • Какие возможности?
  • Что нам нужно?

В основном мой телефон лежит на экране стола, обращенном вверх, в известное положение (0,0), если толкнуть мой телефон на 2 или 3 метра, а затем я поворачиваю его и снова нажимаю на него в течение 2 или 3 метров, чтобы узнать, сколько метров становится неточным, поэтому используйте метку, чтобы перекалибровать измерения <--- Это мой главный вопрос </p>

что мне нужно? - угол ? (хорошо, интегрируя гироскоп) (я не хочу использовать компас) - Аксель? (я имею) - скорость? (интегрируя аксел) - и позиция (двойное ускорение интеграции)

Я хотел бы знать, как я могу собрать это число? Это правильный способ сделать это? Есть ли другое решение (чтобы решить мою проблему, чтобы не отслеживать кого-то действительно точно)?

Я также смотрел на теорию DCM (Если я правильно понял, это даст мне ориентацию телефона по 6 осям, верно? Но какая разница в получении угла от Accel или гироскопа (шаг, крен) и т.д ..)?

Спасибо

Ответы [ 2 ]

3 голосов
/ 19 ноября 2011

Ваш смартфон, вероятно, имеет 3-осевой гироскоп, 3-осевой магнитометр и 3-осевой акселерометр.Этого достаточно для хорошей оценки отношения.Каждый из них имеет свои преимущества и недостатки:

Акселерометры могут измерять силу тяжести, она дает вам положение вашего телефона, но в горизонтальном положении вы не можете знать, куда он направлен.И он очень чувствителен к инерционному шуму.

Гироскопы самые быстрые и точные, но его проблема - дрейф.

Магнитометры не имеют дрейфа и не чувствительны ксилы инерции, но слишком медленные.

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

Я оставляю вам некоторые ссылки, которые могут вас заинтересовать:

Надеюсь, я был полезным и извините за своиплохой английский.

3 голосов
/ 27 сентября 2011

С вашими датчиками, не учитывая вычислительную мощность на данный момент, я знаю только один метод оценки положения / смещения.Это может включать либо просто оптический поток с бортовой камеры, либо выше, с дополнительной информацией из объединенных данных от акселей / гироскопов (например, с фильтром Калмана) для повышения точности.Я предполагаю, что OpenCV имеет все, что вам нужно (включая поддержку Android), поэтому я бы начал с него.

Начнем с реализации оценки отношения с использованием только акселей и гироскопов.Это будет дрейфовать по оси рыскания (то есть по оси, перпендикулярной земле или, скорее, параллельной вектору гравитации).Это можно сделать с помощью фильтра Калмана или других алгоритмов.Это не будет хорошо для оценки местоположения, так как расчетная позиция уйдет на десятые доли метра всего за пару секунд.

Затем попробуйте реализовать оптический поток с вашей камерой, что вычислительно дорого.На самом деле это одно может быть решением, но с меньшей точностью, чем при использовании дополнительных данных из IMU.

Удачи.

EDIT : я недавно обнаружил это - это может быть полезно для вас.Если не будет много шума (из-за вибрации), это сработает (я работаю на БПЛА с четырьмя роторами, и, к сожалению, он не работает для меня).

...