Синхронизация данных с разных датчиков

#synchronization #dataset #embedded #data-mining

#синхронизация #набор данных #встроенный #интеллектуальный анализ данных

Вопрос:

Итак, у нас есть система, которая обнаруживает активность человека, на нем установлено несколько датчиков (акселерометр и т.д.), И каждый датчик обучается индивидуально с помощью алгоритма машинного обучения. Таким образом, датчик может отправить: «Я думаю, что на 80% человек стоит», например. На данный момент мы сделали это с синхронизированным набором данных, но в реальной жизни датчики асинхронны и отправляют данные в разное время (часы у каждого датчика разные). Итак, вопрос в том, как мы можем сделать набор данных «синхронизированным» из набора данных с пустыми данными.

Пример (каждые 50 мс подряд):

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

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

Я надеюсь, вы понимаете, что я ищу. Я думаю, нам нужна какая-то математическая функция для заполнения пустых ячеек, например, линейная функция или другая, но мне нужно быть уверенным, и я не нахожу в Интернете отчета об исследовании, который подтверждает это или говорит мне, какую функцию использовать.

Комментарии:

1. «захватчик» — необычный термин в этом контексте. Вы имеете в виду «датчик»?

2. да, именно датчик.

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

Ответ №1:

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

Смысл наличия нескольких датчиков заключается в увеличении объема доступной информации. Заполняя «недостающие значения» из информации, которая у вас уже есть, вы, скорее всего, в конечном итоге потребуете больше вычислений для получения результата, который не имеет дополнительной ценности или близок к ней.

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

1. Ожидание всех датчиков

Простым решением было бы просто дождаться, пока все (или часть) датчиков отправят значение, прежде чем запускать обработку для объединения. Это обеспечивает однозначные результаты, но «низкую» частоту кадров

2. Фильтр Калмана

Если вы хотите углубиться, чтобы получить эти значения, получить более высокую частоту обновления и не возражаете потратить некоторую вычислительную мощность, вы можете использовать некоторый фильтр прогнозирования, например фильтр Калмана, для каждого датчика, чтобы оценить его значение на основе его предыдущей эволюции в момент времени dt, когда вы еще не получили значение от реального датчика. Это работает, только если длительность, за которую вы оцениваете, очень мала по сравнению с изменением их значений. Это также позволяет вам превысить скорость самого быстрого датчика. Вот понятное для начинающих объяснение фильтра Калмана.

Комментарии:

1. Большое спасибо, мы проведем поиск по этому фильтру Калмана, на первый взгляд это может быть так.