Распознавание простых 2D жестов - swipe и tap TOF-сенсорами типа VL53L0X и VL53L1X
- Войдите на сайт для отправки комментариев
Пнд, 17/08/2020 - 21:12
В общем, хочется сделать распознавание swipe и tap вышеуказанными сенсорами.
К сожалению, готовых библиотек нет, разве что https://github.com/stm32duino/VL53L0X ,но она под STM32, а не Ардуино.
Теоретически принцип понятен - swipe - это резкое появление перед сенсором объекта, где-то на расстоянии 15-30 см, и резкое его исчезновение. Tap - резкое появление где-то на том же расстоянии, и достаточно быстрое приближение.
Но это же надо как-то мониторить расстояние в "дежурном режиме", а потом включать максимальную частоту работы сенсора, если обнаружен предмет на этом расстоянии... Или постоянно сканировать с большим разрешением, иначе "вызывающего жеста рукой" не поймаешь? :)
-
В общем, хочется сделать распознавание swipe и tap вышеуказанными сенсорами.
К сожалению, готовых библиотек нет...
Хотя, в принципе, и наличие библиотек не является противопоказанием к тому, чтобы сделать, ибо библиотеки редко обеспечивают полную функциональность, да и написаны зачастую далеко не оптимально, не говоря уже о том, что нередко содержат ошибки.
Вполне выполнимая задача. Делится на две части: получение дальности с датчика и обработка дальности для выявления жестов.
Первая подзадача действительно типичная библиотечная. Библиотеки есть, хороших вот правда нет. Ищите тему по этому датчику, там расписано. Наиболее адекватная Adafruit_VL53L0X - но очень громоздкая. Почти все с гита - полный шлак, без калибровки просто. Себе либу пишу, там все очень не тривиально при инициализации - калибровка в виде итерационного процесса расчета параметров до получения требуемой точности или пока она не начинает ухудшатся. В случае ухудшения - откат до наилучшего набора параметров. Это все мало кто из авторов либ осилил. В Adafruit_VL53L0X есть. Может осенью допишу.
Вторая подзадача - тривиальная обработка аналогового потока, т.е. дальностей, для определения скорости препятствия. Скорость оч. высокая - появление руки, скорость небольшая, но не ниже порога - приближение. Скорости противоположного знака - соответственно исчезновение и удаление. Быстродействие датчика вполне на уровне, проблем не ожидается.
Жестов и больше можно - двойной свап, тап в другую сторону, тап туды-сюды...
У меня один вопрос - зачем? Proximity & gesture sensor стоит не сильно дороже дальномера.
тап может?
Logik, понятно, спасибо. В Adafruit-овской библиотеке пугала громоздкость, но буду пробовать с ней, раз она самая проработанная. :) Попробую экспериментировать с ней. Как я понимаю, она не использует GPIO1 для "экономии времени", но, видимо, это уже излишество.
sadman41, да хотелось и приближение пользователя засекать где-то хотя бы с полметра и включать экран.
Самые "дальнобойные" proximity & gesture - это вроде apds-9960 (он тоже есть), сантиметров 20 в режиме измерения расстояния, остальные еще меньше. А ставить и то, и то как-то не хочется вроде.