Kinect xbox 360 как веб камера

Обновлено: 04.07.2024

Идея беспроводных контроллеров давно будоражила умы масс, и разработчики охотно шли им навстречу. От обычных джойпадов, которые обменивались с ПК или консолями сигналами по радиоканалу, создатели устройств ввода постепенно перешли к более революционным решениям. Можно вспомнить, например, PlayStation EyeToy, который отслеживал движения игрока при помощи камеры, а затем совмещал полученные кадры с изображением на экране. В какой-то мере новый контроллер Microsoft — Kinect (в пору разработки известный как Project Natal) — основан именно на идеях того времени.

Но прежде чем перейти к рассказу о том, как устроен Kinect, скажем вкратце, что в нем особенного . Есть ведь и Nintendo Motion (контроллер для Wii), и PlayStation Move (PS 3). Ключевое отличие «мелкомягкого» устройства — в том, что при игре не требуется вообще ничего держать в руках, никаких «волшебных посохов с набалдашником», ни-че-го. Полная свобода движений и действий — ограниченная, правда, стенами комнаты.

Мы дергаем руками и дрыгаем ногами

Для игры потребуется подключить датчики Kinect к Xbox 360, поставить устройство в зоне прямой видимости, и пройти несложную процедуру калибровки. Камера без труда обнаружит живого человека перед телевизором и создаст его аватар (и, кстати, распознает пол).

Именно на этом этапе вы столкнетесь с единственным ограничением, которое новый контроллер накладывает на игроков. Вам потребуется свободное, не сковывающее движений пространство — от 2 до 3 метров от экрана ТВ, шириной около 1,5—2 метров. Это не очень удобно, так как раньше, с геймпадом в руках, мы могли находиться где угодно, в помещении любого размера (и Microsoft не заставлял нас наводить порядок в комнате)!

С этого момента все управление, включая навигацию в меню, будет «завязано» на ваши жесты и слова. Да-да, Kinect распознает фразы, правда, самые простейшие, и пока только на английском и японском языках. Жители Западной Европы могут надеяться, что в ближайшее время выйдут языковые пакеты и для их стран, а вот россиянам придется подождать. Впрочем, не знающие английского в любой момент могут взять в руки классический джойпад и отдавать команды по старинке. Признаемся: иногда это удобнее, чем разговаривать «с самим собою» вслух, совершая при этом нелепые телодвижения.

Как работает Kinect?

Итак, мы движемся перед экраном, Kinect считывает информацию, а Xbox 360 обрабатывает ее, затрачивая на это около 10-15% процессорной мощности. Какие же данные передаются из черной глянцевой коробочки на консоль?

Если вы ищете веб-камеру для своего ПК, вы можете использовать Xbox Kinect в качестве веб-камеры в Windows 10. После того, как вы сделаете Kinect веб-камерой в Windows 10, вы сможете использовать ее для видеозвонков в Microsoft Teams, Skype., Zoom и многое другое. Использовать Kinect для входа в Windows Hello намного проще, чем полагаться на PIN-код или пароль, а Kinect может распознать вас намного быстрее. В настоящее время вы больше не можете использовать Kinect, поскольку Microsoft прекратила выпуск Kinect в 2017 году, включая игры на основе Kinect, доступные через обратную совместимость на Xbox Series X | S. Если у вас еще нет сенсора Kinect для Xbox One, вам необходимо купить сенсор Kinect и адаптер Kinect для ПК с Windows 10.

Как использовать Kinect в качестве веб-камеры в Windows 10

Адаптер Kinect для ПК с Windows 10

К сожалению, Microsoft прекратила производство сенсора Kinect и адаптера Kinect в 2017 году, поэтому, помимо использования Kinect в качестве веб-камеры, нет ничего другого, для чего вы можете использовать сенсор Kinect, если только вы не разработаете собственное приложение UWP в Microsoft Store.

Вот что вам нужно сделать, чтобы использовать Kinect в качестве веб-камеры в Windows 10:

Выполнив эти шаги, вы можете открыть приложение камеры в Windows 10, чтобы убедиться, что Kinect работает как веб-камера. У Microsoft есть веб-страница, посвященная Kinect, но имейте в виду, что не все перечисленные ссылки будут работать. Нет никаких ограничений на то, что вы можете делать, используя Kinect в качестве веб-камеры в Windows 10.

