Распознавание простых 2D жестов - swipe и tap TOF-сенсорами типа VL53L0X и VL53L1X

Gomez
Offline
Зарегистрирован: 09.09.2017

В общем, хочется сделать распознавание swipe и tap вышеуказанными сенсорами.
К сожалению, готовых библиотек нет, разве что https://github.com/stm32duino/VL53L0X ,но она под STM32, а не Ардуино.

Теоретически принцип понятен - swipe - это резкое появление перед сенсором объекта, где-то на расстоянии 15-30 см, и резкое его исчезновение. Tap - резкое появление где-то на том же расстоянии, и достаточно быстрое приближение.

Но это же надо как-то мониторить расстояние в "дежурном режиме", а потом включать максимальную частоту работы сенсора, если обнаружен предмет на этом расстоянии... Или постоянно сканировать с большим разрешением, иначе "вызывающего жеста рукой" не поймаешь? :)

rkit
Offline
Зарегистрирован: 23.11.2016

-

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

Gomez пишет:

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

Так именно отсутствие готовых библиотек обычно является основным стимулом для того, чтобы сделать

Хотя, в принципе, и наличие библиотек не является противопоказанием к тому, чтобы сделать, ибо библиотеки редко обеспечивают полную функциональность, да и написаны зачастую далеко не оптимально, не говоря уже о том, что нередко содержат ошибки.

Logik
Offline
Зарегистрирован: 05.08.2014

Вполне выполнимая задача. Делится на две части: получение дальности с датчика и обработка дальности для выявления жестов.

Первая подзадача действительно типичная библиотечная. Библиотеки есть, хороших вот правда нет. Ищите тему по этому датчику, там расписано. Наиболее адекватная Adafruit_VL53L0X - но очень громоздкая. Почти все с гита - полный шлак, без калибровки просто.  Себе либу пишу, там все очень не тривиально при инициализации - калибровка в виде итерационного процесса расчета параметров до получения требуемой точности или пока она не начинает ухудшатся. В случае ухудшения - откат до наилучшего набора  параметров. Это все мало кто из авторов либ осилил. В Adafruit_VL53L0X есть. Может осенью допишу. 

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

Жестов и больше можно - двойной свап, тап в другую сторону, тап туды-сюды...

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня один вопрос - зачем? Proximity & gesture sensor стоит не сильно дороже дальномера.

Logik
Offline
Зарегистрирован: 05.08.2014

тап может?

Gomez
Offline
Зарегистрирован: 09.09.2017

Logik, понятно, спасибо. В Adafruit-овской библиотеке пугала громоздкость, но буду пробовать с ней, раз она самая проработанная. :) Попробую экспериментировать с ней. Как я понимаю, она не использует GPIO1 для "экономии времени", но, видимо, это уже излишество.

sadman41, да хотелось и приближение пользователя засекать где-то хотя бы с полметра и включать экран.
Самые "дальнобойные"  proximity & gesture - это вроде apds-9960 (он тоже есть), сантиметров 20 в режиме измерения расстояния, остальные еще меньше. А ставить и то, и то как-то не хочется вроде.