![Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software (створення) Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software](https://images-on-off.com/images/129-130/sozdanievirtualnogodzhoystikaspomoshyumo-4aafa7fd.png)
Малюнок 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 (джойстика) Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software](https://images-on-off.com/images/129-130/sozdanievirtualnogodzhoystikaspomoshyumo-94e21edd.png)
Малюнок 2.Діспетчер пристроїв
Відкрийте в Windows 10 меню «Пуск» і виберіть Усі програми. Ви побачите кілька встановлених компонентів vJoy, як показано на рис. 3.
![Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software (створення) Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software](https://images-on-off.com/images/129-130/sozdanievirtualnogodzhoystikaspomoshyumo-fa7db748.png)
Малюнок 3.Меню «Пуск» в Windows
Щоб відкрити браузер за замовчуванням і перейти на сторінку завантаження, натисніть кнопку vJoy SDK.
Після завантаження скопіюйте ZIP-файл в тимчасову папку і знайдіть DLL-бібліотеки C # в папці \ SDK \ c # \ x86.
Ми додамо ці DLL-бібліотеки в проект Visual Studio після його створення (див. Опис нижче).
Створіть новий проект Visual Studio
На рис. 4 показані налаштування цього проекту.
![Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software (створення) Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software](https://images-on-off.com/images/129-130/sozdanievirtualnogodzhoystikaspomoshyumo-ca35ddb8.png)
Малюнок 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 (допомогою) Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software](https://images-on-off.com/images/129-130/sozdanievirtualnogodzhoystikaspomoshyumo-4d50e062.png)
Малюнок 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 (віртуального) Створення віртуального джойстика за допомогою модуля intel® realsense ™ sdk hand cursor, intel® software](https://images-on-off.com/images/129-130/sozdanievirtualnogodzhoystikaspomoshyumo-a48e4c37.png)
Малюнок 7.Тестірованіе додатки з vJoy Monitor
Після завантаження та установки програми Google Планета Земля ознайомтеся з інструкціями, наведеними тут. для запуску симулятора польоту. Спочатку слід знизити чутливість для осей X і Y в RSJoystick, щоб руху руки не надто сильно впливали на переміщення віртуального літака. Для осі Z необхідно встановити повзунок в максимальне положення. Трохи звикнувши, ви зможете управляти віртуальним літаком за допомогою плавних рухів руки.
висновок
У цій статті наведено просте покрокове керівництво, в якому описується створення програми-емулятора джойстика за допомогою Intel RealSense SDK і використання модуля Hand Cursor, який підтримується камерою SR300.
Про технологію Intel RealSense
Брайан Браун (Bryan Brown) - інженер по розробці програмних додатків в підрозділі Software and Services Group корпорації Intel.
Для отримання докладної інформації про можливості оптимізації компілятора зверніться до нашого повідомленням про оптимізацію.