Можно ли подключить кинект к компьютеру. Kinect: разбираемся с новым девайсом и учимся писать для него приложения. Отслеживание рук и скелета

Про Кинект уже написано немало разнообразных обзоров. Поэтому, мой обзор будет несколько сумбурный. Не стремлюсь описать все потаенные стороны этого девайса. Остановлюсь на практической составляющей и краткой истории.
А экскурс в историю начну я, пожалуй, с обзора игровых приставок.
Существует некая большая троица производителей на рынке игровых консолей.
Nintendo – консоль
Sony – PlayStation 3
Microsoft –

В 2006 году мир сотрясла новость о появлении нового поколения игровых контроллеров, Nintendo опередив время выпустила на рынок . Продажи приставки, благодаря концепции нового контроллера резко пошли вверх. Конкуренты не желая пасти задних, решили не оставаться в стороне и стали готовить свои решения.
В 2010 свой контроллер представила Sony. Контроллер имел более высокую точность распознавания чем свой прямой конкурент. Правда, для нас с Вами этот контроллер не представляет никакого интереса, потому как Sony пожадничала и не оставила возможность подключать Move непосредственно к ПК.
И вот спустя месяц после презентации Sony на сцену триумфально выходит Microsoft со своим революционным контроллером Kinect. Инженеры софтверного гиганта откинули все стереотипы и создали принципиально новый тип контроллера.
Кинект имеет целый ряд преимуществ по сравнению с другими конкурирующими продуктами:

  • не требует дополнительных устройств,
  • оставляет свободными руки,
  • распознает движения всего тела, а не только рук,
  • распознает движения до 5 человек одновременно,
  • распознает голос,
  • не требует зарядки или замены батареек,
  • умеет определять движения и жесты любой сложности.

Фактически, Кинект – это контроллер без контроллера, это устройство способное распознавать обычные движения человека и передавать их компьютеру для обработки.
Итак, не будем вдаваться в подробности работы устройства, остановим свое внимание лишь на том, что контроллер подключается к приставке по средством несколько модифицированного порта USB. Этот факт заметили еще первые пользователи кинекта, поэтому сразу после выхода устройства началась настоящая охота. Сильные миры сего объявили тысячедоллоровые премии хакерам, которые смогут заставить кинект работать на ПК.
Спустя несколько дней были написаны , а через пару месяцев официальные комплекты драйверов презентовали разработчики чипсета и сам Микрософт.
Год спустя, опустив неудачные попытки разработчиков, стоит остановить свое внимание на двух основных комплектах драйверов и наборов для разработчиков под Kinect.
1) PrimeSense OpenNI/NITE Framework от создателей центрального чипа. .
и
2) Microsoft’s Kinect SDK .
PrimeSense первыми создали и открыли свой SDK для ПК программистов.
Поэтому все первые программы для Кинект работают именно под управлением этих драйверов.
Наблюдая за тем как программисты со всего света создают и модернизируют программную среду для работы с контроллером, Микрософт решила пересмотреть свою политику. Они отказались от идеи эксклюзивности Кинекта для консоли XBOX. Контроллеру был дан зеленый свет для выхода на ПК арену.
На данном этапе Микрософт запрещает создавать коммерческое программное обеспечение для своего контроллера. Правда, такая ситуация продлится не долго. Уже 01.02.2012 нам обещан выход финальной версии набора для разработчиков + старт лицензирование коммерческого ПО. Более того, Микрософт всячески способствует разработке ПО для своего контроллера, назначая высокие денежные гранты командам разработчиков. Добавим к этому тот факт что Микрософт обязал всех разработчиков игр выпускать новые игры для XBOX исключительно с поддержкой Кинект. (Ремарка: Подавляющее большинство современных игр вначале разрабатываются под XBOX, а затем портируется на ПК.) Все это позволяет предположить что в ближайшие месяцы мы увидим появление целого комплекса программ, которые будут ориентированы на управление жестами рук и голосом.
Правда, самые нетерпеливые, могут оценить преимущества кинект уже сейчас.
Существует ряд толковых программ, воспользоваться которыми можно и сегодня:
Для этого нам сначала понадобится установить комплект ПО PrimeSense OpenNI/NITE и Microsoft’s Kinect SDK.

