Слежение за пальцами руки с Microsoft Kinect
Недавно наконец-то вернулся к работе после летних приключений и первым же, что мне скинул мой шеф, была ссылка, про которую сейчас и пойдет речь.
Так как на данный момент один из моих проектов — это распознавание жестов с помощью камеры Kinect, анализ их и выполнение действий на вот таком роботе, то и ссылка, как вы можете догадаться, на схожую тему.
Итак, встречайте, Kinect 3D Hand Tracking или, по нашему, «Слежение за 3D позицией руки при помощи Kinect».
Что было раньше
До этого момента лично я видел подобное только вот здесь и лично у меня демка по этой ссылке так стабильно и не заработала.
К тому же если отойти от сенсора больше чем на 2 метра, следить за пальцами у нее не выходило вообще (на самом деле мои пальцы кинект терял уже на расстоянии метра полтора, но может то у меня пальцы неправильные). Правда происходило все достаточно быстро даже на моем ноуте, без использования графического процессора. Да и код открыт, в виду того, что это демо проект, который теперь включен в, не побоюсь этого утверждения, самый большой open source проект для роботики — ROS.
Но далее мы будем говорить не об этом. Представим, что нам интересно очень четко отслеживать движения пальцев на руке.
Кто все эти люди и что они написали
- моделирует полную артикуляцию руки (26 степеней свободы), выполняющую любые естественные движения;
- работает основываясь на дынных, полученных с легко доступной и широко используемой RGB-D камерой (Kinect, Xtion);
- не требует маркеров, специальных перчаток;
- дает результат со скоростью 20 fps, правда на графическом процессоре.
- не требует калибрации;
- не использует ни одну проприетарную технологию для слежения за позицией, как то Nite, OpenNI или Kinect SDK
Собственно, после уточнения, что лучше носить рукава для того, чтобы программе было проще следить за вашей рукой, они переходят непосредственно к демонстрации видео, которые я и приведу далее для тех, кому лень переходить на какие бы то ни было ссылки выше.
Kinect для Windows
Производство Kinect для Windows прекращено. Следующее поколение датчика глубины, определяющего категории майкрософт, используется в Azure Kinect DK, комплекте разработчиков с расширенными датчиками ИИ для сложных моделей компьютерного зрения и речи. Дополнительные сведения см. на веб-сайте Azure Kinect.
Kinect для Windows SDK 2.0
Создавайте классические приложения для Windows 10 или продавайте приложения UWP Kinect версии 2 в Microsoft Store, чтобы воспользоваться преимуществами уникальных функций среда выполнения Windows и расширить распространение.
Ресурсы для разработчиков
Содержимое для разработчиков
Узнайте, как реализовать различные функции Kinect для Windows и дополнительные сведения о средствах, таких как Kinect Studio, которые поддерживают ваш опыт разработки.
Учебники и документация по API
Рекомендации по человеческому интерфейсу (PDF)
Сообщество
Свяжитесь с корпорацией Майкрософт и другими разработчиками, такими как вы, на технических форумах, Facebook и Twitter, чтобы быть в курсе последних новостей и объявлений, относящихся к разработке приложений и игр для Windows.
Технический форум Kinect для Windows
Другие форумы разработчиков
Поддержка оборудования
Получите советы по устранению неполадок, сведения о гарантии и безопасности и многое другое.
Поддержка датчика Kinect для Xbox One
Поддержка датчика Kinect для Windows версии 2
Свяжитесь с нами
Инструменты и расширения
Средства разработчика Windows
Эти средства включают в себя бесплатный полнофункциональный клиент Visual Studio Community, универсальные шаблоны приложений, редактор кода, мощный отладчик, эмуляторы Windows Mobile, расширенную языковую поддержку и многое другое, готовые к использованию в рабочей среде.
Подробнее
Средства разработчика Windows
Эти средства включают в себя бесплатный полнофункциональный клиент Visual Studio Community, универсальные шаблоны приложений, редактор кода, мощный отладчик, эмуляторы Windows Mobile, расширенную языковую поддержку и многое другое, готовые к использованию в рабочей среде.
Подробнее
Надстройки NuGet и Unity Pro
Установите пакет SDK для Kinect 2.0 и используйте пакеты NuGet для улучшения платформа .NET Framework разработки. Вы также можете воспользоваться преимуществами пакетов Unity Pro для создания приложений Unity на основе Kinect.
Пакеты NuGet
Пакеты Unity Pro
Kinect для языковых пакетов Windows
Языковые пакеты позволяют добавлять распознавание речи в приложения Kinect для Windows.
Получение языковых пакетов Kinect для Windows версии 11.0
DirectX SDK
Так как windows SDK является основным пакетом SDK для разработчиков для Windows, в него теперь включен DirectX. Теперь вы можете использовать Windows SDK для создания отличных игр для Windows.
Дополнительные сведения о пакете SDK для DirectX.
Microsoft Speech Platform SDK 11
Вы можете использовать технологии и средства из пакета SDK для платформы речи 11, чтобы предоставить приложениям возможность распознавать произносимые слова (распознавание речи) и генерировать синтезированную речь (преобразование текста в речь или TTS). С помощью этого пакета SDK вы можете предоставить пользователям эффективный и естественный способ взаимодействия с вашими приложениями, дополняя использование мышей, клавиатур, контроллеров и жестов.
Microsoft Speech Platform SDK 11
Средство проверки конфигурации Kinect
Запустите средство проверки конфигурации Kinect, чтобы проверка системы на наличие проблем и убедиться, что вы используете последнюю версию драйвера для GPU.
Запуск средства проверки конфигурации Kinect
Kinect for Windows SDK. Часть 1. Сенсор
Как вам должно быть известно, Kinect – это бесконтактный контроллер, т.е. скажем в играх, вместо того, чтобы яростно стучать по клавиатуре или терзать gamepad, вы размахиваете руками и ногами и время от времени голосом даете какие-то команды. Самое время спрятать дорогие китайские вазы X века подальше!
Начинать знакомство с Kinect лучше со знакомства с самим сенсором. Это небольшая черная коробочка с тремя камерами, длиной чуть более 20 см и высотой около 5 см (не считая ножки). Один нюанс – в Kinect две камеры. И это изображение (взято из MSDN) тому подтверждение.
- IR Emitter – Инфракрасный излучатель. Да, это не камера. Его назначение испускать инфракрасные лучи, которые, отражаясь от предметов, попадают назад в сенсор, где их принимает:
- IR Depth Sensor – Инфракрасный приёмник. Собирает отраженные лучи, преобразуя их в расстояние от сенсора до объекта(ов). И таким образом строится, можно сказать, матрица расстояний — целый кадр. Максимальное разрешение 640×480 (30 fps). Если говорить о переводе мне кажется, «ИК приёмник» лучше отражает суть, чем дословный «ИК датчик глубины».
- Color Sensor – Цветная камера. Захват видео с максимальным разрешением 1280×960 (12fps). Угол обзора камеры: 43° по вертикали и 57° по горизонтали (угол обзора дальномера идентичный). Можно выбрать формат картинки: RGB или YUV.
- Microphone Array – набор микрофонов. 4 встроенных микрофона позволяют определить местоположение источника звука и направление звуковых волн. Встроенный обработчик звукового сигнала включает подавление эха и уменьшение шума.
- Tilt Motor – Коррекция наклона. Позволяет программно настраивать наклон сенсора в диапазоне ±27° по вертикали.
Другой важный аспект аппаратной части – диапазон «рабочих» расстояний, т.е. на каком расстоянии сенсор способен видеть объекты (данные дальномера). И снова картинка помогает продемонстрировать возможности Kinect.
Режим Default Range доступен как для Kinect for Windows, так и для Kinect for XBox, но Near Range доступен только для сенсора Kinect for Windows. Простой пример: для всех объектов в кадре находящихся в пределах Normal Values сенсор вернёт измеренное расстояние, но для объектов, выходящих за этот диапазон, сенсор вернёт либо ноль, либо определенную для каждого диапазона константу (зависит от заданных вами настроек). Одно из существенных отличий SDK 1.5 от 1.0 в том, что теперь в режиме Near Range можно получить информацию о сидящем человеке, это так называемый трекинг сидящей фигуры (seated skeletal tracking). Kinect отслеживает 10 точек: голову, шею и руки. Но об этом чуть позже.
Хочется обратить внимание на различия двух Kinect (XBox и Windows). Первый разрабатывался и тестировался с одним устройством – XBox. Второй же, напротив, должен работать с широким диапазоном устройств (компьютеров), поэтому его кабель короче, а специальное устройство призвано не позволить Kinect подраться с остальной USB периферией. Лицензионное соглашение позволяет использовать Kinect for Windows в коммерческих целях, а Kinect for XBox нет.
- Kinect for Windows SDK. Включает APIs и драйверы сенсора.
- Kinect for Windows Developer Toolkit. Включает Kinect Studio (полезный для отладки инструмент), Face Tracking SDK, примеры кода и документация.
- Skeletal Tracking (трекинг человеческой фигуры)
- Face Tracking (трекинг лица)
- Speech Recognition (распознавание речи)
- Kinect for Windows SDK
- Руководство разработчика. Можно найти примеры на C# (managed code) и на C/C++ (unmanaged code)
- Kinect for Windows Quickstart Series. Серия видео-уроков о возможностях Kinect (весьма полезная для знакомства с устройством).
- Near Mode: What it is (and isn’t). Статья о near mode, хотя написана в преддверии SDK 1.0, но полезна в плане разоблачения некоторых мифов.
- Форумы Kinect for Windows SDK. Здесь можно обратиться за советом к экспертам.
При подготовке материала использовались источники:
https://habr.com/ru/articles/151258/
https://learn.microsoft.com/ru-ru/windows/apps/design/devices/kinect-for-windows
https://habr.com/ru/articles/150955/