Realsense sdk что это
Intel RealSense с точки зрения разработчика
У любой современной технологии, в том числе и у Intel RealSense, есть две стороны. Первую, наружную, видит потребитель. В большинстве случаев она яркая, красочная, привлекающая своей новизной. Обратную, изнаночную сторону разработки перспективных идей видят только люди, непосредственно их применяющие. Это территория напряженного труда, проб и ошибок, но и видят разработчики гораздо больше, и мнение их намного авторитетнее.
Долго-долго вынашивал я идею поговорить о том, что представляет из себя технология RealSense изнутри, почему она именно такая, а не иная, об ее недостатках и достоинствах с компетентным специалистом. И вот – ура! – один из крупнейших российских специалистов по RealSense Константин cappasity Попов согласился ответить на мои вопросы.
Идея перцептивного управления витает в воздухе уже давно, первые попытки реализации относятся еще к 2000-м годам. Почему именно сейчас появилась возможность воплотить ее в жизнь?
Свое первое знакомство с подобным управлением я начал еще с игр для PlayStation 2. Основной проблемой была точность взаимодействия – например, управление интерфейсом было крайне неудобным из-за длинного отклика. Самую удачную реализацию я увидел благодаря первому Kinect, созданному на базе технологии от компании PrimeSense. Решение было действительно удобным, и, наконец-то, можно было удобно управлять играми). Далее на рынок вышла Leap Motion, и вот теперь мы видим RealSense и то, как технология перешла от игр к более серьезному применению.
Насколько я вижу ситуацию, всегда было две проблемы: а) техническая б) маркетинговая. С технической точки зрения нужно было иметь дешевую камеру, которая обладала бы достаточной точностью для моментального отклика на действия пользователя. То есть нужно было иметь большой FPS, как можно меньше шумов (чтобы снизить нагрузку на пост-обработку данных) и карту глубины с разрешением больше чем VGA. PrimeSense смогли сделать идеальный продукт, и у них до сих пор есть последователи типа Structure.IO, которые продают сенсоры на базе чипов PrimeSense. Но, увы, компания Apple купила PrimeSense и закрыла доступ к этим камерам и дальнейшую поддержку разработчиков. Вторая проблема – минимальная дистанция. RealSense может определять положение рук (предоставлять данные по глубине) на расстоянии в два раза более бликом, чем PrimeSense, — и это просто замечательно. Третья проблема – удобство и функционал SDK. Вот здесь Intel обошли как OpenNI2, так и Microsoft. Кроме базового функционала есть множество плюшек, которые полезны разработчику. Intel подкупает разработчика тем, что помимо нового управления дает еще и функционал по распознаванию речи, распознаванию эмоций, определению головы и лица, сегментации фона и так далее. А это стимулирует!
Теперь перейдем к маркетинговой составляющей. Что мы (мы – команда Cappasity) всегда не любили, так это тратить деньги на новые технологии, прикручивать их и потом не видеть прироста пользователей. Мы готовы прикрутить что-нибудь ненужное, если нам за это заплатят. Но, как я знаю, большинству разработчиков никто не платит за интеграции, а рассказывают лишь про великие возможности в далеком будущем. В свое время мы прошли и через Razer Hydra, и через контроллер Falcon, и пр. И вот тут Intel делает очень правильный шаг – они всем говорят, что RealSense – это устройство, а не отдельная камера. То есть мы подразумеваем, что эта камера будет встроена в новые ультрабуки, и, следовательно, становится понятно, кто будет пользователем нашего продукта – это обычные люди, которые покупают ультрабуки в том же магазине электроники Best Buy. А вот разрабатывая, например, под Kinect 2, мы не видим своих клиентов – их приходится создавать самостоятельно, фактически стимулируя продажи устройств Microsoft.
То есть Intel стали первыми, кто начал успешно выстраивать экосистему вокруг технологии RealSense, и поэтому мы бросили все и ушли с головой в поддержку Intel с ее устройствами. Мы видим реальные деньги, а это лучший стимул.
В каком направлении движется RealSense? Какова главная цель этой технологии?
Основная цель – дать возможность нового типа коммуникации и взаимодействия с окружающим миром. В SDK уже есть базовый функционал по работе с определением рук, головы, поиска лица, распознавания эмоций, базовые функции для сегментации данных, базовые функции для сканирования. Сейчас активно продвигается новая камера – R200, которая уже скоро будет в планшетах и мобильных устройствах. Она обладает большей дальностью, с помощью этой камеры можно делать 3D фото, намного удобнее создавать 3D модели окружающего мира. Я считаю, что нам следует ждать дополнительного функционала, которого пока не хватает в RealSense SDK. Было бы здорово, если бы Intel включили в него возможность определения скелета человека и сегментацию для людей, то есть базовый функционал из Kinect 2 SDK. Уверен, что можно ожидать серьезного шага в сторону дополненной реальности, поскольку технология Metaio недавно была куплена компанией Apple (и с конца текущего года закроют доступ к этой технологии), и теперь фактически остается только Vuforia SDK (Qualcomm). А для PC поляна совсем пустая. Открыт вопрос и по поводу виртуальной реальности, где как раз работа с руками RealSense может стать способом взаимодействия пользователя с окружающим пространством. Сложно представить, сколько ресурсов выделено у Intel на развитие SDK, но мы наблюдаем за разработкой очень сильного SDK, и это здорово!
Какие проблемы не решены в текущей реализации RealSense, какие проблемы не могут быть решены принципиально?
Текущие проблемы связаны с принципом работы IR камер. IR камеры боятся солнца, черного цвета, блестящих и прозрачных поверхностей. Проблемы эти характерны для всех камер подобного типа, и Intel здесь не могут стать волшебниками, если, конечно, не создадут принципиально новую технологию, где бы недостающие данные получались бы путем стерео сопоставления данных с двух цветных камер 😉
Если сравнивать F200 и R200, то последняя уже не так боится темных волос. Подробнее рассуждать по поводу R200 я бы пока не стал, так как железо все же сырое, и мы работаем с альфа версией прошивки. Опять же, я сравниваю с точки зрения применения камеры для 3D сканирования – возможно, для нужд систем управления все хорошо и замечательно.
Мне не нравится качество текущей RGB камеры, и как она настраивается на освещение, но я слышал, что планируется улучшить камеру, и, возможно, некоторые OEM будут использовать свою камеру для RGB канала.
Есть ли конкуренты у RealSense, в каком состоянии они находятся сейчас?
Для близких дистанций есть только Leap Motion. Остальное все на любительском уровне. Но Leap Motion – это, опять же, отдельная камера.
С точки зрения интеграции в устройства, есть Google-проект Project Tango, который все это время был скорее мертв, чем жив из-за проблем с производительностью и обладает значительно более слабым по техническим характеристикам железом. Однако месяц назад прошел анонс по поводу их сотрудничества с компанией Qualcomm, и это вселяет оптимизм. Тем более, что Qualcomm плотно работает с компанией M4D, которая обещает выпустить свои планшеты с 3D камерами. Но я бы сказал, что мы имеем дело с прототипами, которые пока еще далеки от выхода на рынок.
Если говорить об отдельных камерах, то я видел клон PrimeSense – Orbbec. Пока мы еще не получили семплы их камер, и мне сложно судить относительно их SDK — обычно все компании красиво заявляют свои продукты, но качество работы функционала нужно оценивать хотя бы на семплах. Orbbec — китайский дешевый сенсор, и я думаю, он найдет своего пользователя. Да, он совместим с OpenNI2, и если будет поддержка Linux, какое-нибудь комьюнити вокруг него соберется.
Неплохой SDK у Structure.io, но мне непонятно, что будет у них дальше, ведь складские запасы чипов PrimeSense, какими бы значительными ни были, рано или поздно закончатся.
Чуть не забыл про Kinect 2, который мог бы победить в номинации «самая большая внешняя камера». Устройство хорошее, но если RealSense сделает поддержку Human Tracking для R200, то поддержка Kinect 2 потеряет какой-либо смысл. R200 уже сейчас дешевле Kinect 2, и не требует огромного блока питания. К тому же, Kinect 2 для Windows перестали продаваться, и можно купить только Kinect 2 для Xbox One и переходник. Это наталкивает на мысль, что тема массового использования устройства не пошла.
Так что с конкурентами пока не густо. Для Intel теперь важно не проиграть главную битву за мобильные устройства.
Реально ли создание общего стандарта (например, на основе RealSense) и консорциума компаний для популяризации и развития перцептивных технологий?
С точки зрения программирования, все реально, и никто, например, не мешал (кроме Apple) поддержать OpenNI2, который был хорошо сделан и задумывался как стандарт для работы с 3D сенсорами. Но крупным компаниям всегда сложно договориться, и пока что я слабо верю, что нас ждет некий стандарт OpenSense 😉 А было бы здорово! Например, сейчас в нашем SDK уже целых три ветки кода, что усложняет поддержку кода.
Насколько RealSense интересен для потребителя? Готов ли пользователь сейчас отказаться от традиционных интерфейсов в пользу перцептивных?
Это зависит от производителей софта. Пока они не предложат новые удобные реализации интерфейсов, пользователи будут пользоваться традиционными способами взаимодействия. Но мы видим, что Microsoft продвигает тему голограмм, и, разве что, только самый ленивый сейчас не занимается виртуальной реальностью — я уверен, что в ближайший год будет происходить адаптация пользователей под новые интерфейсы.
С точки зрения потребителя, который покупает ультрабук, совсем неплохо получить за те же деньги еще и 3D камеру. Пока для многих потребителей это останется игрушкой, но, например, наши потенциальные клиенты получат действительно настоящий инструмент для работы с 3D объектами. И я вижу, что и другие компании нашли интересное и полезное применение 3D камер. Производители игр, стараниями Intel, начинают обращать внимание на возможность делать те же аватары и добавлять новые элементы управления, в том числе и голосовое. Экосистема не выстраивается за один год, и Intel предстоит большая и сложная работа.
Насколько удобен RealSense SDK сейчас, что разработчики ждут от него в будущем?
Я видел на форумах несколько запросов о поддержке Linux, так как ребята, работающие с роботами, любят ROS. Многие ждут и части функционала из опенсорсного PCL SDK, кто-то хочет OpenCL оптимизацию и больше бесплатных алгоритмов компьютерного зрения 😉 Но последнее — уже из разряда «плюшек».
На мой взгляд, не повредили бы небольшие фреймворки для популяризации SDK. Я, опять же, на все смотрю через призму своей работы – 3D сканирования, работы с мешем и так далее. Когда мы выступали на GDC 2015, многие посетители нашего стенда спрашивали о готовом SDK для аватаров. Многие разработчики ленивы или не обладают должными знаниями, чтобы решать такие вещи самостоятельно. Они ждут поддержку в Unity, чтобы была интеграция по одному клику).
Также все ждут мобильных платформ. Много вопросов про Windows 10 tablets. Вот когда это все будет на рынке, тогда и появятся новые задачи и пожелания. Сейчас же все уже очень хорошо и не сыро. RealSense R3 SDK сделал существенный шаг по сравнению с R2.
Есть ли перспективы у RealSense, каким будет его распространение в ближайшее время?
Я жду интеграции R200 в мобильные устройства. Если что-то пойдет не так, то в любом случае останется рынок PC с ультрабуками и планшетами на Windows 10. Так что я ожидаю, что рынок будет расти, но темп роста пока является темой для обсуждения. Ждем CES 2016 😉
Использование камеры Intel RealSense 3D с платой Intel Edison
В статье мы рассмотрим, как сделать совместное использование платы Intel Edison и камеры RealSense 3D. Мы создадим два приложения, одно использует камеру Intel RealSense 3D для анализа жестов и плату Intel Edison для переключения светодиода на плате. Второе приложение использует плату Intel Edison для получения данных с температурного датчики и Intel RealSense для синтезирования голоса, чтобы проговорить информацию о температуре.
Сейчас, в мире приходящим на смену эре мобильных телефонов, мы видим появление умных устройств соединенных с вещами, которые мы не могли и представить. Строится мир, названный «Интернет вещей», или кратко IoT (Internet of Things). Устройства IoT находятся всё ещё в младенческом состоянии, начиная с часов с шагомером и заканчивая автомобилем, который включается с телефона. Интересная особенность IoT-устройств заключается в том, что они могут быть оборудованы разнообразными дешёвыми сенсорами, которые могут считывать температуру, влажность, пульс и так далее. Таких сенсоров не было в вашем телефоне и компьютере, поэтому сейчас эти данные становится такими доступной первый раз за всё время.
А с платформой Intel Edison и процессором Intel Quark можно легко построить прототип устройства, которое собирает информацию с сенсоров, и в итоге создать инновационный продукт.
Другая инновация от Intel это технология Intel RealSense. С помощью камеры RealSense 3D и SDK, приложения могут выполнять распознавание жестов, анализ лиц, отделение фона, распознавание голоса, синтез голоса и многое другое. Это как будто у нас есть некий супер сенсор, который может получать много разных данных. Используя эту технологию вместе с платой Intel Edison, мы можем построить много креативных приложений, которые одновременно и полезные и интересные.
Что такое Intel RealSense SDK?
Обычное приложение, которое может быть разработано с помощью RealSense, включает общение с эффектом присутствия, игры, естественное взаимодействие, интерактивный сюжет, и технологию Intel Capture and Share, но это всего лишь небольшая часть всех возможностей.
Больше информации по технологии Intel RealSense можно получить на сайте Intel в обзоре технологии.
Внимательный взгляд на аппаратную часть
Плата Intel Edison одна из первых в серии дешевых компьютерных платформ общего назначения. Она была разработана для быстрого и простого прототипирования IoT-устройств, предлагая возможность последующей коммерческой разработки.
Плата Intel Edison построена на базе двухядерного чипа Intel Atom SoC, изготовленного по технологии 22 нм и работающего на частоте 500 МГц. Она поддерживает 40 GPIO (входы-выходы общего назначения) и включает 1 Гб LPDDR3 ОЗУ, 4 Гб EMMC флеш-памяти, двухдиапазонный Wi-Fi, Bluetooth и всё это при небольшом размере.
Она работает под управление полного ядра Linux. И если вам надо достичь большей производительности, то вы можете писать на аппаратном уровне Linux.
Версия Linux также содержит реализацию Arduino как обычной Linux программы. Проще говоря, вы можете писать обычные Arduino скетчи и запускать их на плате. И это именно то, что мы собираемся сделать.
Узнать больше по плате Intel Edison можно здесь.
Arduino-адаптер
Arduino-адаптер нужен для двух целей. Во-первых, он позволяет сделать платформу для прототипирования больше в размере, что упрощает доступ к пинам ввода-вывода. Во-вторых, он делает платформу совместимой с Arduino. Это значит, что мы можем использовать совместимые с Arduino шилды на плате Intel Edison. На следующей картинке модуль Intel Edison установлен в Arduino-адаптер.
Набор Grove Starter Kit Plus
Полное название набора «Grove Starter Kit Plus – Intel IoT Edition». Изначально он был разработан для платы Intel Galileo gen 2. К счастью, он полностью совместим и с платой Intel Edison через Arduino-адаптер.
Набор разработан, чтобы упростить работу и прототипирование устройства с сенсорами, актюаторами и шилдами. Он содержит Arduino совместимый шилд со стандартными четырехпроводными разъемами. Эти разъемы подключены к портам ввода-вывода, которые с помощью поставляемых в комплекте проводов можно легко подключить к сенсорам и актюаторам из набора. Это значит, что вы можете создать свой проект без кучи проводочков, подтягивающих резисторов и даже не заботится о полярности подключения.
Вот более подробное описание набора.
У компании Seeed Studios, которая создала набор «Grove Kit» есть много полезной документации. Я рекомендую скачать «Sketchbook Starter». Можете также добавить себе в закладки Wiki-страницу:
Камера Intel RealSense 3D F200
Камера Intel RealSense 3D бывает внешней или встроенной, и обе эти модификации созданы для игрового взаимодействия, развлечения, фотографии и создания контента. 3D камера это сложный сенсор, который фактически является частью IoT (не зря в его названии есть слово Sense). Для своей работы камера требует USB 3.0 и процессор Intel Core 4-го поколения (Haswell) и 8 Гб свободного места на диске.
Камера имеет цветной HD сенсор разрешением 1080p и сенсор глубины, который дает компьютеру 3D зрение и многостороннее восприятие. Вы также можете купить набор разработчика.
Мини ПК – Intel NUC на основе процессора Intel Core 4-го поколения
Миникомпьютер Intel NUC (Next Unit Computing) это опциональное устройство, которое может быть использовано как центральный управляющий блок для камеры RealSense 3D и модуля Intel Edison. Он может выполнять дополнительные функции, такие как получение и хранение данных из облака с их последующим анализом. Конечно, он не является необходимым для разработки, так как обычную камеру (не Intel RealSense 3D) можно подключить непосредственно к плате Intel Edison по USB кабелю. Тем не менее, если вы его используете, то информация, которую вы получаете с камеры, может быть обработана и послана на плату Intel Edison, чтобы воспроизвести сигнал, включить светодиоды, моторы и так далее. Информация, которая получена с сенсоров платой Intel Edison, может быть послана на мини ПК Intel NUC, чтобы, например, включить синтезирование голоса с использованием RealSense SDK.
Так как для работы RealSense камеры необходим USB 3.0, 8 Гб памяти и процессор Intel Core 4-го поколения, то выбор Intel NUC является наиболее простым решением. Дополнительным преимуществом является его пользовательский интерфейс, так как наличие HDMI порта позволяет использовать его как обычный компьютер. Если у вас нет компьютера с нужным программным обеспечением, то Intel NUC может быть доступной возможностью его иметь.
Больше информации о Intel NUC можно найти в его обзоре.
Установка программного обеспечения и подготовка к кодированию
Мы будем работать с двумя примерами:
Среда разработки Arduino IDE для платформы Intel IoT
Вам надо скачать специальную версию Arduino IDE, чтобы загружать скетчи на вашу плату. Текущая версия 1.6.0 доступна по ссылке.
Драйверы для платы Intel Edison
Еще надо скачать и установить драйверы для платы Intel Edison. Это должна быть последняя ссылка на странице под заголовком «Driver Software» (текущая версия 1.2.1). Для дополнительных инструкций используйте руководство «Getting Started Guide»:
Visual Studio
Visual Studio это замечательная коллекция инструментов и сервисов для разработчика, которые помогают создавать приложения для многих платформ. Минимально для работы Intel RealSense SDK нужен Visual Studio и Windows 8.1. Visual Studio поддерживает C, C++, VB.NET, C#, F#, M, Python*, Ruby, JavaScript* и многие другие языки. Мы будем использовать С#.
Вы можете бесплатно скачать Visual Studio Express Edition или Visual Studio Community. Коммерческая версия Visual Studio может быть получена бесплатно по программе DreamSpark для студентов и BizSpark для стартапов.
Вы можете найти больше информации про Visual Studio по ссылке. А по C# тут.
Intel RealSense SDK
Intel RealSense SDK позволяет разработчикам использовать возможности 3D с ранее описанной функциональностью. Текущая версия 4.0.0.112526 (или Gold R2 release) доступна по ссылке.
Тестирование платы Intel Edison
Установка Visual Studio и Intel RealSense SDK
Установка Visual Studio должна быть достаточно проста. А вот для установки Intel RealSense SDK потребуется подключенная 3D-камера к USB 3.0. Если у вас всё правильно установилось, то вы увидите примеры в Intel RealSense SDK Sample Browser на вашем рабочем столе, в котором вы сможете посмотреть примеры на C++ и C#. Также доступны примеры с камерой. Мы будем использовать пример «Hand Viewer».
После установки SDK, должен быть загружен «F200 Depth Camera Manager». Он находится здесь. При отсутствии менеджера камеры, примеры программы не будут правильно инициализироваться.
Пример 1. Посылка сигналов с камеры RealSense 3D на плату Intel Edison
В первом примере мы создадим простое приложение, которое использует жесты рук, чтобы послать сигналы с камеры на плату для управления светодиодами.
Код для платы Intel Edison
Сначала мы создадим конечную часть программы. Мы присоединим набор Grove к Arduino-адаптеру, возьмем светодиод (LED socket kit v1.3) и присоединим его к разъёму D2.
Соедините USB-кабелем плату Intel Edison с компьютером или мини-КП Intel NUC. Используйте диспетчер устройств Windows Device Manager, чтобы найти какой последовательный порт использует плата Intel Edison. На следующей картинке вы можете видеть, что в нашем случае это «COM16». Windows автоматически определит плату и назначит порт, когда мы подключим плату к компьютеру.
В среде разработке Arduino IDE, в меню Tools->Board мы выберем плату «Intel Edison».
И, наконец, немного попрограммируем. Так как наша плата используется как устройство вывода, то следующие несколько строк кода будут работать с последовательным портом, где 1 – включает светодиод, а 0 – выключает.
На этом мы закончили с примером кода для платы Intel Edison.
Код приложения для Intel RealSense
В примерах C# F200, есть приложение «Hand Viewer». Выберете исходный код справа и откройте папку RSSDK/FF_HandsViewer.cs. Скопируйте всю папку на рабочий стол, чтобы можно было вносить изменения в проект.
В качестве специального жеста мы будем использовать растопыренные пальцы (spreadfingers). Если захотите, вы всегда сможете переключиться на другой жест.
В файле MainForm.cs измените и добавьте следующий код. Программа относительно простая, мы просто объявляем последовательный порт и отслеживаем последний жест. Если жест изменился, то мы изменяем флаг для светодиода. В функции UpdateInfo находится пример кода, обновляющего жест пользователя. Мы можем использовать переменную status, чтобы отслеживать, когда появится жест “spreadfingers”. Когда это происходит, мы передаем на последовательный порт 1 и включаем светодиод. Когда жест закончится, мы пошлем 0, чтобы выключить светодиод.
Если всё работает правильно, нажмите кнопку запуска и поместите ладонь перед камерой. Когда пальцы будут раскрыты, светодиод должен загореться.
Пример 2. Чтение данных с платы Intel Edison и использование Intel RealSense для вывода
В этом примере мы используем датчик температуры, присоединённый к плате Intel Edison для ввода данных, и синтез голоса из Intel RealSense, чтобы данные сенсора было легче воспринимать.
Код для платы Intel Edison
Температурный датчик Temperature sensor v1.1 из набора Grove это аналоговый датчик, который мы можем подключить к разъему A0 на плате. Следующий Arduino код считывает температуру в градусах Цельсия. В программе есть задержка на 15 секунд, поэтому у модуля воспроизведения голоса есть время произнести весь необходимый текст. Вы можете изменить длительность этой задержки, если вам надо. Вы можете написать дополнительную логику, чтобы выводить предупреждения, если температура слишком высокая или слишком низкая.