После этого, Вам придется в ручную переключать драйвера в диспетчере задач в зависимости от того, какое программное обеспечение Вы выберете:
1) – набор жестов для управление мышкой и различными программами. Использует . Анонсирован переход на Microsoft’s Kinect SDK в ближайшем будущем.
P.S. Проект имеет высокое юзабилити. Ждем новых версий от разработчика.
2) kinvi – полноценный виртуальный интерфейс для работы с ПК при помощи кинекта. Очень мощная и прогрессивная разработка, поддерживает оба типа SDK.
P.S. К сожалению мне не удалось запустить его на русской винде. Программа выпадает с ошибкой открытия конфиг файла.
3) Kinect Mouse Cursor – простоая, но очень полезная в хозяйстве программа, необходимая для эмуляции хвостатого контроллера. Работает на драйверах Microsoft’s Kinect SDK
4) FAAST – оболочка для эмуляции клавиатуры и мышки при помощи кинекта. Отлично подходит для создания конфигов под игры, в которых не задумана поддержка контроллера. Использует PrimeSense Framework. Анонсирован переход на Microsoft’s Kinect SDK в ближайшем будущем.
P.S. Низкое юзабилити. Простота в настройке. Недавно вышла версия 0.10 которая имеет целый ряд доработок.
5) GlovePIE / FreePIE (новая реинкарнация) – огромный инструментарий для захвата движений при помощи кинекта и преобразование их в команды любых других контроллеров. Поддерживает Microsoft’s Kinect SDK и является лучшим на данный момент проектом для использования контроллера с ПК под управлением Windows.
P.S. Проект бесплатный. Разработчик не богатый человек. Без внешней поддержки ему будет тяжело тянуть на себе такую махину.
6) Win&I , kinclick и другие. Существует еще масса старых проектов от разных разработчиков. Как правило эти проекты имеют ограниченный функционал и на данный момент заморожены.
P.S. Win-and-I – продукт платный. Но настойчивые всегда смогут найти лекарство от жадности. 😉 Не смотря на именитого разработчика, мне продукт не понравился. Слишком много косяков в Wibdows 7.

Скачать файлы можно во вложениях или на сайте производителя.

Итак, что ожидает обычных пользователей в ближайшее время?
Во первых мы можем ожидать активного роста приложений с поддержкой распознавания движений, во вторых, в конце февраля выйдет бета версия windows 8, которая должна иметь глубокую интеграцию с кинект технологиями (распознавание лица, скроулинг и перемещение при помощи движений рук, голосовое управление).
Опираясь на вышеперечисленный анализ можно быть уверенным, что Микрософт готовит нечто огромное. Они готовят революцию в мире контроллеров. Однажды Микрософту удалось изменить ход истории, выпустив на свет OS Windows 3.1

