Вычисление расстояний с использованием акселерометра
После прочтения многих исследований и документов рядом со многими форумами о том, как измерять расстояние, основанное на данных ускорения
Я нашел метод двойной интеграции, но ошибка, связанная с этим методом, велика и возрастает по времени.
Кроме того, я нашел некоторых людей, которые предложили фильтр Калмана, я прочитал некоторые рекомендации об этом, но мне было непонятно, как его использовать.
также некоторые говорили о датчиках слияния... но после прочтения я не получил никаких новых идей.
поэтому я все еще смущен, и я не нашел правильного ответа, чтобы следовать...
извините за это длинное введение.
Вопрос
Давайте рассмотрим, что я держу в руке 9-осный датчик, и я двигаю рукой в определенном направлении, как я могу найти новое положение моей руки в пространстве? как получить вектор движения от начальной точки до новой точки? Я имею в виду, как знать пройденные расстояния по трем осям?
Если нет прямого ответа... некоторые советы или ссылки были бы замечательными или некоторые алгоритмы, которые дают точные ответы, и я могу изучить и использовать его сам.
большое спасибо
Ответы
Ответ 1
Короткий ответ на ваш вопрос заключается в том, что вы не можете этого сделать.
Метод двойной интеграции - это действительно единственный способ получить информацию, которую вы ищете, используя только акселерометр. Вы обнаружили проблему с этим методом. Ошибка увеличивается с течением времени и, как правило, не дает точности, которую многие ищут.
Калманская фильтрация обычно требует 2 устройства и в основном берет лучшее из обоих устройств и фильтрует плохое. См. Пример ниже.
Калманская фильтрация - очень сложная тема, которую я пытался погрузиться в старшую конструкцию, но никогда не обнаружил каких-либо значимых результатов с моим ограниченным тестированием. Отличное место, чтобы начать понимать эту тему с помощью этой серии видео youtube.
Это тот парень, который выиграл вызов DARPA со Стэнфордом и объяснил эту тему легко понятным образом. Весь курс - это 6-ти серия видеороликов о программировании роботов для перемещения и понимания их местоположения в неизвестной среде. Стоит смотреть, если у вас есть время и интерес.
Похоже, вы пытаетесь сделать что-то похожее на то, что я сделал для старшего дизайна, чтобы дать действительно конкретную информацию о местоположении.
Еще одна отличная фильтрация Калмана прочитайте это (если эта ссылка не работает, установите бот-фильтр для фильтра Google Kalman и нажмите ссылку в блоге TKJ). В основном этот парень использует акселерометр и гироскоп для отслеживания ориентации в реальном мире.
Что-то еще, чтобы заглянуть в wiki В реальном времени кинематика. Это касается тракторов и комбайнов для обеспечения действительно точной информации о местоположении. John Deere продает систему, но ей нравится 20 000 долларов. Вот версия бедного человека, используя GPS и beagleboard
Ответ 2
Дающим 9-осевым датчиком я предполагаю, что это означает:
- 3-осевой гироскоп (измеряет скорость вращения)
- 3-осевой акселерометр (ускорение измерений)
- 3-осевой магнитометр (заголовок меры)
Получение практической оценки положения от этого типа 9-осевого датчика невозможно без использования другого датчика, который использует внешнюю ссылку, такую как GPS.
Теоретически, если вы знаете ускорения объекта в пространстве и его начальное положение и скорость, вы сможете вычислить новое положение объектов, распространив информацию об его ускорении и скорости обратно в исходное положение (т.е. интегрируя ускорение в два раза). Причина, по которой на практике практически невозможна, заключается в том, что акселерометр имеет шум. Этот шум будет иметь ненулевое среднее значение, поэтому при интегрировании сигнала ускорения непрерывно добавляется ненулевой средний шум и накапливается в результирующем сигнале скорости. Это рассматривается как дрейф датчика. Оценка скорости начинается довольно корректно, но быстро уменьшается из-за этого накопленного шума. Интеграция во второй раз, чтобы получить позицию, только ухудшает ситуацию, повторяя процесс.
Используя внешнюю ссылку, такую как GPS, фильтр Калмана может использоваться для объединения медленного обновления сигнала GPS и быстрого обновления сигнала ускорения для обеспечения надежной оценки положения. GPS имеет эффект обнуления дрейфа, который будет накапливаться путем выполнения интеграции по сигналу ускорения.
Я бы предложил посмотреть видео Udacity Youtube, которые предложил Хейми. Изучая фильтр Калмана, он помогает получить четкий общий обзор цели и того, что делает фильтр кальммана. Тогда математика и реальные этапы алгоритма будут намного легче понять. Еще одна вещь, которая полезна при изучении фильтра Калмана, делает это для одной переменной состояния за раз, а не всего вектора состояния. Это просто помогает сосредоточить ваше внимание на том, что фильтр Калмана действительно делает, чтобы вы не увязли в матричной алгебре.
Ответ 3
Без учета вращения:
Предположим, что в момент времени t=t0
вы находитесь в положении [ x0 , y0 , z0 ]
и векторе скорости [ vx0 , vy0 , vz0 ]
.
В t=t1
вы читаете вектор ускорения [ ax1 , ay1 , az1 ]
(среднее ускорение от t0
и t1
).
Тогда вектор скорости в t=t1
будет:
[ vx1 , vy1 , vz1 ] = [ vx0 + ax1 * (t1 - t0) , vy0 + ay1 * (t1 - t0) , vz0 + az1 * (t1 - t0) ]
Средняя скорость между t0
и t1
будет
[ vx01 , vy01 , vz01 ] = [ (vx0 + vx1) / 2 , (vy0 + vy1) / 2 , (vz0 + vz1) / 2 ]
И позиция в t=t1
будет:
[ x1 , y1 , z1 ] = [x0 + vx01 * (t1 - t0), y0 + vy01 * (t1 - t0), y0 + vy01 * (t1 - t0) ]
Как вы можете видеть, ошибка распространяется с помощью t^2
, поэтому поэтому инерционные системы должны быть компенсированы внешней ссылкой, такой как GPS.
Ответ 4
Если есть базовая карта, и вы уверены, что датчик перемещается по известному пути (например, по дороге), вы можете использовать базовую карту для исправления шумных показаний. См. Jun Han, Emmanuel Owusu, Thanh-Le Nguyen, Adrian Perrig и Joy Zhang "ACCOMplice: определение местоположения с использованием акселерометров на смартфонах" в материалах 4-й Международной конференции по системам связи и сетям (COMSNETS 2012), Бангалор, Индия, январь 3-7, 2012.
http://www.netsec.ethz.ch/publications/papers/han_ACComplice_comsnets12.pdf