Чи можна використовувати FFT для інтерпретації жестів акселерометра?


10

У мене є необхідність виявити два різні жести, які виникають під час перегляду даних акселерометра. Ось пробіг вниз (такий короткий, як я можу зробити це):

Скажімо, iPhone коливається вперед і назад, залишаючись обличчям вгору. Користувач може виконати одне коливання (один раз вперед або назад, жест один) або безперервне коливання протягом будь-якого часу (жест два).

Наразі мій код підтримує список даних акселерометра пристрою (вісь y) з останніх 50 кадрів. Кожен кадр цих даних розміщується через алгоритм FFT (цей http://goo.gl/yi3mn ), а потім я намагаюся інтерпретувати задану частотну область. Я помітив сильну залежність між швидкістю коливань та потужністю середнього та низького діапазону частотного простору.

Проблема полягає в тому, що мені потрібно виявити (в режимі реального часу, коли рух щось оживляє на екрані), щойно закінчене коливання є сингулярним чи тим, яке продовжується в інше коливання у зворотному напрямку. Тут я повинен зазначити, що акселерометри працюють з напірними пластинами. Коли коливання припиняється, вхідні дані показуватимуть протилежне значення від коливання. Це ускладнює бачення явної різниці між одинарним рухом вперед і подвійним вперед, а потім назад (в кінці кожного першого коливання).

Чи може хто-небудь підказати, як я можу використовувати FFT для розшифровки точного значення величини (або чогось іншого корисного), яке я можу використовувати, щоб визначити різницю між описаними вище жестами?

Я записав дані, які використовую, до текстових файлів. Це необроблені дані (значення g-сили) вздовж осі y входу акселерометра.

http://pastebin.ca/2108123 показує дані для двох сингулярних коливань (я тримаю пристрій ще на початку, в кінці та між двома коливаннями).

введіть тут опис зображення

ПРИМІТКА: нові необроблені дані з 20 коливаннями завантажені, але ще не нанесені. http://pastebin.ca/2108387 показує дані для 20 безперервних коливань (я тримаю пристрій ще на початку та в кінці).

введіть тут опис зображення


Я сам не бачив даних, моє перше враження, що це, здається, не є гарним додатком для FFT. Чи є у вас захоплені дані, які ви могли б опублікувати, або в необробленому форматі, або як сюжет?
Джейсон R

Привіт, дякую за відгуки. Чи просто файл, що показує кожне значення в хронологічному відношенні, буде прийнятним із роздільником ','? Я отримую приблизно 60 значень в секунду. Я підозрюю, що це також не може бути хорошим додатком. Можливо, ми можемо обробити це деякими даними.
rykardo

2
Якщо ви публікуєте необроблені дані, ймовірно, хтось може перетворити їх на сюжет і відредагувати вашу публікацію.
Джейсон R

ОК здорово. Незабаром буде завантажено декілька.
rykardo

Це пройшло довше, ніж я очікував. Я запускаю проект з Unity, який може отримувати вхідні дані з пристрою лише зі швидкістю 60 кадрів / секунду. Це означає, що я не можу мати високу частоту вибірки, але все-таки. Це ви мали на увазі під своєю пропозицією?
rykardo

Відповіді:


2

Переглядаючи дані, я не бачу, чому ви хочете використовувати FFT для цієї мети (я, можливо, помиляюся). Скажімо, ви хочете виявити поодинокі чи декілька рухів на основі цього набору даних (який ви додали) методами, які я б переглядав:

  1. Щось на лініях швидкості зміни абсолютних значень. Перший похідний би гарно зробив.
  2. Можливо, перетворення вейвлет? Я не можу детальніше розглянути його корисність, доки я не знаю, хочете ви знати положення вершин чи ні.

Якщо єдине, що ви хочете виявити, це одиночне проти множинних коливань, то, на мою думку, FFT - це не дуже вдалий вибір для аналізу.


Дякуємо за відгук! Друг припустив, що FFT може бути дорогою, до цього я ніколи раніше не використовував. Мені потрібно виявити, чи починається нове коливання в кінці кожного коливання, чи ні. Наведені сюжети повинні викрити, чому це важко. Я думав, що можу використовувати алгоритм величини, але це хитро, оскільки потужність / швидкість коливань будуть різними для користувача.
rykardo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.