Итак, как же приучить Кинект работать с ПК?
1) для начала купите кинект.
Его стоимость будет колебаться от 100 (за б.у. девайс в штатах) до 300-400 за свеженький вариант девайса, который адаптирован для работы с ПК.
Если вы приобрели вариант кинекта для XBOX, то Вам еще понадобится переходник со стандартного разъема кинект на USB.
Переходник можно легко купить в магазине или сделать самому. Фактически стандартный разъем кинекта – это те же 4 контакта USB + 1 контакт 12 вольт для работы двигателя камеры. 12 вольт можно взять с блока питания Вашего компьютера (любой желтый провод).
2) нужен телевизор. Конечно, монитор тоже подходит, но для полноты эффекта лучше использовать именно ТВ. К тому же, версия кинекта для XBOX имеет слепую зону: 50 см, а значит находиться желательно на расстоянии не менее чем метр от устройства.
3) правильно разместите кинект. Желательно, по середине ТВ, на 15 см ниже или выше кромки экрана. По опыту, даже если Вы разместите его “сикось на кось” и под углом 90 градусов, работать девайс будет, но лучше все же соблюсти рекомендации разработчика. Для правильного размещения необходимо установить контроллер на специальную подставку – , если у Вас его нет, то Вы всегда можете .
4) определитесь с комплектом драйверов. Я бы посоветовал избрать Microsoft kinect SDK. Он перспективней. Рискну предположить, что если Микрософт не наломает дров (уже начал ломать ), то все конкурентные комплекты драйверов в ближайшие 6 месяцев уйдут в тень и поддержка их софта будет бессмысленна.
К тому же лучшее ПО уже сейчас работает именно на драйверах Микрософта. Хотя, и тут зарыта одна собака. Я бы посоветовал использовать последнюю версию. На данный момент прошло всего 11 дней с моменту выхода финальной версии SDK, а это значит, что все существующие программы пока еще адаптированные под версию Бета 2 и не совместимы с финальной версией. Кстати, одним из преимуществ оригинального СДК является то, что в комплекте идет специальное ПО, которое позволяет использовать ваш контроллер как высококачественный 3D сканер. Вы сможете сканировать объекты, а затем легко и просто отсылать их на ваш для печати.

Это все, теперь Вы можете полноценно использовать кинект на Вашем компьютере .
Попробуем воспользоваться им на практике.
Методы применения кинекта в повседневной жизни таковы:
1) Самый простой способ. – Это использовать кинект как высококачественную камеру и микрофон.
Как это сделать?
– Микрофон будет работать сразу после установки Microsoft SDK и дополнительных манипуляций не требует.
– С камерой все немного сложнее.
Для начала необходимо скачать файл
Затем зарегистрировать его в системе примерно такой строчкой “c:windowssystem32regsvr32.exe KinectCam.ax
Так же, может оказаться что у Вас на компьютере не хватает определенных библиотек. В этом случае Вам необходимо докачать их и переписать в папку с файлом
Скачать все необходимые файлы можно во вложении.
После всех этих манипуляций Skype и другие программы начнут видеть Ваш кинект как обычную камеру.
Теперь, проверьте работу камеры с помощью Скайпа, а затем пройди по адресу C: Users AppData Local KinectCam config.ini
В этом файле можно установить угол наклона камеры, а также другие настройки

2) Для управления всевозможным ПО . По причине того, что Микрософт запрещала выпускать коммерческое ПО до выхода финального SDK, стоящих программ для кинекта сейчас не так уж и много.
Могу посоветовать пару программ для управления курсором и windows в целом: или Win&I . Эти программы староваты, зато имеют готовые предустановки для нескольких плееров,браузеров и других программ. У меня они работать нормально не захотели, вероятная причина: новые дрова или новая ОСь.
Использовать их можно, но с рядом существенных оговорок.
Так же, можно использовать программу-конструктор GlovePIE или его новую версию FreePIE, функционал огромный, но для нее готовых скриптов нет, необходимо переделывать под свои нужды чужие скрипты.

3) Третий способ самый правильный. Кинект создавался именно для игр. Только в играх можно раскрыть весь потенциал этого устройства.
Я бы условно поделил все игры на три группы:
3.1) Игры специально созданные для кинекта .

Это самый правильный способ получить удовольствие от игры. За Вас уже все продумали разработчики. Они придумали жесты, адаптировали под них геймплей. Как раз такие игры выходят под XBOX и именно их нам так не хватает на ПК.
Я встречал всего 4 подобные игры, и все они обычные демки, которые позволяют лишь оценить возможности контроллера:
– SkiRanger
– Shape Game Demo
– MotherNature
– ZombieHoldout
3.2) Простенькие игры для ПК.

Такие как Тетрис, Марио и т.д.
Эти программы имеют простейшее управление, а главное, в них можно играть не используя мышь.
Для управления подобными играми подойдет простейший скрипт. Например .

