admin / 06.11.2018

Кинект

Формат:

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

Прежде чем втыкать Kinect в компьютер, разберемся с его внутренностями. Наш экземпляр, который дали помучить ребята из xbox-zone.ru, разбирать мы не решились, да и незачем — на сайте ifixit.com опубликовано подробное пошаговое руководство о том, как разобрать его до винтика. Итак, внутри у Kinect’a находятся:

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

Драйвера

Как только Кинект появился, компания Adafruit объявила конкурс с призом в $3000 тому, кто создаст открытый драйвер для сенсора. Не прошло и недели, и денежки уже лежали на счету у победителя — Гектора Мартина, а первый работоспособный драйвер — в репозитории на github.com/OpenKinect/libfreenect. Многого он еще не умел, но главное — выводить карту глубин в окне OpenGL у него уже получалось. Драйвер продолжает развиваться, и у него есть преимущества — он распространяется под лицензией apache 2.0, которая позволяет использовать его в коммерческих проектах, и у него есть обертки для целой кучи языков (java, matlab, python, ruby).

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

Скачать его можно, например, с сайта проекта Faast. После установки загляни в диспетчер устройств — в разделе PrimeSensor должно быть три устройства: Kinect Camera, Kinect Motor и Kinect Audio. Но кроме самого драйвера, тебе потребуются библиотеки OpenNI и PrimeSense NITE.

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

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

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

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

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

названиевходногодействия порог типвыходногодействия действие

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

Kinemote

Другая программка для универсального управления. Из коробки позволяет управлять мультимедиа-центром XBMC и просто курсором мыши. Приятна она тем, что не требует калибровки и переводится в активный режим заранее выбранным жестом. Новые версии периодически выкладываются на сайте kinemote.net. А после последнего обновления в комплекте появилась еще и программа, позволяющая управлять не всем телом, а пальцами рук, правда, несмотря на все попытки, у меня она так и не заработала.

Ultraseven

Ультра Севен — это японский супергерой из конца шестидесятых, который бы мог и потеряться в памяти поколений, если бы не кинект и программка Ultraseven. Благодаря этой маленькой игрушке каждый может предстать в облике этого персонажа. Чтобы одеть его костюм, нужно встать в позу Пси. А уже оказавшись в красном облачении, можешь прикладывать руки к ушам, чтобы стрелять из смертоносного лазера и запускать бумеранг, торчащий из головы в виде ирокеза. Кроме тебя самого, отслеживаются и другие объекты в комнате — лучи будут пролетать за ближе лежащими предметами. Да, важное замечание — игрушка требует достаточно серьезной видеокарты, а на слабом железе работать будет очень нестабильно. Сайт проекта: code.google.com/p/kinect-ultra/.

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

Теперь — самое главное! О том, как написать свою программу, которая будет использовать возможности чудо-сенсора, а заодно и поддерживать бодрость тела: после часа работы за компьютером она заблокирует клавиатуру и мышь и не позволит пользоваться вновь, пока не сделаешь десять приседаний. В уже установленном тобой пакете OpenNI есть примеры проектов (как на C++, так и на C#) для Microsoft Visual Studio 2010, которые можно дописать для своих задач. Но эти примеры несколько запутаны, и будет проще воспользоваться оберткой, которую написал греческий студент Вангос Птернеас. Найти его библиотеку — Nui.Vision.dll — можно на его сайте. С ней строчек кода понадобится гораздо меньше.

Сначала создай в Visual Studio проект WPF Application и добавь в него ссылки на библиотеки OpenNi.net.dll (она находится в той папке, куда установлен OpenNI) и Nui.Vision.dll (ее можно положить в папку проекта).

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

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

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

using System.ComponentModel; // нужен для обработки в фоне
using Nui.Vision; // работа с кинектом

Затем объяви новый объект 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 };

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

