Pull to refresh
0

Новые возможности управления: Intel RealSense и GestureWorks Fusion

Reading time10 min
Views3.6K
Original author: IDZ


Мышь широко используется для управления персональными компьютерами уже свыше 30 лет. Казалось бы, сложно представить себе мир с компьютерами без мышей и клавиатур, но методики взаимодействия с компьютерными системами постоянно развиваются. Потребителям нужна свобода управления системами и приложениями с помощью более интуитивного способа выражения. К счастью, эту концепцию теперь несложно осуществить: достаточно иметь персональный компьютер потребительского уровня. Управление с помощью жестов достаточно интенсивно развивается в области игр, а технология Intel RealSense — одна из передовых разработок в этом направлении. Интеграция управления жестами в настольные ПК была вопросом времени.

В этом примере описываются решение американской компании Ideum — программа GestureWorks Fusion — и использование многорежимного ввода для создания мощной и интуитивной системы, способной интерпретировать жесты и голосовые команды. Показано, как разработчики Ideum использовали Intel RealSense SDK и новый режим Cursor, позволяющий им быстро и удобно взаимодействовать с традиционными приложениями, разработанными для клавиатуры и мыши. Кроме того, в статье описываются проблемы, с которыми столкнулись проектировщики и разработчики, и описываются подходы к решению этих проблем при помощи сочетания технологий Intel и Ideum.

Представляем GestureWorks Fusion


GestureWorks Fusion — это приложение, использующее камеру Intel RealSense SR300 для получения многорежимного ввода, например жестов и голосовых команд. В первоначальной версии этого программного продукта пользователи могут интуитивно управлять работой веб-сайтов для воспроизведения поточного видео, таких как YouTube *. Используя традиционные элементы управления графического пользовательского интерфейса, пользователи могут воспроизводить, приостанавливать, перематывать видео, не дотрагиваясь до мыши, клавиатуры и экрана. Благодаря прямой обратной связи система очень удобна в использовании и освоении.


GestureWorks Fusion дает возможность удобно и интересно использовать веб-сайты поточного видео, например YouTube, используя для управления интуитивные голосовые команды и жесты, если система оборудована камерой Intel RealSense SR300.

Камера Intel RealSense SR300 является усовершенствованием камеры Intel RealSense F200, которая в свое время была одной из первых и самых компактных камер со встроенными модулями съемки двухмерного изображения и глубины. Как и в модели F200, в камере Intel RealSense SR300 реализована возможность съемки цветного изображения высокой четкости с разрешением 1080p и расширенные возможности трехмерной съемки, причем увеличена допустимая дальность действия. Вместе с микрофоном эта камера является идеальным решением для отслеживания головы и рук, а также для распознавания лица. «В камере Intel RealSense SR300 нас привлекает то, что эта камера может делать все это одновременно, очень быстро и исключительно надежно», — поясняет Пол Лейси (Paul Lacey), технический директор компании Ideum и руководитель группы разработки GestureWorks.

Решение GestureWorks Fusion опирается на возможности и наработки двух существующих продуктов компании Ideum: GestureWorks Core и GestureWorks Gameplay 3. GestureWorks Gameplay 3 — это приложение для Microsoft Windows *, обеспечивающее сенсорное управление в популярных играх на ПК. Пользователи могут создавать собственные сенсорные элементы управления, обмениваться ими с другими пользователями или загружать элементы управления, созданные сообществом.

GestureWorks Core — это система многорежимного взаимодействия, проводящая полный трехмерный анализ жестов головы и рук и поддерживающая взаимодействие с помощью мультисенсорного ввода и голоса. В GestureWorks Core SDK представлено свыше 300 готовых жестов и поддерживаются наиболее распространенные языки программирования, в том числе C++, C#, Java * и Python *.

Изначально программа GestureWorks Fusion была разработана для работы с Google Chrome * и Microsoft Internet Explorer * под управлением Microsoft Windows 10. При этом предполагается, что GestureWorks Fusion будет работать с любыми системами, оборудованными камерой Intel RealSense. Компания также планирует развить свою систему, чтобы она смогла работать с широким набором приложений, в том числе с играми, офисными приложениями и программами для презентаций.

Проблемы и решения


Специалисты Ideum столкнулись с несколькими проблемами, стремясь сделать решение GestureWorks интуитивным и удобным в использовании, особенно для новых пользователей. Разработчики уже обладали опытом создания мультисенсорных столов и стеновых панелей для общественных учреждений и знали, что пользователей раздражает, если техника работает не так, как они ожидают. Опираясь на этот опыт, проектировщики решили сделать жесты как можно более простыми и сосредоточиться на наиболее привычном поведении.


В GestureWorks * Fusion используется простой набор жестов, напрямую связанных с пользовательским интерфейсом приложения; реализуется доступ к популярным существующим приложением без использования традиционного или сенсорного интерфейса.

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