3.3) Высококачественные 3D игры , разработчики которых никогда и не подумывали о совместимости с kinect’ом

Такие как: Skyrim, GTA 5, Mass Effect 3, Batman: Arkham City , да впринципе любая другая игра, в которую Вы бы хотели поиграть
Скрипты для них сложны и многогранны. Игры от первого и третьего лица просто рождены для этого контроллера, только в них Вы можете руками сотворить заклинание или укрыться от пламени дракона воздушным щитом
Приведу в пример .

За разработку этого скрипта приношу огромное спасибо господину Mpoor.
Скрипт хороший, но требует калибровки. Вы должы стоять перед кинектом на таком расстоянии, чтобы в отладочной строке по оси X и Z высвечивались нули. Для того чтобы идти вперед шагните вперед, ну и так далее. Описание более сложных функций можно найти в комментариях скрипта.
А вот схожий .

Скрипт намного проще предыдущего и работает не так эффективно.

P.S. Играя в ПК Windows игры на kinect не стоит забывать о том, что разработчики не задумывали игру для такого способа управления. Динамика игры, обзоры камеры, скорость перемещения и реакции персонажа, все это задумано под ТТХ , клавиатуры или мышки. При помощи кинекта можно сымитировать любой манипулятор, но кинект не в состоянии изменить саму игру, заставить вашу руки не дрожать, тело не качаться, а голову извечно держаться прямо. Все этого приводит к уменьшению динамики игрового процесса, к ошибочным нажатиям и неточным выстрелам из вымышленного оружия =)
Стоит осознать тот факт, что в неадаптированных играх кинект не сможет помочь Вам играть лучше или эффективней, зато, он может наполнить игровой процесс совершенно новыми ощущениями, ну или на худой конец поможет сжечь пару лишних калорий. 😉

Новый виток интереса к самому уникальному контроллеру на планеты вызвало повсеместное засилье Виртуальной реальности. Смартфоны с экранами 2К и более в паре с Google Carfboard сорвали джекпот позволив миллионам людей буквально за гроши погрузится в интересный и красочный мир . Для полноты погружения недостаточно создать 3D картинку и качественный звук, важно так же оцифровать движения человека максимально точно перенеся их в виртуальный мир. Кинект справляется с этой задачей на ура, максимально глубоко погружая своего обладателя в мир компьютерной 3D реальности:

Попал мне в руки сенсор Kinect, и захотелось мне поработать с ним на ПК. Что может быть проще: вставить USB в порт компьютера, установить драйвера и начать разбираться в этой чудо-технике?
Не тут-то было. Невиданный ранее оранжевый разъем наотрез отказался залезать куда-либо без молотка, а адаптера питания с переходником на USB в комплекте не было предусмотрено (данный экземпляр сенсора шел в бандле с консолью).
Достать оригинальй адаптер оказалось не так просто: отдельно он продается лишь в США за 35$, не считая доставки, к тому же БП рассчитан только на 110В. Невостребованного адаптера у купивших полный комплект сенсора так же не нашлось: желающих купить его оказалось на порядок больше.
Выход остался один: сделать переходник самостоятельно.

Что потребуется

Прежде всего я нашел распиновку разъема:

Не сложно разобрать, что +5V, D-, D+, Gnd - относятся к USB, а остальные четыре, +12V и Gnd - к питанию. В качестве источника питания решено было использовать компьютерный БП, который по странному стечению обстоятельств умел выдавать +12V и имел запас в 1А, так необходимый кинекту.

Остался последний вопрос: как подсоединить все это к разъему кинекта, не отрезая его?
Первое, чо пришло на ум - использовать полимерную глину для создания ответной части разъема нужной формы. Приглядевшись повнимательнее, я заметил сходство четырех контактов каждой стороный с контактами USB, их то и было решено использовать в качестве основы.

Список необходимого:
USB-A вилка, 2 шт.
любой резистор 0,5-1 Ватт
USB разъем любого типа, для подключения к пк
разъем MOLEX (или FDD, PW11-4M)
провода (шлейф на 6-8 проводников)
напильник
паяльник и сопутствующие приспособления
суперклей

