Можно ли использовать движение ядра для измерения расстояния

Возможный дубликат:
Получение смещения из данные акселерометра с Core Motion
Точность акселерометра Android (инерциальная навигация)

Хоть это и не подходит к StackOverflow, потому что это не вопрос, а дискуссия, попробую обобщить свои мысли по этому поводу.


person Sonu Jha    schedule 20.12.2012    source источник
comment
@SonuJha Вышеупомянутый вопрос касается Android, но то же самое относится и к основному движению ios. Короче нет, двойной интеграл делать нельзя, эти датчики недостаточно точны.   -  person foundry    schedule 20.12.2012
comment
Вот еще один: Необходимо найти расстояние с помощью гироскопа + акселерометр. В итоге это невозможно из-за ужасных ошибок.   -  person Ali    schedule 20.12.2012
comment
Спасибо, что он ответил! У меня есть три массива в стиле C XA[10000], Ya[10000] и ZA[10000], в которых я храню значения ускорения при каждом обновлении движения (deviceMotionUpdateInterval установлен на 0,01). Когда устройство находится в состоянии покоя, усредняются около 1000 значений по соответствующим осям, чтобы получить три смещения. Следующие три массива XA_F YA_F и ZA_F заполняются значениями из фильтра, предварительно умножив их на 981 (т.к. я меряю в см).   -  person Kay    schedule 20.12.2012
comment
@Kay, я могу только призвать вас написать сообщение в блоге по этому повторяющемуся вопросу. Удивительно, сколько раз это всплывает.   -  person Sonu Jha    schedule 20.12.2012
comment
Да, я согласен не напрямую, просто интегрируя акселервалы. Но как насчет использования ускорений для интерполяции функции, полинома высокого порядка. Потребуются обширные эксперименты, но мне просто интересно, сможет ли такая техника компенсировать такие огромные ошибки выборки, чтобы получить достоверные результаты. Мой вопрос об этом. Или моделирование на основе коэффициентов или что-то в этом роде?   -  person Ali    schedule 20.12.2012
comment
@Ali Да :) В данный момент я слишком занят завершением игры. Но когда он будет запущен, я сделаю это и опубликую некоторые новые инсайты и частные случаи обнаружения движения, которые я использовал в игре.   -  person Sonu Jha    schedule 20.12.2012
comment
@Kay С нетерпением жду этого, пожалуйста, дайте мне знать!   -  person Kay    schedule 20.12.2012
comment
Привет, ребята, у вас есть новости по этой теме? как сейчас обстоят дела в 2017 году? любая информация будет полезна (@Kay, Sonu)   -  person Ali    schedule 20.12.2012
comment
Я пытаюсь использовать значения ускорения пользователя основного движения и дважды интегрировать их для получения пройденного расстояния. Я перемещаю свой iPhone линейно по оси Y относительно 30-сантиметровой логарифмической линейки на столе. Во-первых, я позволяю устройству находиться в состоянии покоя в течение 10 секунд и вычисляю свои смещения по трем осям, усредняя соответствующие значения ускорения пользователя. Смещения X, Y и Z вычитаются из значений ускорения, когда я пытаюсь рассчитать пройденное расстояние. После вычитания смещения эти значения проходят через фильтр нижних частот и медианный фильтр, разумеется, по отдельности. Фильтры являются линейными фильтрами, а частота среза определяется количеством соседних значений, среднее значение которых берется для фильтра нижних частот, а медиана — для медианного фильтра. Я экспериментировал с различными значениями этого числа от 1 до 100. В конце концов, эти отфильтрованные значения дважды интегрируются с использованием правила трапеций для получения расстояний. Но расчетное расстояние далеко не близко к 30 см. Ближайшее значение, которое я получил, было около -22 см (мне интересно, почему я получаю отрицательные значения, хотя я перемещаю устройство в положительном направлении Y). Я также наткнулся на это: http://ajnaware.wordpress.com/2008/09/05/accelerating-iphones/ это старый пост о том же самом, в котором говорится, что возвращенные показания акселерометра, по-видимому, приходят квантами около 0,18 м/с^2 (т.е. около 0,018g), что приводит к большой кумулятивной ошибке очень быстро. При этом, чтобы эта ошибка действительно не имела значения, необходимо разогнать устройство почти на 1,8 м/с^2, что практически невозможно для целей измерения расстояния/длины. для небольших движений не похоже, что есть возможность расчета расстояний с использованием оптимального фильтра и метода численного интегрирования более высокого порядка без такого непрактичного ограничения скорости/ускорения. Является ли это возможным? Как насчет того, чтобы использовать мои данные об ускорении и отметке времени для интерполяции полинома, который растет со временем по мере того, как я получаю все больше и больше обновлений движения, что примерно представляет собой кривую зависимости ускорения от времени. Двойное интегрирование этого полинома было бы проще простого. Но для малых расстояний полином будет иметь большую погрешность. Используя предсказуемое известное движение, которому будет подвергаться мое устройство, я хочу сделать огромное количество снимков (расчетное расстояние по сравнению с фактически известным расстоянием), чтобы аналогичным образом вычислить мой полином ошибки, а затем вычесть его из моего первого полинома. Может ли это работать?   -  person oluckyman    schedule 01.02.2017


Ответы (1)


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

Я предполагаю, что вы можете избавиться от огромной части случайности/ошибки, откалибровав устройство и сделав «движение измерения» пару раз, например, 10 раз. После этого у вас будет достаточно данных, чтобы получить среднее значение, которое может быть близко к реальному значению.

Калибровка является ключевой частью здесь, вы должны придумать умный способ калибровки, например, позволить пользователю перемещать устройство на разные расстояния с разной скоростью.

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

Это хороший вопрос, но было бы здорово увидеть ваш сопровождающий код...

person jimpic    schedule 20.12.2012