2016-01-03 2 views
1

Возможно ли декорировать данные акселерометра в реальном времени? Если да, то как это делается?Как декорировать данные акселерометра

Справочная информация: Мое приложение принимает данные акселерометра (X, Y, Z) в реальном времени (частота дискретизации 6,75 Гц). Датчик движется в периодическом движении, но движение не обязательно вдоль одной оси. Поэтому 3 сигнала x (t), y (t) и z (t) немного коррелированы, и я хотел бы знать, могу ли я найти матрицу вращения (в реальном времени), которая может использоваться для поворота измеренных (x, y, z) в новый вектор (x *, y *, z *), так что все движение движется вдоль оси z?

Я хотел бы реализовать алгоритм в C. Спасибо.

+0

Как бы вы сделали это со статическим набором данных? – chux

+0

@chux не знаю. Вот почему я спрашиваю – user1884325

+0

Итак, периодическое движение линейно, а не круговое? – pat

ответ

3

То, что вы пытаетесь сделать, обычно называется «анализ основных компонентов». Статья Википедии довольно хорошо:

https://en.wikipedia.org/wiki/Principal_component_analysis

Для статических данных, как правило, использует собственные векторы матрицы ковариации в качестве новой координатной основы.

PCA в реальном времени выполнимо, но не супер простой. См., Например: http://www.bio-conferences.org/articles/bioconf/pdf/2011/01/bioconf_skills_00055.pdf

1

Я хотел бы прежде всего подчеркнуть, что Matt Timmermans' answer сделал то, что люди действительно делают, классифицируя данные акселерометра из клинических исследований (проект, над которым я работал).

Затем: вы наблюдаете дискретизированный сигнал. В общем случае, если у вас есть датчик, который дает вам образцы со скоростью 6,75 Гц, самая высокая частота сигнала, который вы можете обнаружить, составляет 6,75 Гц/2 = 3,375 Гц. Все, что имеет частоту выше, будет неотъемлемо сфальсифицировано назад и выглядит так, будто это было что-то с частотой f с 0 < = f < 3.375Hz. Если вы не учли это, , пожалуйста, зайдите и прочитайте на Nyquist–Shannon sampling theorem. Особенно: защитите свои датчики (однако вы делаете это, например, используя демпферы) от всех входных данных выше этого предела, в противном случае ваши измерения могут стоить очень мало или даже ничего. Если ваш датчик делает это внутренне (это абсолютно возможно, достаточно акселерометров с аналоговыми фильтрами нижних частот), об этом позаботились. Однако запишите, какие характеристики вашего датчика.

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

В этом случае, просто делая три дискретных преобразования Фурье сразу, извлекая «самую сильную» спектральную составляющую по всем трем каналам и находя фазу этой спектральной составляющей (которая является лишь сложным аргументом этого БПФ) в два других дадут вам то, что вы можете сопоставить с периодическим движением вокруг определенной оси в трехмерном пространстве. Если вы хотите, удалите это значение (установите бункеры на 0) и снова найдите самый сильный компонент и т. Д.

Дискретные косинусные преобразования могут быть сделаны в ошеломляющей скорости в настоящее время. с 6,75 Гц, ни один ПК в этом мире никогда не столкнется с проблемами, когда вы попробуете это, пока будете получать дополнительные образцы. Это очень низкая частота дискретизации.

Еще один, более элегантный (читайте: вам нужно меньше выборок для вычисления этого) будет использовать параметрическую оценку; в вашем случае датчик направления направления из мира радиочастотной технологии с несколькими антеннами, насколько я могу судить, мог бы непосредственно перейти к обнаружению оси вращения.Классическими алгоритмами здесь являются MUSIC и ESPRIT, а для вашего случая (ограниченное количество известных колебаний) ESPRIT может быть лучшим выбором.

 Смежные вопросы

  • Нет связанных вопросов^_^