Собираем

Извиняюсь за низкое качество фото, на мобильный телефон лучше снять очень сложно.

Вскрываем два разъема:



Напильником уменьшаем толщину пластмассы, пока обе части спиной к спине не влезут в разъем кинекта:



Подпиливаем один край разъема, дабы контактные площадки 6-9 совпали:

Склеиваем две половинки, совмещая по подпиленному краю:

Осталось добавить контакт для пин 5, берем ножку от резистора и вплавляем на соответсвующее место:


Разъем готов. Если получилось так, что он свободно болтается и нет надежного контакта - можно напаять олова на контактные площадки до нужной толщины.

Соединяем проводами соотвествующие контакты свежесозданного разъема, разъема питания и USB :

Проверяем еще раз, что все соединено верно. Добавляем немного изоленты и термоусадки:

Подключаем разъем питания вместо давно неиспользуемого флоппи, подключаем адаптер к кинекту, вставляем USB в ПК…

Работает!

Система радостно сообщает о подключении новых устройств. Можно работать!
Для теста скачал набор для Windows , драйвера установились, демо запускается. Картинка передается, данные обрабатываются.

Что можно добавить?
Данный адаптер можно использовать так же и для подключения сенсора к старым версиям Xbox 360. Что бы постоянно не переставлять usb из компьютера в консоль и наоборот, можно установить переключатель.

Недавно я купил xbox 360 kinect, чтобы поиграться с построением карт местности у робота. Купить, то купил, только вот разъём меня разочаровал, оказывается для PC есть специальная версия с переходником, и она дороже, но инженера не проведёшь, если она как-то работает в x-box, с usb интерфейсом, то и на компьютере должно всё работать. Почитав форумы, всё стало понятно через пару минут — достаточно порезать кабель и к нужным проводам подать 12В, остальные кинуть на обычный USB. Резать было жалко, но ждать переходник с ALI Долго, покупать в Ростове — нецелесообразно, а приставка у меня плейстешн, и подключить это чудо всё равно некуда. Вообще распиновка специального разъёма такая.Понятно, что все эти контакты не содержат отдельных проводов, и разрезав кабель я увидел такую картину. Итого у нас 5 проводов — 4 стандартные для USB, один для подачи 12В.
Припаиваем разъём FW типа «мама», как раз вы найдёте много блоков 12в, с таким разъёмом типа «папа», остальные разъёмы спаиваем согласно стандартным цветам USB.

Землю (чёрный провод) объединяем и с кабелем USB, который идёт к компьютеру, и с разъёмом для 12В. В результате получаем такую картину

Сначала я захотел проверить работоспособность с системой Windows, потратил много сил на установку родной SDK с сайта майкрософт, убедился что вроде бы работает, но что с этим всем делать ничего не придумал.

Потом перегрузился в Linux, и выяснил, что есть такой открытый проект — OpenKinect . Следуя всем инструкциям с github, установил его на компьютер. Моя цель была проверить работоспособность устройства и убедиться, что я порезал кабель правильно. Для этого я использовал утилиту RtabMAP

На странице подробно описано как её установить для всех типов unix систем. После всех этих мучений, наконец таки я увидел заветную картинку построения 3д модели моей комнаты

Проверил потом ещё и в офисе. Работает! После построения можно карту повращать — для человека, который это видит первый раз всё выглядит фантастически)

От Microsoft. Но, к счастью или нет, новость о чудо-сенсоре меня не «зацепила». Вспомнил, а точнее напомнили мне о нём спустя год, когда появилась мысль о приобретении, как оказалось, стильного пыле сборника – Xbox 360 Slim. Хоть и включается консоль только во время пьяных вечеринок, положительных эмоций и весёлых видео оставляет после себя не мало. Но наигравшись в стандартные Adventures и Joy Ride , в голову взбрела идея о создании собственной игры для Kinect-а, как оказалось, всё довольно просто…

Идея

Не претендуя на лавры Rovio , Halfbrick и им подобных, решено было создать простую (как тогда ещё думали, для узкого круга знакомых) игру. Идея игры родилась сама собой, после того, как было озвучено слово «простая», тут же вспомнились портативные электронные игры - «Электроника». Да, да…. те самые PSP – 80-х.

Как нельзя лучше, под наши задумки, подошла самая популярная игра из серии - «Ну, погоди!». Определившись с игрой и затарившись пивом, началась работа.

Реализация

Из мягкого использовали:

  • Visual Studio C# 2010
  • Microsoft XNA 4.0
  • Kinect SDK (в начале это была beta, позже пересели на версию 1.5)
  • CorelDRAW
Твёрдого и жидкого:
  • Kinect
  • Пиво, сухарики

В первой версии игры, за основу была взята оригинальная графика классической «Ну, погоди!», управление производилось с клавиатуры. Этого было достаточно для тестирования и настройки всех компонентов. Убедившись, что всё работает, началась работа над взаимодействием игры с Kinect-ом.

Так-как волк имеет всего четыре позиции, следовательно и у игрока их тоже четыре. Управление решено было сделать наиболее естественным и понятным, то есть для ловли яиц, игрок должен повторять движения волка в игре.

Для определения позиции занимаемое игроком, нам потребовалось всего 6 отслеживаемых сенсором точек:

Rh = skeleton.Joints; lh = skeleton.Joints; rs = skeleton.Joints; ls = skeleton.Joints; rk = skeleton.Joints; lk = skeleton.Joints;

  • rh – правая рука/кисть
  • lh – левая рука/кисть
  • rs – правое плечо
  • ls – левое плечо
  • rk – правое колено
  • lk – левое колено
Собственно реализация:

If (rh.Position.Y > rs.Position.Y && (rh.Position.Y - lh.Position.Y) <= 0.1 && (rh.Position.X - lh.Position.X) <= 0.1 && (rh.Position.X - rs.Position.X) >= 0.3) { state = 1; } else if (lh.Position.Y > ls.Position.Y && (rh.Position.Y - lh.Position.Y) <= 0.1 && (rh.Position.X - lh.Position.X) <= 0.1 && (lh.Position.X - ls.Position.X) <= -0.3) { state = 0; } else if (lh.Position.Y < lk.Position.Y && (rh.Position.Y - lh.Position.Y) <= 0.1 && (rh.Position.X - lh.Position.X) <= 0.1 && (lh.Position.X - lk.Position.X) <= 0) { state = 2; } else if (rh.Position.Y < rk.Position.Y && (rh.Position.Y - lh.Position.Y) <= 0.1 && (rh.Position.X - lh.Position.X) <= 0.1 && (rh.Position.X - rk.Position.X) >= 0) { state = 3;

Код проверяет позиции суставов, сопоставляя их друг с другом, и принимает решение о позиции волка, если игрок правильно проделал движения. A именно, для того чтобы поймать яйца с верхних ярусов, придётся поднять кисти рук выше своих плеч. А для яиц с нижних ярусов, кисти рук должны находиться ниже, относительно колен игрока.

Доработка игры

Ура всё заработало! Поигравшись пару дней, как это зачастую и происходит, захотелось чего-то большего от игрушки. Не столько в функциональном плане, сколько в её интерфейсе, уж слишком серо, без году 30 летняя игра, смотрится на большом экране.

Решено было её перекрасить, и не просто перекрасить, а заново всё нарисовать. Но так как среди нас ни художников, ни других «карандашей» не нашлось, пришлось прибегнуть к помощи фрилансеров.

карандаши* - так мы ласково называем графических дизайнеров

Тут началось самое интересное, а именно переговоры с дизайнером. Фрилансер упорно перерисовывал всё в своем стиле, кардинально отходя от представленных мною эскизов, но в результате мне удалось добиться от него желаемых результатов.

Таким получился главный герой:

Но как дело дошло до яиц, всплыл вопрос, который интересовал меня ещё будучи совсем юным. А зачем волку яйца…!? Вроде хищник, так не проще ли ему, вместо ловли яиц, вскарабкаться по жёлобу, да и не прихватить с собой пару кур?
Но так как кардинально переписывать игру не хотелось, нужно было придумать что-то такое, что также бы скатывалось (как и яйца) волку в мешок, но при этом выглядело более логичным, учитывая потребности волка в мясе/дичи.

И на замену яйцам, пришли…
Да! Как вы уже догадались - поросята!


не ищите аналогий с упомянутыми выше играми, поросят придумали сами

В виде бонуса в игру были также добавлены три уровня сложности (отличающиеся между собой начальной скоростью скатывания поросят) и таблица рекордов. Так и появилась игра, с вполне логичным названием, Hungry Wolf.

Пара скришотов:

Ну вот собственно и всё. Спасибо тем, кто дочитал или проскролил до конца, если есть вопросы о технической реализации или какие другие – задавайте, отвечу.

Песочница

Наташа 7 марта 2011 в 02:49

Установка Kinect в Windows 7

  • Чулан *
Введение
Данная статья родилась в процессе создания простенькой программы на C#, которая получает изображение с обычной USB камеры и сохраняет картинку раз в 5 секунд на жесткий диск. Так получилось, что у меня есть только встроенная камера моего ноутбука, а для решения поставленной задачи камера должна смотреть через окно на улицу, покупать новую совсем не хотелось, поэтому мой взгляд обратился к стоящему на телевизоре Kinect`у. Соответственно первоочередная задача - подключить устройство к компьютеру, с ней и будем сейчас разбираться.

Забегая вперед скажу, что использовать Kinect вместо камеры я еще не пробовал, т.к. нашлась обычная usb веб-камера, но эту затею я не оставлю, т.к. обертки kinect`а для c# уже есть.

Необходимые условия
Сразу хочу оговориться, что все операции проводились в Windows 7 Ultimate, установленной на MacBook через BootCamp, уверен на 99.9% что это значения не имеет, но упомянуть будет не лишним.

Итак, что же нам понадобится:

  • Kinect
  • Компьютер
  • ОС Windows 7
  • Visual Studio 2010 (с установленной поддержкой C++)
  • Интернет (для загрузки необходимых библиотек)
Подготовительный этап
Возможно, готовые драйверы для работы Kinect можно найти где-то на просторах интернета, но согласитесь, что созданное своими руками приятнее, понятнее и за ошибки ругать кроме себя некого. Поэтому мы начнем с загрузки всех необходимых программ и библиотек.

Для удобства я создам папку C:\OpenKinect, в которой будут происходить все работы.

libusb-win32
Это порт библиотеки libusb, которая позволяет получать доступ к различным USB устройствам из клиентских приложений.
Скачиваем файл с именем вида libusb-win32-bin-x.x.x.x.zip из последнего билда, в моем случае это был билд с номером 1.2.2.0 и распаковываем его в C:\OpenKinect\Libusb-win32 (имя папки не принципиально, я назвал для удобства, это верно для всех папок, которые мы будем создавать).

pthreads-win32
Pthreads является набором библиотек, реализующих простую работу с потоками по стандарту POSIX. Проект очень древний, обновлений не было с 2006 года, поэтому даю прямую ссылку на необходимый файл, который необходимо будет разархивировать в папку C:\OpenKinect\Pthreads-win32.

Также необходимо будет скопировать файл C:\OpenKinect\Pthreads-win32\Pre-built.2\lib\phtreadVC2.dll в папку \Windows\System32\

Glut
Это библиотека для работы с OpenGL. Еще один старый проект, и еще одна просто ссылка на файл, который необходимо распаковать в папку C:\OpenKinect\Glut
glut-3.7.6-bin.zip

Копируем файл C:\OpenKinect\Glut\glut32.dll в \Windows\System либо в любую папку, которая упомянута у нас в переменных среды (PATH)
Кроме этого необходимо скопировать файл C:\OpenKinect\Glut\glut.h в папку VC\include\GL вашей VS2010, если папки GL нет, то нужно ее создать. Файл C:\OpenKinect\Glut\glut32.lib в папку VC\lib. В моем случае пути выглядят следующим образом:

  • C:\Program Files\Microsoft Visual Studio 10.0\VC\include\GL
  • C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
Сборка проекта
Git
Естественно мы не сможем обойтись без исходных файлов проекта libfreenect, поэтому качаем Git, устанавливаем его, во время установки выбираем опции «Run Git from the Windows Command Promt» и «Check-out Windows-style, commit Unix-style line endings» .
Git-1.7.4-preview20110204.exe

Следующим шагом открываем командную строку и последовательно вводим следующее (парсер преобразует адрес в ссылку, поэтому я добавил лишний пробел между https:// и github.com, его нужно убрать):
cd c:\OpenKinect
git clone https:// github.com/OpenKinect/libfreenect.git
cd libfreenect
git branch --track unstable origin/unstable
git checkout master
git pull
В результате мы получим папку с исходниками C:\OpenKinect\libfreenect

CMake
Утилита, которая поможет нам собрать все наши библиотеки в один проект. Загружаем программу с сайта, на данный момент последняя версия 2.8.4, устанавливаем, во время установки выбираем опцию «Add CMake to the system PATH for all users»

После установки запускаем файл cmake-gui.exe. В первой строке выбираем путь к папке с исходниками, у нас это C:/OpenKinect/libfreenect, вторая строка - папка, где будет собранный проект C:/OpenKinect/Drivers. Ставим галочки на Grouped и Advanced, нажимаем кнопку Configure, в открывшемся окне выбираем Visual Studio 10 и нажимаем кнопку Finish. Программа отработает с ошибкой, т.к. не указаны пути к нашим библиотекам, укажем так, как показано на скриншоте и дважды нажмем кнопку Configure.

Теперь у нас не должно быть ошибок и можно смело нажимать кнопку Generate, в результате в папке C:\OpenKinect\Drivers у нас окажется проект, который нам необходимо будет построить в VS2010.

Visual Studio 2010
Открываем в VS2010 наш свежеиспеченный проект из папки C:\OpenKinect\Drivers (файл libfreenect.sln) и построим его (у меня почему-то проект строился только со второго раза). Если все прошло без ошибок, то мы должны получить папки C:\OpenKinect\Drivers\lib\Debug и C:\OpenKinect\Drivers\bin\Debug, первую из которых нужно добавить в PATH.

На этом этап сборки завершен и переходим непосредственно к подключению Kinect`a

Подключение Kinect
Здесь достаточно все просто. Подключаем Kinect, система его определит как Xbox NUI Motor и не сможет найти драйверы, поможем ей в этом. Через диспетчер устройств находим нашего страдальца, выбираем опцию «Обновить драйвер» и указываем папку C:\OpenKinect\libfreenect\platform\windows\inf, система запросит подтверждение на установку неподписанного драйвера, даем свое согласие, после этого на Kinect`е должен замигать зеленый диод и в списке устройств должны появится еще два неопознанных устройства «Xbox NUI Camera» и «Xbox NUI Audio» , устанавливаем для них драйвера из папки C:\OpenKinect\libfreenect\platform\windows\inf.

На этом все наши работы закончены, осталось только проверить как все работает.

Тестирование
Для проверки дееспособности Kinect мы воспользуемся тремя утилитами из папки
  • C:\OpenKinect\Drivers\bin\Debug:
  • glpclview.exe - Показывает возможности 3D камеры Kinect
  • glview.exe - Показывает работу обычной камеры
  • tiltdemo.exe - Задействует моторы Kinect
Вот и результат:

P.S. Если вы захотите написать свою программу для работы с Kinect, то в папке C:\OpenKinect\libfreenect\wrappers есть обертки под множество языков.

При написании статьи использовалась информация с сайта