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



Миша широко використовується для управління персональними комп'ютерами вже понад 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);

Після цього можна швидко визначити, в якому вікні знаходиться фокус, з допомогою стандартного Windows API.

// 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.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.