Компания Microsoft анонсировала проект Kinect 1 июня 2009 года под кодовым названием Project Natal. 13 июня 2010 года название было изменено на Kinect. Название происходит от слов «kinetic» (кинетический) и «connect» (подключать, присоединять) и выражает идеи, заложенные в устройстве. Девиз при запуске маркетинговой кампании был очень правильным: «Вы — контроллер».
Kinect был первым коммерческим сенсором, позволяющим пользователю взаимодействовать с игровой приставкой (изначально Microsoft разрабатывала устройство для своей игровой приставки Xbox 360) через естественный пользовательский интерфейс, используя жесты и голосовые команды, а не игровой контроллер.
Старт продаж вызвал всемирное безумие, и хакеры вскоре нашли лазейку в это удивительное устройство. В отличие от других игровых контроллеров, соединение Kinect было портом USB, так что потенциально сенсор мог быть подключен к ПК. К сожалению, Microsoft первоначально не выпустила никаких драйверов для устройства и лишь в феврале 2012 года появилась специальная версия для ОС Windows.
Сразу после того, как в ноябре 2010 года Kinect был выпущен, Adafruit Industries предложила награду в 1000$ любому, кто создаст «драйвера с открытым исходным кодом для этого классного USB-устройства. Драйвера и/или приложение могут работать под управлением любой операционной системы, но должны быть полностью документированы и иметь исходники с открытой лицензией». После негативных комментариев со стороны Microsoft, Adafruit щедро добавил еще 2000$, чтобы подстегнуть интерес со стороны разработчиков.
Обладателем вознаграждения в 3000$ стал Гектор Мартин, который разработал драйвера под Linux, позволявшие использовать RGB камеру и глубину изображения, используя Kinect.
Но хакеры Kinect'а не были единственными, кто реализовывал невероятные возможности, которые открывала новая технология. Компании, участвовшие в разработке сенсора вскоре поняли, что Kinect для Xbox 360 был только первым шажком к новой технологической революции — и они не были намерены отставать.
В 2010 году компания PrimeSense, занимающаяся в проекте 3D визуализацией, выпустила собственные драйвера и фреймворк для Kinect под названием OpenNI. Вскоре после этого, она объявила о партнерстве с ASUS в производстве нового Kinect-подобного устройства Xtion.
В 2011 году Microsoft выпустила некоммерческий комплект разработчика ПО под названием Kinect SDK. В феврале 2012 года свет увидела коммерческая версия, сопровождающая сенсор Kinect в версии для Windows.
В ноябре 2013 года Apple приобрела израильскую компанию PrimeSense.
Устройство Kinect
Kinect оснащен RGB-камерой, дальномером, состоящим из инфракрасного лазерного проектора и инфракрасного CMOS-датчика и специализированного микрофона, обеспечивающего локализацию источника звука и подавление окружающего шума. Kinect также содержит светодиод, трехосный акселерометр, и небольшой сервопривод для управления наклоном устройства.
Инфракрасный CMOS-датчик (complementary metal-oxide semiconductor, комплементарная структура металл-оксид-полупроводник) представляет собой интегральную схему, содержащую матрицу фотодетекторов, действующую как инфракрасный датчик изображения. Это устройство также в разных литературных источниках называют ИК-камерой, ИК-датчиком, CMOS глубины изображения, или CMOS-датчиком.
RGB-камера представляет из себя VGA-камеру (640 х 480 пикселей) с 8-битным разрешением. Это звучит не впечатляюще, но дело в том, что волшебство происходит в датчике удаленности, который полностью независим от RGB-камеры.
Два элемента датчика удаленности, ИК-проектор и ИК-камера, расположены на передней панели Kinect. Они работают совместно, используя чип от PrimeSense для воссоздания 3D-захвата движения. Для этого используется метод, называемый 3D-сканирование со структурированным светом. ИК-камера также имеет разрешение VGA (640 х 480 пикселей) с глубиной цвета 11-бит, обеспечивая 2048 уровней чувствительности.
Практический диапазон работы Kinect составляет от 1,2 м до 3,5 м. Если объекты находятся слишком близко к датчику, они не будут отсканированы и будут просто появляться в виде черных пятен. Если же они находятся слишком далеко, то точность сканирования будет слишком низкой, что делает их выглядящими как плоские предметы. Для версии Kinect под ОС Windows, диапазон камеры составляет от 40 см до 3 м.
Различия между версиями сенсора Kinect
Kinect можно приобрести тремя различными способами:
- Kinect для Windows - отдельное устройство, поставляемое с драйверами под ОС Windows (стоимость порядка 11 тыс рублей)
- Kinect для Xbox 360 в виде отдельного перифирийного устройства для использования с Xbox 360 (цена гораздо ниже первого варианта, около 5 тыс. рублей)
- Kinect для Xbox 360 в комплекте с Xbox 360 (цены на комплект начинаются примерно с 9 тыс.рублей). Для игроманов — это лучший вариант покупки.
В настоящий момент в продаже начинают появляться приставки в комплекте которых идет уже вторая версия сенсора — Kinect 2. Он обладает бóльшим разрешением, и, конечно это более продвинутое устройство. Но в виде отдельного устройства в продаже его пока нет, а цена новых приставок со вторым Kinect это уже минимум 20 тыс. рублей. К тому же, я планирую использовать этот сенсор совместно с ROS, а на уровне драйверов в ней поддерживатеся пока только первая версия сенсора. Так что для разработчиков — первый Kinect для Xbox 360 является оптимальным выбором на сегодняшний день.
Есть один очень важный момент, который необходимо учитывать при приобретении устройства.
Если вы покупаете Kinect в версии для Windows, или Kinect для Xbox 360 в качестве автономного периферийного устройства, то в этом случае у вас будет все необходимое для подключения к компьютеру.
Но, возможно, у вас уже имеется Kinect, который вы используете с игровой консолью Xbox 360 или же вы планируете купить его вместе с приставкой, то в этом случае, вам потребуется отдельно специальный адаптер с блоком питания, который достаточно проблематично найти.
В последних версиях Xbox 360, консоль использует специальный USB-порт, обеспечивающий достаточный ток для питания сенсора и для таких приставок не требуется дополнительный блок питания. Плюс ко всему, USB-разъем сенсора отличается от стандартного USB. Проблемы дополнительного питания и совместимости со стандартным раъемом USB как раз и решаются использованием специального адаптера.
Модель Kinect
Чтобы выяснить какая именно модель сенсора Kinect находится у вас в руках, вам необходимо взглянуть на основание подставки. У меня модель 1414.
Возможности Kinect
Так что же мы можем получить от Kinect'а и всех этих высокотехнологичных вещей, скрытых внутри него? После того, как Kinect правильно установлен и подключен к компьютеру, мы можем получить доступ к потоку сырых данных и других возможностей, предоставляемых конкретным промежуточным ПО. Мы можем воспользоваться драйверами OpenNI и NITE в качестве промежуточного ПО, а также использовать этот сенсор совместно с ROS.
RGB-изображение
Мы можем использовать Kinect в качестве веб-камеры с разрешением 640×480 пикселей. Получить доступ к RGB-изображению можно при помощи библиотеки OpenNI.
ИК-изображение
Kinect имеет инфракрасный CMOS, и мы опять же можем получить доступ к инфракрасному CMOS-изображению с разрешением 640×480 точек, воспользовавшись OpenNI.
Карта глубины
Карта глубины является результатом операций, выполняемых чипом PS1080 компании PrimeSense над ИК-изображением, полученным Kinect с ИК-CMOS. Это VGA-изображение имеет 11-битное разрешение. Это 2048 различных значений, представленных графически уровней серого цвета от белого (2048) до черного (0).
Есть одна деталь, которую нужно учитывать: измереное датчиком глубины сцены имеет логарифмический масштаб, а не линейный.
Отслеживание рук и скелета
После того, как карта глубины сформирована, мы можем использовать ее непосредственно в своих приложениях или запустить его через промежуточное ПО для извлечения более сложной информации из сырой карты глубины.
Можно воспользоваться NITE, в качестве промежуточного ПО, чтобы добавить отслеживание рук/скелета и распознавание жестов в свои приложения.
[add_ratings]