Более того, для интерфейсов такого типа важна возможность интуитивно включать и отключать управление при помощи жестов. Человек интуитивно понимает, какие жесты являются значимыми и в каких обстоятельствах. Приложению, в отличие от человека, для анализа жестов требуется контекст. В GestureWorks Fusion достаточно поднять руку в поле зрения камеры, чтобы включить интерфейс управления с помощью жестов. Если рука выходит из поля зрения камеры, интерфейс жестов исчезает; такой подход аналогичен отображению дополнительной информации при наведении указателя мыши.

Сам по себе многорежимный ввод связан с определенным проблемами программирования, повлиявшими на архитектуру и реализацию программ Ideum. Например, в приложении Ideum для каждого жеста предусмотрена голосовая команда, из-за чего могут возникать конфликты. «Многорежимный ввод нуждается в тщательной проработке для достижения успеха», — поясняет Лейси.

Не менее важным фактором оказалось и время отклика, оно должно соответствовать уже существующим стандартам, заданным для мышей и клавиатур (в противном случае резко возрастает трудоемкость всех операций для пользователя, которому приходится постоянно корректировать ввод). Это означает, что время отклика должно быть не более 30 мс, а в идеале — 6 мс. Этот показатель Лейси называет «Святым Граалем взаимодействия человека и компьютера».

И наконец, разработчики Ideum столкнулись с проблемой индивидуальной настройки. В приложении GestureWorks Fusion настройка по большей части осуществляется неявно, «за кадром». «Система автоматически адаптируется и изменяется, постепенно повышая удобство работы по мере использования продукта», — поясняет Лейси.

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


Разработчики получают доступ к возможностям камеры Intel RealSense SR300 посредством пакета Intel RealSense SDK, который представляет собой стандартный интерфейс для обширной библиотеки алгоритмов обнаружения и распознавания шаблонов. Эти алгоритмы включают ряд полезных функций, таких как распознавание лица, распознавание жестов и речи, переработку текста в речь.

Система разделена на набор модулей, при помощи которых разработчики могут сосредоточиться на различных аспектах взаимодействия. Некоторые компоненты, такие как интерфейс SenseManager, обеспечивают координацию общих функций, в том числе отслеживание лица и рук, и управляют конвейером многорежимного управления, включая управление вводом-выводом и обработкой. Прочие элементы, такие как интерфейсы Capture и Image, позволяют разработчикам отслеживать работу камеры и работать с отснятыми изображениями. Интерфейсы HandModule, FaceModule и AudioSource предоставляют доступ к отслеживанию лица и рук, к звуковому вводу.

Intel RealSense SDK упрощает интеграцию благодаря поддержке множества стилей и методик написания программного кода. Предусмотрены оболочки для нескольких распространенных языков программирования, платформ и игровых движков, C++, C#, Unity *, Processing и Java. В Intel RealSense SDK также обеспечивается ограниченная поддержка браузерных приложений с JavaScript *. Пакет Intel RealSense SDK упрощает реализацию сложных алгоритмов взаимодействия человека с компьютером; благодаря этому пакету разработчики могут сосредоточиться на повышении удобства пользователей, а не на написании кода алгоритмов распознавания жестов и речи.

«Благодаря решениям Intel значительно снижается стоимость разработки, — отмечает Лейси. — Технологии Intel принимают на себя важную часть работы, они гарантируют ввод и распознавание жестов, что существенно упрощает задачи разработчиков, дает им возможность с уверенностью заниматься новыми проектами по взаимодействию между человеком и компьютером».

Работа над решением


При создании GestureWorks Fusion разработчики Ideum применили ряд новых методик. Рассмотрим, к примеру, проблему определения фокуса пользователя. Для устранения этой проблемы было решено использовать новый режим Cursor, впервые появившийся в Intel RealSense SDK 2016 R1 для Windows. В режиме Cursor доступен быстрый и точный способ отслеживать одну точку, которая соответствует общему положению руки. Благодаря этому система получает возможность поддерживать небольшой набор жестов, таких как щелчки, открытие и закрытие ладони, вращение в любую сторону. В режиме Cursor проблема фокуса пользователя решена: система интерпретирует ввод жестами таким же образом, как ввод мышью.


Используя встроенный режим Cursor в Intel RealSense SDK, разработчики могут без труда имитировать распространенные действия по управлению рабочим столом, например щелчок мыши.

Используя эти жесты, пользователи могут с высокой точностью и уверенностью перемещаться в приложении и управлять его работой «на весу», не прикасаясь к клавиатуре, мыши и экрану. Режим Cursor помогает и в других областях. «Мы обнаружили, помимо прочего, что не все жестикулируют одинаково», — заявил Лейси. Режим Cursor помогает сопоставлять схожие жесты с одним и тем же контекстом, что способствует повышению общей надежности работы.

Разработчики также подчеркнули простоту внедрения режима Cursor в существующие прототипы, что позволило выпустить новые версии GestureWorks Fusion всего за несколько часов: потребовалось добавить лишь несколько строк кода. Например, в GestureWorks режим Cursor используется для получения координат изображения указателя и для синтезирования событий мыши, как показано в следующем фрагменте кода.

// Get the cursor image coordinates
PXCMPoint3DF32 position = HandModule.cursor.QueryCursorPointImage();