Существует плагин Kinect для Open Broadcaster Software (OBS), который может использовать Kinect для потоковой передачи на Twitch. Более подробная информация о плагине OBS доступна на GitHub. На GitHub уже есть множество проектов, недавно обновленных и доступных для Kinect.

Как бы вы использовали Kinect в качестве веб-камеры в Windows 10? Дайте нам знать об этом в комментариях.

Последние наблюдения и собственный опыт показали, что с подключением камеры Microsoft Kinect Xbox 360 для ее использования в ROS Indigo из под Ubuntu 14.04 часто возникают проблемы. В частности, при запуске ROS пакета openni_launch не удается определить устройство и выдается ошибка «No device connected». В этой статье я опишу свой пошаговый метод настройки окружения для использования Microsoft Kinect из ROS Indigo. Кто заинтересован, прошу под кат!

Камера Microsoft Kinect

Об этом сенсоре уже подробно писали в статье. В двух словах, Microsoft Kinect это 3D (RGB-D, то есть, red, green, blue и depth) камера, основанная на технологии Structured light, которая позволяет получить карту глубины поверхностей объектов, попавших в поле зрения камеры. Карту глубины можно трансформировать в трехмерное «облако» точек, в котором каждая точка имеет точные координаты X, Y и Z в пространстве и в некоторых случаях цвет в формате RGB. «Облака» точек используются в задачах реконструкции объектов, построении карт местности в сервисной робототехнике, распознавании объектов и многих других задачах в области компьютерного зрения в 3D.

image

ROS предоставляет поддержку для сенсора Kinect. «Облако» точек, получаемое сенсором, можно визуально показать в программе rviz.

image

Для использования сенсора Kinect в ROS имеется специальные пакеты openni_launch и openni_camera.

Установка драйвера для сенсора Microsoft Kinect

Для начала необходимо установить библиотеку OpenNI, предназаначенную для ряда RGB-D сенсоров (Kinect, ASUS Xtion, PrimeSense).
Установим некоторые дополнительные пакеты, которые OpenNI требует для установки:


Теперь непосредственно установим OpenNI 1.5.4 из исходников:


Теперь скачаем библиотеку avin-KinectSensor для сенсора Kinect отсюда.


В зависимости от типа системы (32 или 64 бита) выберем соответствующий установочник. Для 32 битной системы выполним следующие шаги:


Для 64 битной системы выполним:


И наконец выполним установку:

Установка openni_* пакетов

Последнее что нам нужно сделать — это установить пакеты openni_launch и openni_camera, которые позволяют получать и работать с данными OpenNI-совместимых камер глубины в ROS. Установить эти пакеты очень просто:

Проверка установки драйверов

Теперь все готово! Проверяем успешность установки. Запускаем в разных терминалах:


Установка аргумента depth_registration:=true указывает, что мы хотим включить OpenNI регистрацию и получать XYZRGB данные с камеры (глубину и цвет).

Для начала в rviz развернем секцию Global options в левой колонке Displays и поставим значение /camera_link для поля Fixed frame как на снимке:

image

Таким образом мы задали необходимую систему координат для корректного отображения данных с камеры Kinect.
В rviz создаем новый дисплей. Для этого нажимаем кнопку Add и выбираем тип дисплея PointCloud2 как на снимке:

image

Выбираем топик /camera/depth_registered/points для нового дисплея

image

После этого выбираем для поля Color Transformer значение «RGB8».
Теперь мы увидим подобную картину:

image

Значение «RGB8» позволяет отобразить цветное «облако точек», где каждая точка имеет координаты X, Y, Z и цвет RGB.

Хочу обратить ваше внимание, что Microsoft Kinect Xbox 360 работает только с USB 2.0. Подключение камеры через USB 3.0 может приводить к ошибке обнаружения устройства, о которой я говорил в самом начале статьи.

На официальном портале ROS есть туториалы по работе с данными RGB-D камер с помощью библиотеки Point Cloud Library. Эти туториалы дают всю необходимую информацию, достаточную для начала работы с «облаками точек».

Желаю вам удачи в использовании RGBD камер в ROS для решения своих задач компьютерного зрения!

Сенсор Kinect разработан для Xbox 360 и позволяет играть в игры без всяких приспособлений в руках. Появившись в ноябре 2010 года, он стал самым продаваемым электронным устройством в мире: за первые 2 месяца было продано более 10 млн штук. Изначально сенсор работает лишь с консолью, но при помощи ловких движений рук ты сможешь заставить его работать с PC, а он поможет тебе поддерживать физическую форму!

  1. Камера видимого диапазона — обычная RGB-камера, похожа на среднестатистическую веб-камеру: 640x480 и 30 кадров в секунду.
  2. Инфракрасный лазерный проектор, который создает в пространстве сетку из точек.
  3. Камера, снимающая в инфракрасном спектре, которая регистрирует изображение этой сетки.
  4. Стереомикрофон с продвинутой системой шумопонижения — для правильного голосового управления.
  5. Мотор, регулирующий положение датчика.
  6. Чип PrimeSensor — творит главную часть магии, обрабатывая картинку с ИК-камеры, дает на выходе — 3D-картинку.


Подключение

Kinect’ы, продающиеся в коробках, уже имеют все необходимое для работы, их можно подключить к компьютеру напрямую. Если же сенсор из комплекта с новым xbox’ом, то к нему потребуется специальный адаптер, так как разъем USB там нестандартный, с дополнительным питанием 12 В (сенсору слабенького тока от порта недостаточно). Оригинальный блок питания можешь купить в магазине Microsoft за $34,99, а сэкономить получится, заказав китайский клон в три раза дешевле. Теперь можешь подтыкать к компьютеру и начинать возиться с программной частью.

Драйвера

Но тебе лучше взять другой драйвер. Сердце Kinect’а разработано не великой и могучей Microsoft, а молодой компанией PrimeSence. Для них Kinect — всего лишь один продукт, использующий их технологию NUI (natural user interface) — естественного пользовательского интерфейса, который позволяет человеку взаимодействовать с системой визуально, при помощи жестов, а также при помощи голосовых команд. Они желают повсеместного распространения своего детища и активно помогают open source-сообществу. В их репозитории на гитхабе лежит драйвер для референсного сенсора. Напрямую с кинектом он не работает, но его допиленная версия справляется с этой задачей отлично!

OpenNI — это некоммерческая организация, которая стремится создать открытый стандарт для "Естественных взаимодействий" (Natural Interactions). Также она разработала OpenNI — одноименный фреймворк с открытым исходным кодом, созданный, чтобы взаимодействовать с одной стороны — с оборудованием, и с более высокоуровневыми программными прослойками — с другой стороны. Развивается он бурно, и тебе потребуется последняя нестабильная его версия, загрузить которую можно здесь.

NITE — это промежуточное ПО, которое решает задачи определения жестов для управления компьютером и играми и работает в связке с OpenNI. Хотя это и коммерческий продукт, но его разработчик, PrimeSence, распространяет бесплатный ключ, которым может пользоваться кто угодно. Вот этот ключ — 0KOIk2JeIBYClPWVnMoRKn5cdY4=. Его надо ввести при установке. Загрузить NITE можно по ссылке.

После нужно изменить конфигурационные xml-файлы.

Правильные версии можно загрузить по адресу.

Отличаются они от тех, что уже предустановленны, только указанием серийного ключа. Распакуй архив и скопируй файл SampleConfig.xml из папки KinectXMLsOpenNI в папку Data внутри каталога OpenNI (вероятнее всего, он внутри папки C:Program Files), а файлы из папки KinectXMLsNITE — в C:Program FilesPrime SenseNITEData.

Руки вверх, в позу Пси!

Например, так он будет выглядеть для World of Warcraft:

left_arm_out 10 key a
left_arm_across 10 key d
lean_forwards 15 key w
lean_backwards 10 key s
left_arm_forwards 20 key tab
right_arm_forwards 20 key 1
right_arm_up 12 key 4
right_arm_across 15 key 2
right_arm_out 15 key 3

После этого необходимо откалибровать пользователя, чтобы программа поняла, где у тебя руки, а где ноги. Для этого необходимо встать в позу Пси, а проще говоря, встать ровно и поднять руки вверх, словно на тебя навели ствол нехилого калибра. После того как опознание завершится — поверх тела будет изображен схематичный человечек из прямых линий. Все — теперь компьютер покорно следит за твоими жестами.

Kinemote

Ultraseven


В здоровом теле — здоровый дух


Теперь разберемся с работой сенсора. В описании формы MainWindow.xaml выстави размер 662x520 и добавь к ней изображение, в которое будет выводиться картинка с сенсора, и холст, на который будет выводиться дополнительная информация:

<Image Name="imgCamera" />
<Canvas Name="LayoutRoot" />

Дальше в коде формы MainWindow.xaml.cs объяви использование необходимых пространств имен:

Затем объяви новый объект NuiUserTracker и инициализируй его в конструкторе. Да, нужно не забыть скопировать файл SamplesConfig.xml из директории OpenNI в папки Debug и Release твоего проекта.

В классе формы объяви все переменные:

NuiUserTracker _skeleton; // объявление объекта трекера
BackgroundWorker _worker = new BackgroundWorker(); // фоновый обработчик
double topY = 0; // верхнее положение приседания
double bottomY = 0; // нижнее положение приседания
int numOfBobs = 0; // счетчик полуприседаний
bool bottomPosition, topPosition; // биты, в которых фиксируется пересечение линий
Ellipse ellipse = new Ellipse // кружочек на груди
< Fill = new SolidColorBrush(Colors.AliceBlue), Width = 20, Height = 20 >;

В конструкторе инициализируй обработчик событий:

// проделываем все манипуляции для каждого пользователя
// (хотя приседать они будут под одну гребенку)

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

ellipse.Margin= new Thickness(user.Neck.X, user.Neck.Y, 0, 0); //перемещаем кружочек вслед за шеей
// ставим флажок верхнего положения
if (user.Neck.Y+5 < topY) topPosition = true;
// ставим флажок нижнего положения
if (user.Neck.Y + 25 > bottomY) bottomPosition = true;
if (topPosition && bottomPosition)
< // если оба флага есть
numOfBobs++; // половину приседания в копилку
topPosition = false; // сбрасываем флажки
bottomPosition = false;
>
// если полуприседаний набралось двадцать штук — значит все,
// выключаем программу
if (numOfBobs >= 20)
Application.Current.Shutdown(); // выходим из программы
>

Осталось разобраться с таймером и блокировкой клавиатуры и мыши. Сперва в App.xaml.cs нужно добавить еще одно пространство имен:

Потом объявить метод блокировки клавиатуры и мыши. Удобно воспользоваться функцией Windows API BlockInput:

Для таймера можно создать отдельную форму и указать ее в App.xaml в качестве точки входа в программу. В код этой формы нужно добавить нэймспэйс работы с таймерами:

private static System.Timers.Timer TheTimer;

А дальше запустить его, например, по нажатию кнопки:

private void button1_Click(object sender, RoutedEventArgs e)
// ставим таймер на час
TheTimer = new System.Timers.Timer(3600000);
// как пройдет — блокируем комп
TheTimer.Elapsed += new ElapsedEventHandler(BlockPC);
TheTimer.Enabled = true;
>

А при срабатывании таймера будет блокироваться пользовательский ввод и открываться окошко с видео с кинекта:

void BlockPC(object source, ElapsedEventArgs e)
App.NativeMethods.BlockInput(true); // блокируем ввод
// создаем экземпляр формы с картинкой от сенсора
MainWindow w = new MainWindow();
w.Show();

>// и показываем ее

Осталось не забыть добавить отмену блокировки перед выходом из программы:

// возвращаем пользователю клавиатуру и мышь
App.NativeMethods.BlockInput(false);

Если что-то не получилось, то полный код проекта и все файлы, необходимые для запуска, ты сможешь найти на диске.

Одного кинекта мало

Однако, эксперименты с кинектом одним кинектом ограничиваются! Если к сенсору добавить проектор — то получится система дополненной реальности, хочешь подсвечивай отдельные объекты в комнате, рисуй светом на стенах или создай систему, которая бы интеллектуально гоняла кота за световым пятнышком. Один кинект дает карту глубин с одной стороны, а если их взять 3 или 4 и расставить по углам, то можно получить полную трехмерную картину внутреннего пространства. Настоящий 3d-сканер, работающий в реальном времени!

Но не все только людям! Еще Kinect придется по вкусу и роботам — еще бы, раньше трехмерные лазерные дальномеры стоили несколько тысяч долларов, а это устройство реализует те же возможности всего за две сотни. Таким образом, можно собрать мощного робота на недорогих серийных компонентах. Например: iRobot Create в качестве шасси, обычный нетбук с установленной Ubuntu и ROS — в роли мозга системы, а Kinect — в качестве датчиков. Именно так и выглядит Willow Garage Turtlebot. Да похожим образом устроен и Bilibot, к которому прикреплена еще и миловидная красная клешня. Плюс уже доступен для заказа за $1200.

Вообще кинект — первый представитель нового класса устройств. Уже готов и его конкурент, изначально нацеленный на работу с PC, — Asus WAVI Xtion. Вероятно, пройдет еще немного времени, и к этой гонке подключатся новые производители, библиотеки обзаведутся обертками для множества языков, и готовые решения войдут в повседневную жизнь, а вид человека, машущего руками перед компьютером, станет обычным делом.

Kinect - думаю, что об этом устройстве слышал практически каждый, кто хоть раз сталкивался с консолями Microsoft. Это устройство было практически у каждого обладателя 360, и хоть раз да он и мог убить пару часов свободного времени играя в те же Kinect adventures. Но по какой то причине Kinect стал, наверное, cамым провальным детищем microsoft, и, как по мне вполне заслуженно.

История Kinect неофициально может уходить примерно в самое начало 2000-х годов, поскольку уже тогда конкуренты Xbox работали над устройствами, которые могли считывать ваши движения и переносить их в игру. Первопроходцем в захвате движения как по мне стала камера Eye Toy. Это было довольно примитивное устройство для Playstation 2, для которого было выпущено пара десятков игр. Оно не снискало особой популярности, однако я не мог его не упомянуть, поскольку именно эта маленькая камера стала первым консольным подобием Kinect.

Затем, в 2004 году Nintendo хотела выпустить контроллер для Nintendo Gamecube, планировалось, что с помощью него можно будет получать совсем новый экспириенс от гейминга, и что-ж,этот контроллер вышел, и вы все его прекрасно знаете - wii mote. Эта штука переросла в отдельную консоль - wii .

Как и ожидалось, Когда в 2006 году вышла Wii - Nintendo снова вернула себе имя в игровой индустрии. Она буквально восстала из пепла, и это вполне логично. Да, Wii была далеко не той консолью, которая может предложить шикарную графику и серьезные ААА проекты,но она просто подходила к геймингу немного с другой стороны (что сейчас и продолжает делать Nintendo со своим Switch) поэтому вполне логично, что Microsoft захотела повторить ошеломительный успех магического по тем временам wii mote, в результате чего в 2009 году на Е3 показали новые наработки Microsoft - Project Natal.

В свое время Project Natal вызвал немало хайпа вокруг себя, и в основном это было из за того, что Microsoft вкладывала в маркетинг устройства баснословные деньги, и да, в 2010 году уже полностью официально Microsoft показала миру Kinect.

Все внимание было приковано к устройству на Е3 2010:

кстати, консоль стоящая под телевизором около Xbox 360 Slim это девкит Xbox 360 FAT. Интересно, что он там забыл.

Что забавно, уже в этом видео можно наглядно увидеть, как криво работает технология. Достаточно лишь присмотреться к аватару на экране телевизора, и можно заметить огромные неточности в распознавании движения.

Как бы то ни было, 4 ноября 2010 года Kinect поступил в продажу в США живым и здоровым, критики поставили устройству весьма смешанные оценки,но в общем kinect, как игровой аксессуар получил 8/10. Что было довольно неплохо.

Однако спустя некоторое время выяснилось, что большинство показанных игр на Е3 для kinect были фейковыми. Это были заранее отснятые мультики, которые в реальности не представляли из себя ровным счетом ничего, поскольку их просто не было. Самый яркий пример такого наглого обмана - Star Wars для Kinect. Да, эта игра действительно существует, но геймплей, показанный на E3 2010 немного. опережал движения игрока, который " играл " в нее.

Тот самый "абсолютно реальный" геймплей Star Wars.

Но самым ярким примером обмана является игра для kinect "Project Milo". Project Milo показали еще на Е3 2009, и игра должна была стать уникальной в своем роде. По сути Milo должен был стать чем то вроде симулятора общения с человеком. И да, одним из самых главных эксклюзивов Kinect. Но на Е3 2010 игра так и не появилась, а спустя несколько месяцев Microsoft и вовсе сказала, что проект в итоге закрыли.

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

Да, по сути игра являлась обычным виртуальным кинцом, но думаю оно бы понравилось определенным людям. Хотя, во всяком случае как сказали LionHead Studios ( которые и создавали совместно с Microsoft игру ) дальнейшие наработки и технологии Milo использовались в Fable.

И так уж вышло, что в 2010 году Kinect вышел устройством, которое не могло предложить пользователю ни одного серьезного проекта.

Да, вы спросите зачем kinect были серьезные проекты, ведь он является, по сути развлечением для казуалов? Но Microsoft позиционировала kinect далеко не как простое устройство для игр на 5 минут, а как революцию и переворот в гейминге, в результате чего на своих же обещаниях она и подскользнулась.

Кроме того что Kinect плохо считывал движения, для действительно комфортной игры он требовал довольно много места, и во время игры вы не могли сидеть. Сенсор сходил с ума если вы начинали двигаться быстрее обычного, он вышел не просто сырым, он вышел невероятно сырым.

Если продолжать тему игр, которые за это время вышли на Kinect за 3 года его существования, то действительно серьезных среди них не было вообще. Можно было бы назвать серьезной игрой Steel Battalion, поскольку игра действительно смогла показать весь потенциал устройства, но сделала она это крайне криво. В Steel Battalion вам давали поуправлять танком с помощью Kinect, но только вот сделать что-то в игре было просто невозможно, потому что она была слишком большой для того, что бы играть в нее с помощью такого устройства.

Поэтому игры для Kinect это лишь сплошное интерактивное "Демо", вроде Kinectimals или Kinect Sports/Adventures, которое может действительно заинтересовать лишь на 3-4 дня.

Но, я думаю не стоило настолько сильно ругать Microsoft за устройство, поскольку она все же пыталась сделать устройство активным гаджетом для вашего Xbox или даже помощником для врачей в больнице, но попытки эти были крайне неправильными. (в основном из за агрессивного маркетинга)

Возьмем, например Kinect Video, Kinect Video это приложение, которое позволяло пользователям Windows Messenger и владельцам Xbox 360 устраивать видеозвонки между собой. Впрочем, "видеозвонки" звучит старомодно, и проще говоря это приложение должно было стать чем то вроде Skype. Один вопрос: что мешало Microsoft вместо таких костылей сделать Skype? Что бы с помощью kinect можно было говорить с людьми по нему? В конце концов Video Kinect был интересным приложением, в теории оно должно было стать Skype на "максималках".

Во время конференции с друзьями Kinect должен был следить за положением вашей головы, а само приложение позволяло смотреть с друзьями какой-нибудь сериал, но microsoft загубили даже это. А вообще, вы можете глянуть на это и сами:

И знаете, наверное всегда, абсолютно всегда Microsoft убивала свои устройства именно маркетингом.

Впрочем, то же самое Microsoft сделала и с наследником аксессуара.

Тот же Xbox one продавали на 100$ дороже именно из за kinect, но кому он был уже нужен? безусловно, Kinect 2.0 вышел хорошим устройством, но из за провалов его прошлой версии у пользователей сложилось о нем негативное впечатление. Поэтому одной из причин плохого старта Xbox One стал именно Kinect, который навязывали покупателю, даже не давая ему подумать, " а действительно ли нужно ему это устройство? "

Причем Microsoft делала так уже при Xbox 360, поскольку Kinect шел уже в комплекте с Xbox 360 Slim, из за чего приставка стоила дороже.

Kinect рекламировали как инновацию и переворот в играх, хотя Nintendo сделала этот "переворот" уже 4 года тому назад,

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

25 октября 2017 года Microsoft прекратила производство Kinect, и думаю это было правильным решением.

Читайте также: