Pull to refresh
0

Бесконтактное управление: взгляд изнутри

Reading time5 min
Views14K
В предыдущем хабрапосте мы познакомились с проектом INCOS от белорусских разработчиков. В этом посте мы заглянем внутрь пластиковой коробочки и познакомимся с этапами прототипирования и используемыми алгоритмами распознавания жестов.





Итак, передаю слово разработчикам:
Несколько лет назад нашей команде INCOS пришла идея попробовать реализовать проект в области бесконтактного управления.
Вначале речь не шла о конкретном устройстве, но постепенно захотелось сделать что-то большее, и, в конечном итоге, вылилось в создание системы INCOS. Существующие сегодня устройства, с помощью которых можно управлять объектами на экране непосредственно телодвижениями, зачастую не являются универсальными, т.е. не могут быть напрямую подключены к любому устройству, скажем через usb-порт. Фактически эта предпосылка и послужила для нас творческим толчком. В отличие от других устройств, наша система может быть подключена, например, к телевизору с поддержкой Smart TV.

При этом INCOS будет определен как hid-устройство. Фактически вы можете подключить систему не только к компьютеру и телевизору, но и к любому другому устройству, которое имеет порт usb, Wi-Fi, Ethernet, Bluetooth и способно воспринимать INCOS как мышь и клавиатуру. Еще одним преимуществом INCOS является то, что система не ограничена набором программ, в которых она может быть использована. Например, вы можете применять ее для управления в любых играх, в том числе и выпущенных до 2000 года (я не геймер, но иногда люблю поиграть в Старкрафт). В настоящий момент прорабатывается вариант INCOS для подключения к нескольким устройствам одновременно.
Для этой цели предполагается использовать программно управляемый usb-switch. Таким образом, каждое устройство будет доступно в разные моменты времени. В INCOS предусматривается функция «умный пульт», которая предполагает переключение каналов без использования пульта телевизора. Для различных кнопок пульта можно назначить жестовые и голосовые команды (предварительно обучив систему INCOS с помощью пульта телевизора и встроенного инфракрасного приемника набору клавиш пульта). Различного рода системы бесконтактного управления, например kinect обычно базируются на, так называемых tof-камерах, т.е. используют для построения так называемой карты глубины инфракрасное излучение. Однако проанализировав различные виды tof-камер, и их ценовой диапазон (а стоимость наиболее подходящих для нас экземпляров исчислялась сотнями и тысячами евро) пришли к более простому, дешевому и сердитому решению: стереопаре.
Да, конечно оно имеет свои недостатки. Например, устройство на основе стереопары лучше работает на свету, чем в темноте (устройства, строящие инфракрасную сетку, как правило, наоборот). Однако при правильном подходе многих проблем можно избежать (в частности, упомянутая выше была решена с помощью дополнительной инфракрасной подсветки камер).



Ранее в качестве базы для устройства рассматривалась плата Raspberry. Однако, по причинам быстродействия было решено выбрать иную платформу (однако возможность подключения к Raspberry пока остается)



В настоящее время ядром системы является мини-PC Сubieboard (на базе процессора AllWinner A10), однако также рассматриваются замена процессор на более мощный в связи с выходом новых моделей Сubieboard.



Наш испытательный стенд с дополнительной инфракрасной подсветкой
Разрешение картинки в настоящий момент составляет 320x240 пикселей и 640x480 (это связано с частотой работы камер и соответственно скоростью обработки), количество fps – 60 и более, однако ведутся работы по увеличению данного разрешения. Максимальное расстояние на котором работает устройство 3,5- 4 метра, минимальное – 20-30 см, однако вы можете его регулировать. Угол обзора камер (с использованием специальных широкоугольных объективов) около 800.
Для реализации программной составляющей INCOS было решено использовать библиотеку OpenCV, а для скелетизации полученных контуров – CGAL. Обе эти библиотеки распространяются по Open Source лицензии. Два изображения, получаемые с камер, обрабатываются при помощи алгоритма, использующего скользящие суммы абсолютных различий между пикселями в левом и правом изображениях (алгоритм Kurt Konolige). Таким образом, строится карта глубины. Затем происходит устранение шумов на полученном изображении с помощью специально разработанных программных фильтров.



Изображение с левой камеры, с правой и карта глубины на испытательном стенде.
Для выделения областей, которые находятся на нужном расстоянии от камеры (а тело человека расположено ближе к камере чем элементы фона) на данном этапе разработки используется пороговое преобразование. Для выделения краев и распознавания контуров тела человека используется контурный анализ на основе моментов. Затем производится построение скелета модели при помощи методов библиотеки CGAL. Основной целью создания данного устройства являлась не только и не столько управление руками, а скорее всем телом, поэтому в скелете руки фактически учитываются только большой палец и остальные пальцы как единая совокупность. Далее происходит анализ геометрических характеристик ветвей и разделение их на классы: ветвей содержащих характеристические точки и не содержащих с помощью соответствующих классификаторов и методов машинного обучения (в частности метода опорных векторов). После определения характеристических точек осуществляется их трекинг. Для распознавания жестов анализируется последовательность кадров и выполняется распознавание жестов в настоящее время с помощью метода ближайшего соседа



На изображении можно увидеть подсвеченную инфракрасной подсветкой руку, бинаризированое изображение (сверху), и контур руки (отображение скелета и характеристических точек отключено)



Отображение скелета и характеристических точек включено



Распознавание контура верхней части тела



На рисунке рука расположена ближе чем тело
Как известно, на сегодняшний момент не существует системы распознавания голоса, которая на 100% выполняла бы данную задачу. Наша система, конечно же в этом отношении не является уникальной. Следует подчеркнуть, что система преимущественно воспринимает раздельную речь, а точнее голосовые команды. В данном случае можно «привязать» к действию команду на любом языке, так как для устройства не имеет значения смысловая и фонетическая нагрузка слова. Для реализации механизма голосового управления мы рассматривали библиотеку CMUSphinx, а также некоторые свои разработки в области нейронных сетей. сейчас также рассматриваем библиотеку Julius. В настоящий момент в системе использована нейронная сеть Кохонена. При предварительной обработке применяется сглаживание Хэминга и дискретное преобразование Фурье, а также логарифмическое сжатие спектра.
Ведется разработка взаимодействия системы INCOS и системы «Умный дом». На данном этапе в INCOS предусмотрен разъем для подключения Ethernet-кабеля, т.к. эти устройства управляются по локальной сети, что позволяет через web-интерфейс настраивать систему.


Мы видим, что на данной стадии уже есть функционирующий прототип, который позволяет проверить алгоритмы бесконтактного управления. К сожалению, материалам представленным выше еще далеко до того, что нам обещают в проекте на Бумстартере. Но ребята работают над проектом, используют новые комплектующие и упорно двигаются к намеченной цели. Я надеюсь, что наша совместная поддержка на Бумстартере даст жизнь такому интересному и перспективному проекту как INCOS.
Tags:
Hubs:
+17
Comments10

Articles

Change theme settings

Information

Website
incos.pro
Registered
Founded
Employees
2–10 employees
Location
Беларусь