// Synthesize a mouse movement
mouse_event (
   0x0001,
                                   // MOUSEEVENTF_MOVE
   (uint)(position.x previousPosition.x),     // dx
   (uint)(position.y previousPosition.y),     // dy
   0,
                               // dwData flags empty
   0                                          // dwExtraInfo flags empty
};

...


// Import for calls to unmanaged WIN32 API
[DllImport("user32.dll", CharSet = CharSet.Auto,
   CallingConvention = CallingConvention.StdCall)]

public static extern void mouse_event(uint dwFlags, uint dx, uint dy,
   uint cButtons, int dwExtraInfo);

После этого можно быстро определить, в каком окне находится фокус, с помощью стандартного API Windows.

// Get the handle of the window with focus

IntPtr activeWindow = GetForegroundWindow();

// Create a WINDOWINFO structure object

WINDOWINFO info = new WINDOWINFO(); GetWindowInfo(activeWindow, ref info);

// Get the actiive window text to compare with pre-configured controllers
StringBuilder builder = new StringBuilder(256);
GetWindowText(activeWindow, builder, 256);

...

// Import for calls to unmanaged WIN32 API
[DllImport("user32.dll")]

static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]

static extern int GetWindowText(IntPtr hWnd, StringBuilder builder,
   int count);

В режиме Cursor отслеживание работает вдвое быстрее, чем отслеживании всей руки, при этом вдвое ниже потребление электроэнергии. «Удобство использования — это формирование ожидаемых результатов как можно более предсказуемым образом, — поясняет Лейси. — Когда достигнут очень высокий уровень уверенности в жестах, это позволяет сосредоточиться на доработке других областей взаимодействия с пользователями; это также способствует снижению стоимости разработки и позволяет добиться более значительных результатов, затратив меньше ресурсов».

Для поддержки многорежимного ввода в GestureWorks используется API распознавания речи корпорации Майкрософт (Microsoft SAPI), содержащий компоненты, отсутствующие в Intel RealSense SDK, например частичные гипотезы. Это позволяет сопровождать каждый жест соответствующей голосовой командой, как показано в следующем фрагменте кода.

IspRecognizer* recognizer;
ISpRecoContext* context;

// Initialize SAPI and set the grammar

...


// Create the recognition context
recognizer>CreateRecoContext(&context);

// Create flags for the hypothesis and recognition events
ULONGLONG recognition_event = SPFEI(SPEI_RECOGNITION) |
   SPFEI(SPEI_HYPOTHESIS);

// Inform SAPI about the events to which we want to subscribe context>SetInterest(recognition_event, recognition_event);

// Begin voice recognition
<recognition code …>

Для распознавания намерений пользователей применяется распараллеливание, что позволяет взаимодействовать и предоставлять обратную связь практически одновременно при скорости 60 кадров в секунду. «Эффективное использование многопоточной обработки дало нам возможность снизить время реагирования, — заявляет Лейси. — Многопоточность расширила наши возможности, мы смогли добиться результатов, в осуществимости которых мы даже не были уверены, причем с поддержанием низкого уровня задержек».

Разработчики Ideum также постарались полнее описать и формализовать взаимодействие на основе жестов, разработав расширенный XML-сценарий конфигураци, который назвали языком разметки жестов — Gesture Markup Language (GML). Используя GML, удалось создать полную библиотеку жестов, которую можно использовать для решения проблем взаимодействия между человеком и компьютером. Благодаря этому разработчикам удалось избежать чрезмерной сложности алгоритмов распознавания жестов, поскольку диапазон ввода при отслеживании движений и мультисенсорном управлении может охватывать тысячи разновидностей.

«Влияние многорежимного взаимодействия вместе с камерой Intel RealSense можно описать одним словом: контекст, — отметил Лейси. — Мы получаем возможность распознавать новый уровень контекста, открывающий принципиально новые возможности взаимодействия человека с компьютером».

Дальнейшие действия


Разработчики Ideum планируют развивать GestureWorks Fusion, добавить поддержку дополнительных приложений, в том числе офисных пакетов, графических приложений и систем автоматизированного проектирования, в которых для управления виртуальными объектами будут использоваться трехмерные жесты. Приложение GestureWorks может также работать на планшетах, поддерживающих технологию Intel RealSense, в домашних развлекательных системах и даже в автомобилях, а также вместе с другими технологиями — в решениях, резко отличающихся от традиционных настольных ПК и ноутбуков.

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

«В ходе работы над GestureWorks Fusion нам удалось обнаружить новые способы взаимодействия в современной среде, — поясняет Лейси. — Впрочем, вне зависимости от среды должна быть возможность просто управлять устройством с помощью жестов и речи и выбирать нужные последовательности действий, не сталкиваясь с необходимостью управлять устройством традиционным образом, как компьютером».

Ресурсы


Посетите сайт Intel Developer Zone, чтобы приступить к работе с технологией Intel RealSense.
Узнайте больше о компании Ideum, разработавшей GestureWorks.
Загрузите пакет Intel RealSense SDK.
Tags:
Hubs:
+10
Comments1

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева