Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Малюнок 1.Пріложеніе RS Joystick, котра управляє імітацією польоту в Google Earth *

В Intel RealSense SDK R5 з'явилася підтримка нової моделі камери Intel® RealSense ™ SR300. Камера SR300 - розвиток моделі на F200, в ній вдосконалений ряд можливостей і доданий новий режим роботи Hand Cursor.

Відповідно до опису в документації SDK модуль Hand Cursor повертає одну точку для положення руки, що дозволяє добитися високої точності і швидкості відстеження. Мета цього модуля - спростити роботу з елементами управління користувальницького інтерфейсу за допомогою руки за підтримки обмеженого набору жестів.

RS Joystick - програмний емулятор джойстика, описаний в цій статті. Ця програма зіставляє тривимірні дані руки, що надаються пакетом SDK, в віртуальні елементи управління джойстиком, що дає можливість взаємодії з додатками, керованими за допомогою джойстика.

Додаток RS Joystick використовує такі компоненти модуля Hand Cursor.

  • Тип Body Side: додаток повідомляє користувача про те, яка з рук управляє віртуальним джойстиком (на основі порядку від ближнього до дальнього).
  • Жест Cursor-Click: користувач може перемикати стан ВКЛЮЧЕНО / ВИМКНУТО кнопки 1 на віртуальному джойстику за допомогою жесту клацання пальцями.
  • Адаптивне відстеження точки: додаток відображає нормалізовану тривимірну точку всередині уявної «обмежувальної рамки», заданої модулем Hand Cursor, і використовує ці дані для управління віртуальним джойстиком по осях X, Y і Z.
  • Дані сповіщень: додаток використовує оповіщення Cursor Not Detected. Cursor Disengaged і Cursor Out Of Border для зміни кольору джойстика з зеленого на червоний, коли рука користувача знаходиться поза дальності дії камери SR300.

попередні вимоги

Потрібні деякі знання C # і розуміння базових дій в Visual Studio, таких як складання виконуваного файлу. Також стане в нагоді досвід додавання сторонніх бібліотек в індивідуальні програмні проекти. Втім, навіть якщо раніше ви цього не робили, труднощів виникнути не повинно, оскільки в цьому керівництві наводяться докладні інструкції необхідних дій. В системі повинна бути камера переднього огляду SR300, останні версії SDK і Intel® RealSense ™ Depth Camera Manager (DCM). Крім того, система повинна відповідати вимогам до обладнання, перерахованим тут. І нарешті, комп'ютер повинен працювати під управлінням Microsoft Windows * 10 Threshold 2.

Стороннє програмне забезпечення

У цьому проекті, крім пакета Intel RealSense SDK, використовується сторонній драйвер віртуального джойстика під назвою vJoy * і кілька бібліотек динамічного компонування (DLL). Ці програмні компоненти не входять в розповсюджуваний код, пов'язаний з цим проектом, тому відомості з установки цього драйвера пристрою наводяться нижче.

Встановіть Intel RealSense SDK

  • Intel RealSense Depth Camera Manager (SR300) v3.1.25.1077
  • Intel RealSense SDK v8.0.24.6528

Встановіть драйвер пристрою vJoy і SDK

Після установки драйвер пристрою vJoy з'явиться в розділі «Пристрої HID» в диспетчері пристроїв (див. Рис. 2).

Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Малюнок 2.Діспетчер пристроїв

Відкрийте в Windows 10 меню «Пуск» і виберіть Усі програми. Ви побачите кілька встановлених компонентів vJoy, як показано на рис. 3.

Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Малюнок 3.Меню «Пуск» в Windows

Щоб відкрити браузер за замовчуванням і перейти на сторінку завантаження, натисніть кнопку vJoy SDK.

Після завантаження скопіюйте ZIP-файл в тимчасову папку і знайдіть DLL-бібліотеки C # в папці \ SDK \ c # \ x86.

Ми додамо ці DLL-бібліотеки в проект Visual Studio після його створення (див. Опис нижче).

Створіть новий проект Visual Studio

На рис. 4 показані налаштування цього проекту.

Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Малюнок 4.Настройкі нового проекту в Visual Studio *

Натисніть кнопку ОК, щоб створити проект.

Скопіюйте бібліотеки в проект

Для створення додатків Intel® RealSense ™ на мові C # потрібні дві бібліотеки.

  • libpxcclr.cs.dll - керована DLL-бібліотека інтерфейсу C #.
  • libpxccpp2c.dll - некерована DLL-бібліотека C ++ P / Invoke.