// инициализируем объект и подгружаем конфиги кинекта
_skeleton = new NuiUserTracker(«SamplesConfi g.xml»);
// объявляем функцию, которая будет обрабатывать
// событие перемещения пользователя
_skeleton.UsersUpdated += new NuiUserTracker.UserListUpdatedHandler(Skeleton_UsersUpdated);

Теперь в переменной NuiUserListEventArgs.Users представлены все обнаруженные пользователи и набор координат всех распознанных частей их тел. Далее напиши обработчик события смены координат пользователя. Как только у тебя появляется ненулевое значение вертикальной координаты шеи пользователя — считай, что он готов приседать. Потом добавь две линии. Одна чуть ниже шеи, а другая — чуть выше пояса. Одним приседанием будет считаться двойное пересечение обеих линий: сначала — сверху вниз, а потом — снизу вверх. Отслеживается пересечение линий шеи (хотя визуально она где-то на груди). Такой вариант не идеальный — можно схалтурить, нагибаясь, или подойдя поближе к сенсору.

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

foreach (var user in e.Users) {
// если впервые нашлась шея
if ((topY == 0) && (user.Neck.Y !=0) )
{
// определяем положение верхней линии
topY = user.Neck.Y+20;
Line topLine = new Line { // определяем верхнюю линию
Y1 = topY,X1 = 0, Y2 = topY, X2 = 662,
Stroke = new SolidColorBrush(Colors.Red),
StrokeThickness = 4 };
// рисуем верхнюю линию на холсте
LayoutRoot.Children.Add(topLine);
// определяем положение нижней линии
bottomY = user.Torso.Y + 20;
Line bottomLine = new Line { // определяем нижнюю линию
Y1 = bottomY, X1 = 0, Y2 = bottomY, X2 = 662,
Stroke = new SolidColorBrush(Colors.Blue),
StrokeThickness = 4 };
// рисуем нижнюю линию на холсте
LayoutRoot.Children.Add(bottomLine);
// рисуем шею на холсте
LayoutRoot.Children.Add(ellipse);
}

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

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 нужно добавить еще одно пространство имен:

// работа с неуправляемым кодом, понадобится для
// блокировки клавиатуры
using System.Runtime.InteropServices;

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

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

using System.Timers;

Объявить таймер:

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. Вероятно, пройдет еще немного времени, и к этой гонке подключатся новые производители, библиотеки обзаведутся обертками для множества языков, и готовые решения войдут в повседневную жизнь, а вид человека, машущего руками перед компьютером, станет обычным делом.

Обновлено 24.09.2017

Kinect – аксессуар для консоли Xbox 360, который представляет собой видеокамеру и два сенсора, расположенных в верхней части девайса. Кинет «видит» движения пользователей в пространстве, и это позволяет играть в игры без каких-либо контроллеров (джойстиков).

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

Это упрощено. Технически кинект довольно сложный аксессуар. Здесь задействуются два сенсора:

  • Инфракрасный – он прощупывает пространства;
  • CMOS-сенсор – превращает данные в 3D проекцию.

Между этими сенсорами находится камера – она распознает лица, может делать фотоснимки и снимать видео (например, для видеочата).

Технология эта, кстати, не нова. В статье о выборе игровой приставки мы рассматривали консоль Nintendo Wii со своей уникальной технологией управления Wiimote. В свое время Nintendo Wii была революционной приставкой благодаря Wiimote и возможностью управлять приставкой телодвижениями. Сегодня Kinect – это почти тот же Wiimote, но он для консоли Xbox 360.

Наглядное представление о работе Kinect на видео ниже:

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

На видео это уже было сказано, но нам несложно повториться. Kinect – отличное дополнение для времяпровождения с друзьями. Часто интересно посоревноваться в виртуальный бокс или гонки, физически стараясь при этом победить, а не жать на кнопки джойстика. Однако самому играть в игры с помощью кинекта скучно.

Кинект-игры настолько однообразны, что надоедают примерно через 30 минут. Геймплей при этом слаб – вам нужно делать почти одни и те же движения почти всю игру, а когда приставка неправильно распознает движение (а такое бывает), это жутко раздражает.

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

В принципе, сей аксессуар неплохо расширяет стандартные возможности консоли Xbox, но не стоит ждать чего-нибудь революционного. Технология давно известна, и с момента появление Wiimote от Nintendo Wii почти ничего нового в плане игр разработчики не придумали.

Пожалуйста,

Технологии

Kinect — это горизонтально расположенная коробка на небольшом круглом основании, которую помещают выше или ниже экрана. Размеры — примерно 23 см в длину и 4 см в высоту. Состоит из двух сенсоров глубины, цветной видеокамеры и микрофонной решетки. Проприетарное программное обеспечение осуществляет полное 3-мерное распознавание движений тела, мимики лица и голоса. Микрофонная решетка позволяет Xbox 360 производить локализацию источника звука и подавление шумов, что дает возможность говорить без наушников и микрофона Xbox Live.

Это ИК изображение, показанное лазерной сеткой Kinect, используемой для расчета глубиныКарта глубины; используется для отображения: цветовой градиент от белого (ближе) до синего (дальше)

Датчик глубины состоит из инфракрасного проектора, объединенного с монохромной КМОП-матрицей, что позволяет датчику Kinect получать трёхмерное изображение при любом естественном освещении.

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

Судя по недавнему патенту Microsoft, Kinect будет способен распознавать язык жестов. Пока патент касается только ASL, но, возможно, другие языки будут добавлены позже. Ожидается, что это расширит аудиторию пользователей и поможет обучать немых языку жестов. Однако, согласно официальному комментарию , эта особенность не будет включена в первую версию Kinect из-за сниженного в угоду цене разрешения камер. С другой стороны, Microsoft не отказывается от использования патента — но будет ли это улучшенная версия Kinect или отдельный продукт, пока неизвестно.

История проекта

Январь 2010. Рекламные баннеры с указанием готовности выпуска Kinect (тогда «Project Natal») на Рождество 2010

Проект Natal основан на программном алгоритме, чипе и инженерном решении израильской компании PrimeSense, впоследствии лицензированном для использования в Microsoft Kinect и Asus Xtion, и веб-камеры ZCam, выпущенной в 2000 г. фирмой 3DV Systems. ZCam является разновидностью TOF-камеры (времяпролетная камера), позволяющей получать трёхмерную видеоинформацию.

Название проект «Natal» следует традиции корпорации «Майкрософт» использовать названия городов в качестве кодовых имен. Директор проекта Алекс Кипман выбрал название бразильского города Натал, чтобы почтить страну своего происхождения и потому, что слово natal связано с рождением, так как Кипман считал, что проект увеличит число пользователей Xbox 360.

Перед E3 2010, 25 марта 2010 корпорация «Майкрософт» разослала приглашения на мировую премьеру проекта «Natal», которая прошла 13 июня в центре «Гален» (англ. Galen Center).

14 июня 2010 проект «Natal» был переименован в Kinect.

16 июня 2011 года Microsoft объявила о выпуске нового устройства Kinect for Windows, а также нового SDK beta. Коммерческая версия Kinect SDK была выпущена 1 февраля 2012 года. С этого момента оценить все преимущества нового контроллера смогли не только обладатели Xbox 360, но и пользователи обычных ПК под управлением Windows.

В октябре 2017 года стало известно, что Microsoft прекращает производство Kinect.

Использование

Компания представила линейку стартовых проектов для Kinect. В неё вошла игра по мотивам Star Wars от LucasArts, новая гоночная игра с ежом Соником Sonic Free Riders, проект от Disney под названием Disneyland Adventures, и танцевальный симулятор Dance Central от MTV Games. Кроме того, покупателям предложен спортивный сборник Kinect Sports (бокс, боулинг, пляжный волейбол, настольный теннис, футбол и легкая атлетика), аркада Kinect Adventures которая входит в комплект с контроллером (в комплекте Kinect, Xbox 360 и игра Kinect Adventures), симулятор ухода за питомцем Kinectimals и гоночная аркада Joy Ride. Владельцам Xbox 360 также обещают новый видеочат под названием «Видео сеанс Kinect»..

На выставке E³ — 2009 Майкрософт продемонстрировал несколько применений технологии:

  • Рикошет — Breakout-подобная игра, в которой используется всё тело для отбивания мячей разбивающих блоки.
  • Paint Party — в которой игрок может разбрасывать краску на стену. Игрок может выбирать цвет голосом и использовать позы тела для создания трафаретов.

Шутеры для Kinect

Игра Harry Potter and the Deathly Hallows: Part I частично адаптирована под Kinect (является отдельным режимом, а в одиночной игре можно пользоваться только геймпадом). Также, на «Игромире 2010» стало известно, что разработчики уже начали адаптировать Call of Duty под Kinect.

Примечания

  1. 1 2 3 E3: Сенсорный контроллер Microsoft назвали Kinect
  2. 1 2 «„Project Natal“ 101». Microsoft. 2009-06-01. Archived from the original on 2009-06-01. http://blog.seattlepi.com/digitaljoystick/archives/169993.asp. Retrieved on 2009-06-02.
  3. Kinect for Windows is now Available! | Kinect for Windows blog
  4. Dudley, Brier. E3: Microsoft Xbox throws down gauntlet with «Natal» controller, The Seattle Times (1 июня 2009). Проверено 1 июня 2009.
  5. 1 2 «Project Natal» 101. Microsoft (1 июня 2009). Дата обращения 2 июня 2009. Архивировано 21 января 2012 года.
  6. Wilson, Mark Testing Project Natal: We Touched the Intangible. Gizmodo. Gawker Media (3 июня 2009). Дата обращения 6 июня 2009. Архивировано 1 апреля 2012 года.
  7. Kinect Will Recognise Sign Language | Edge Magazine Архивировано 20 августа 2010 года.
  8. Microsoft says Kinect won’t support sign language, downgraded cameras likely to blame — Engadget
  9. Edwards, Cliff Microsoft Moves onto Nintendo’s Motion Turf. BusinessWeek 1-2. McGraw-Hill (1 июня 2009). Дата обращения 2 июня 2009. Архивировано 1 апреля 2012 года.
  10. Wingfield, Nick (2009-05-13), «Microsoft Swings at Wii With Videocam», The Wall Street Journal (Dow Jones & Company): B1, ISSN 0099-9660, OCLC 4299067, <http://online.wsj.com/article/SB124215416209111679.html>. Проверено 2 июня 2009.
  11. Nutt, Christian Q&A: 3DV’s Barel On The Future Of Camera-Based Game Control. Gamasutra. Think Services (17 января 2008). Дата обращения 2 июня 2009. Архивировано 1 апреля 2012 года.
  12. Totilo, Stephen Why Xbox 360 New Controller Is Called ‘Natal’. Kotaku. Gawker Media (1 июня 2009). Дата обращения 2 июня 2009. Архивировано 1 апреля 2012 года.
  13. Microsoft Planning Special Event for Project Natal on June 13th Архивировано 6 мая 2010 года.
  14. E3 2009: Microsoft Press Conference Live Blog. IGN (1 июня 2009). Дата обращения 1 июня 2009. Архивировано 1 апреля 2012 года.
  15. http://xbox-club.ru/lenta/jeux/posts/igromir-2010-kinect-poligon/ xbox-club.ru: Игромир 2010. Kinect‑полигон на стенде Microsoft
  16. первые Kinect в России

FILED UNDER : Железо

Submit a Comment

Must be required * marked fields.

:*
:*