Реальный ответ - вам нужно будет изучить DSP, чтобы получить хорошие результаты. Это нетривиальная проблема.
Краткий обзор - когда возникает вибрация, вы увидите синусоидальную форму затухающей волны (затухающий сигнал после основной вибрации называется «звоном» и для нас это плохо - это означает, что нам нужно отделить звон от реальных результатов) ). Это можно обнаружить, и вибрация будет сигнализирована на основе поиска быстрых изменений амплитуды нисходящего вектора (в зависимости от того, какой из них имеет силу тяжести в данный момент). Относительная высота пика волн должна быть относительной силой удара.
Таким образом, обнаружить один стук довольно легко. Вещи, которые непросты:
*Разницу между стуком и шагами по комнате вызывают вибрации. Они будут выглядеть одинаково. Вы можете отфильтровать его с помощью частотного анализа и фильтров.
* Говорить два стука против одного стука за короткий промежуток времени. Второй стук, как правило, слабее, и его будет трудно отличить от звона первого стука. Она также может иметь деструктивную интерференцию с первой волной.
*Точно сказать, когда произошел стук. Будет временная задержка, которая может быть непостоянной, и пытаться ее вычислить означает пытаться найти точный пик. Сложно работать с шумом.
* Рассказывать стук в шумной обстановке (вибрационный шум, а не звук). Опять же, вам понадобится фильтрация.
Я на самом деле сделал это, отчасти. И по большей части неудачно, я думаю. Нам удалось хорошо обнаружить стуки, но совсем не отфильтровать шум. Конечно, мы искали очень маленькие (1 палец) удары, если вы ищете резкие удары, у вас будет меньше проблем, так как шип будет больше по сравнению с уровнем шума. Если вы ожидаете одиночный резкий удар, вам может быть достаточно основ поиска больших всплесков и игнорирования вторичных всплесков в течение N миллисекунд после этого. Если нет, то вы потратите на это много времени.
person
Gabe Sechan
schedule
17.12.2014