Ще дві бібліотеки дадуть можливість додатком обмінюватися даними з драйвером пристрою vJoy.

  • vJoyInterface.dll - бібліотека API на мові C.
  • vJoyInterfaceWrap.dll - оболонка C # для бібліотеки API на мові C.

Щоб спростити структуру проекту, ми скопіюємо всі чотири бібліотеки в папку проекту.

  • Клацніть проект RsJoystick правою кнопкою миші і виберіть Додати. Існуючий елемент ...
  • Перейдіть в папку бібліотек vJoy (\ SDK \ c # \ x86) і виберіть vJoyInterface.dll і vJoyInterfaceWrap.dll. Примітка. В поле типу файлів може знадобитися вибрати Все файли (*. *). щоб DLL-бібліотеки стали видні.
  • Натисніть кнопку Додати.

Аналогічним чином скопіюйте в проект DLL-бібліотеки Intel RealSense SDK.

  • Клацніть проект RsJoystick правою кнопкою миші, виберіть Додати. Існуючий елемент ...
  • Перейдіть в папку бібліотек x86, це папка C: \ Program Files (x86) \ Intel \ RSSDK \ bin \ win32, якщо пакет SDK був встановлений в папку за замовчуванням.
  • Виберіть libpxcclr.cs.dll і libpxccpp2c.dll.
  • Натисніть кнопку Додати.

Тепер все чотири файли повинні бути видні в браузері рішень в проекті RsJoystick.

Створіть посилання на бібліотеки

Якщо необхідна бібліотека фізично скопійована в проект Visual Studio, необхідно створити посилання на керовані бібліотеки (.NET), щоб додаток могло їх використовувати. Клацніть правою кнопкою миші «Посилання» (під проектом RsJoystick) і виберіть Додати посилання ... У вікні диспетчера посилань натисніть кнопку Огляд і перейдіть в папку проекту (c: \ RsJoystick \ RsJoystick). Виберіть файли libpxcclr.cs.dll і vJoyInterfaceWrap.dll, потім натисніть кнопку Додати. Натисніть кнопку OK в диспетчері посилань.

Для правильної роботи керованих DLL-бібліотек оболонки необхідно скопіювати некеровані DLL-бібліотеки в вихідну папку проекту перед запуском програми. У браузері рішень клацніть файл libpxccpp2c.dll, щоб вибрати його. У вікні властивостей будуть показані властивості файлу libpxccpp2c.dll. Знайдіть поле Копіювати у вихідний каталог і виберіть в списку Завжди копіювати. Повторіть цей крок для файлу vJoyInterface.dll. За рахунок цього некеровані DLL-бібліотеки будуть скопійовані в вихідну папку проекту при складанні програми.

Тут може з'явитися попередження про розбіжності між архітектурою процесора, заданої для зібраного проекту, і архітектурою процесора бібліотек. Приберіть це попередження, виконавши такі дії:

  • Знайдіть посилання на диспетчер конфігурацій в списку в меню (див. Рис. 5).
  • Виберіть Диспетчер конфігурацій.
  • У вікні диспетчера конфігурацій розгорніть список, що розкривається в стовпці Платформа і виберіть Нова.
  • Виберіть x86 в якості нової платформи і натисніть кнопку OK.
  • Закрийте вікно диспетчера конфігурацій.


Малюнок 5.Діспетчер конфігурацій

На цьому етапі проект повинен бути зібраний і запущений без будь-яких помилок або попереджень. Крім того, якщо вивчити вміст вихідний папки (c: \ RsJoystick \ RsJoystick \ bin \ x86 \ Debug), ви побачите, що в неї скопійовані всі чотири бібліотеки.

Користувальницький інтерфейс

В інтерфейсі (див. Рис. 6.) Наступні подробиці:

  • Рука користувача, керуюча віртуальним джойстиком (на основі порядку доступу від ближнього до дальнього; найближча до камери рука вважається керуючої).
  • Стан ВКЛЮЧЕНО / ВИМКНУТО кнопки 1 на віртуальному джойстику (управляється за допомогою жесту клацання пальцями).
  • Еліпс, в якому відстежується відносне положення руки користувача по осях X і Y; діаметр змінюється на основі осі Z відповідно до відстанню між рукою і камерою.
  • Дані Adaptive Point по осях X, Y і Z з SDK представлені у вигляді нормалізованих значень, діапазон - від 0 до 1.
  • Кольорова рамка, колір якої змінюється з зеленого на червоний, коли рука користувача виходить за межі дальності дії камери SR300.
  • За допомогою повзунка регулюється чутливість для кожної осі.

Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Малюнок 6.Пользовательскій інтерфейс

Повний вихідний код XAML представлений в таблиці 1. Його можна скопіювати і вставити безпосередньо в код MainWindow.xaml, автоматично сформований при створенні проекту.

Таблиця 1.Ісходние код XAML: MainWindow.xaml

Вихідний код програми

Повний вихідний код програми RSJoystick на мові C # представлений в таблиці 2. Його можна скопіювати і вставити безпосередньо в код MainWindow.xaml.cs, автоматично сформований при створенні проекту.

Таблиця 2.Ісходное код C #: MainWindow.xaml.cs

Відомості про коді

Щоб код був якомога простіше, все методи укладені в один клас. Як показано в вихідному коді в таблиці 2, клас MainWindow складається з наступних методів:

  • MainWindow (): кілька приватних класів і членів-змінних оголошуються на початку класу MainWindow. У конструкторі MainWindow створюються екземпляри цих об'єктів і відбувається ініціалізація змінних.
  • ConfigureRealSense (): цей метод обробляє створення об'єкта SenseManager і роботу модуля Hand Cursor, а також налаштовує модуль Cursor.
  • Update (): згідно з описом в довідковому керівництві Intel RealSense SDK інтерфейс SenseManager може бути використаний або викликами процедур, або зворотними викликами подій. У додатку RSJoystick ми використовуємо виклики процедур в якості методики взаємодії. Вони отримують і вивільняють запуски циклів кадрів в потоці Update () незалежно від основного потоку призначеного для користувача інтерфейсу. Цей потік працює безперервно; в ньому ми отримуємо дані покажчика, жестів і сповіщень.
  • ControlJoystick (): цей метод викликається з методу Update () при виявленні руки користувача. Цьому методу передаються дані Adaptive Point разом зі станом кнопки віртуального джойстика (воно перемикається жестом CURSOR_CLICK). Дані Adaptive Point масштабируются на основі значень, отриманих від повзунків регулювання чутливості. За допомогою повзунка і розрахунку масштабування користувач може вибирати масштаб значень, переданих в метод vJoy SetAxis (). Цей метод очікує значення в діапазоні від 0 до 32 768. Якщо повзунок регулювання чутливості встановлено у максимальне положення, то відповідні дані покажчика будуть перетворені в значення в діапазоні від 0 до 32 768. При зниженні чутливості цей діапазон буде звужений для такої ж траєкторії руки. Наприклад: від 8192 до 24 576.
  • Render (): цей метод викликається з потоку Update () і використовує метод Dispatcher.Invoke () для виконання операцій з потоком користувальницького інтерфейсу. Це стосується поновлення положення еліпса на полотні і оновлення значень даних в елементах управління TextBlock.
  • sldSensitivity_ValueChanged (): цей обробник подій спрацьовує при регулюванні положення повзунків.

користування програмою

Можна перевірити роботу програми, запустивши vJoy Monitor в меню «Пуск» в Windows 10 (див. Рис. 3). Як показано на рис. 7, можна відстежувати ефекти переміщення руки вздовж трьох осей і виконання жесту клацання для перемикання віртуальної кнопки 1.

Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software

Малюнок 7.Тестірованіе додатки з vJoy Monitor

Після завантаження та установки програми Google Планета Земля ознайомтеся з інструкціями, наведеними тут. для запуску симулятора польоту. Спочатку слід знизити чутливість для осей X і Y в RSJoystick, щоб руху руки не надто сильно впливали на переміщення віртуального літака. Для осі Z необхідно встановити повзунок в максимальне положення. Трохи звикнувши, ви зможете управляти віртуальним літаком за допомогою плавних рухів руки.

висновок

У цій статті наведено просте покрокове керівництво, в якому описується створення програми-емулятора джойстика за допомогою Intel RealSense SDK і використання модуля Hand Cursor, який підтримується камерою SR300.

Про технологію Intel RealSense

Брайан Браун (Bryan Brown) - інженер по розробці програмних додатків в підрозділі Software and Services Group корпорації Intel.

Для отримання докладної інформації про можливості оптимізації компілятора зверніться до нашого повідомленням про оптимізацію.

Схожі статті