Юбилей Kinect-а



Прошёл один год с момента появления в продаже сенсора Microsoft Kinect. Более 10 миллионов проданных устройств, меняют не только мир цифровых развлечений, но и мир любительской робототехники.

В США Microsoft Kinect был выпущен 4 ноября 2010 года и уже 10 ноября 2010 года протокол сенсора был взломан.

Kinect — это интерактивный игровой контроллер для игровой системы Microsoft Xbox.
Сердцем сенсора Kinect, является 3D-технология от PrimeSense, которая использует структурированный свет, инфракрасные камеры и специализированный процессор для измерения расстояния от камеры до сцены.

Эти измерения производятся по всему полю зрения сенсора Kinect.
В результате, получается облако точек, состоящее из 307200 измерений расстояния между сенсором и сценой.

Структурированный свет — это свет, который проецируется в неповторимый узор.

Для этого, Kinect использует инфракрасный (ИК) лазер и специальный объектив (на фото внизу — справа), чтобы проецировать уникальный точечный рисунок.
Точки проецируется на заданных углах от лазера. Лазерные точки отражаются от объектов сцены и фиксируются ИК-камерой (в центре изображение ниже). Объекты сцены, расположенные близко к камере отражаются в точки изображения, которые находятся близко друг к другу, а объекты, расположенные далеко от камеры — отражаются в точки изображения, которые находятся дальше друг от друга.


Данные от 3D-камеры называются облаком точек.

Облако точек представляет собой структуру данных, используемых для представления набора многомерной точки и, обычно, используется для представления трехмерных данных. В 3D, облако точек, как правило, представляют точки X, Y, Z и геометрические координаты основной поверхности. Когда доступна информация о цвете (см. рисунок ниже), облако точек становится 4D.

Назначив цвет для оси Z, облака точек могут быть использованы для создания изображения карты глубины. На изображении ниже, белым показаны области, находящиеся ближе, а синим — далеко от сенсора.
Аппаратно, Kinect имеет практическую дальность от 0.5 до 3 метров.
Облако точек имеет разрешение по X, Y — 640х480, а глубина кодируется 11-ю битами (от 0 до 2047). На практике, (при использовании драйвера libfreenect) диапазон глубины составляет от 350 до 1045, представляющих от 0.5 до 3 метров.
Диапазон данных не является линейным, и для объектов, находящихся слишком близко или слишком далеко (или в «тени») — сенсор возвращает значение 2047 (показаны черным ниже).

Libfreenect

В день выпуска Kinect-а(4 ноября 2010 года) Adafruit объявили конкурс «Hack Kinect» с призом $3000.

И всего шесть дней спустя, Hector Martin, стал первым взломавшим протокол сенсора.

Гектор создал проект с открытым исходным кодом libfreenect, являющегося частью открытого проекта Openkinect.

OpenKinect это открытое сообщество людей, заинтересованных в использовании удивительных аппаратных возможностей сенсора Kinect совместно с компьютерами и другими устройствами. Сообщество разрабатывает свободные, открытые библиотеки, которые позволят использовать Kinect под Windows, Linux и Mac.
Сообщество OpenKinect состоит из более чем 2000 членов.
В настоящее время, основное внимание обращено на программное обеспечение libfreenect.
Код проекта OpenKinect, распространяется на условиях лицензий Apache20 или GPL2.

Libfreenect можно загрузить на гитхабе: https://github.com/OpenKinect/libfreenect

Библиотека была портирована на Windows, Linux, Mac OS X.
Она поддерживает: C++, Python, C# и Java.
В своё время, Willow Garage создала порт библиотеки Libfreenect для ROS ( https://github.com/ros-pkg-git/kinect ). Позже, этот код был включен в архив библиотеки Libfreenect.

Microsoft Kinect SDK

Первоначально, Microsoft протестовала против использования Kinect на ПК, и даже угрожала судебными исками. Но после того, как стало очевидным, что протокол открыт, они решили поддержать его, выпустив собственный SDK.

21 февраля 2011 Microsoft объявила, что релиз некоммерческого Kinect Software Development Kit (SDK) для Windows, состоится весной 2011 года. Kinect for Windows SDK beta был выпущен 16 июня 2011 года.
Выпуск коммерческой версии SDK запланирована на более поздний срок.

Kinect for Windows SDK включает в себя драйвера для Kinect (Windows 7). SDK предоставляет разработчикам возможности создавать приложения для Kinect на C++ ,C# и Visual Basic, с помощью Microsoft Visual Studio 2010.
Досупны следующие возможности:
1. сырые потоки данных датчиков: доступ к низкоуровневым потокам от датчика глубины, цветной камеры, четырёх микрофонв.
2. отслеживание скелета: возможность отслеживать скелет изображения одного или двух людей, двигающихся в поле зрения Kinect-а для жест-приложений.
3. расширенные возможности аудио: возможности аудио-обработки включают подавление сложного акустического шума и эха, формирования пучка для выявления источника звука, а также интеграция с Windows speech recognition API.
4. Образцы кода и документацию.

Microsoft Kinect SDK ( http://kinectforwindows.org ) включает в себя поддержку отслеживания скелетов, которое использует данные облака точек от сенсора Kinect, для построения математической модели человеческого тела. Модель обновляется в режиме реального времени. Т.о. эта технология делает возможным распознавания жестов, а также отслеживания всего тела.

Официальный драйвер Primesense, OpenNI и NITE
PrimeSense — создатель Kinect, сразу поняли, что Kinect имеет больший потенциал, чем просто игры. Консорциум OpenNI был создан для привлечения использования технологии Kinect в других устройствах и сферах за пределами игр.

ТЕЛЬ-АВИВ — 21 декабря 2010 г. — PrimeSense ( http://www.primesense.com ), лидер в области решений сенсорики и распознавания, объявляет о запуске своего консорциума OpenNI (открытое естественное взаимодействие) — некоммерческой организации, созданной для ускорения внедрения приложений естественного взаимодействия на рынке ( http://www.openni.org ).
……….
PrimeSense представили первое приложение в рамках OpenNI — OpenNI фреймворк под открытой лицензией(royalty free license). PrimeSense NITE промежуточные модули, предназначенные для работы с OpenNI-совместимыми устройствами, такими как PrimeSense development kit, которые будут доступны для покупки через веб-сайт в PrimeSense.

В рамках инициативы OpenNI, PrimeSense выпустила официальный открытый драйвер для Kinect ( https://github.com/PrimeSense/Sensor#readme ). Как оказалось, официальные драйвера PrimeSense были для платформы PrimeSense referense (младший брат Kinect). К счастью, хакерское сообщество пришли на помощь и выпустили драйвер, поддерживающий Kinect.

Avin2 — официально/не-официальный драйвер для Kinect ( https://github.com/avin2/SensorKinect ) — является наиболее актуальным открытым драйвером для Kinect. Avin2 отстает от PrimeSense примерно на шесть месяцев. Оба проекта PrimeSense и Avin2 драйверов предназначены для OpenNI.
Так же, можно найти примеры того, как использовать API OpenNI в проекте OpenCV.

Алгоритмы компьютерного зрения, PrimeSense NITE идентифицирует пользователей и отслеживает их движения, а также обеспечивает API для реализации естественного взаимодействие элементов управления пользовательского интерфейса на основе жестов.
http://www.primesense.com/technology/nite3

NITE не является проектом с открытым исходным кодом. Он является лицензированной частью программного обеспечения, которое PrimeSense позволяет использовать сообществу под свободной лицензией. Лицензия NITE связана с использованием чипа PrimeSense. Использование NITE с любым другим 3D-сенсором приводит к разрыву лицензионного соглашения.

NITE можно загрузить с веб-сайта OpenNI:
http://www.openni.org/Downloads/OpenNIModules.aspx

Резюме

Microsoft Xbox Kinect создал совершенно новую волну интереса в области компьютерного зрения.
Идея, что компьютер может взаимодействовать с пользователем с помощью естественных жестов поражает и приближает нас к будущему. Подобно тому, как Wii представила общественности 3х-осевой акселерометр, который затем нашел свой путь во всё большее количество устройств, включая наши сотовые телефоны. Kinect обладает огромным потенциалом для внедрения компьютерного зрения в самых разных проектах.

далее: Kinect — начало работы — настройка OpenCV

Ссылки
http://en.wikipedia.org/wiki/Kinect
Point Cloud Library (PCL)
http://openkinect.org
http://www.openni.org

По теме
Внутренности Kinect
The $150 robot revolution — как игровой сенсор Kinect изменяет мир передовой робототехники

Роботы на базе Kinect:
Bilibot
TurtleBot
POLYRO

вольный перевод статьи:
One Year Anniversary For the Kinect, Over 10 Million Units Shipped, A Game Changer in the World of Entertainment


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение