Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Figura 1. O aplicație a joystick-ului RS, care controlează simularea de zbor în Google Earth *

Intel RealSense SDK R5 acceptă acum noul model de cameră Intel® RealSense ™ SR300. Camera SR300 - dezvoltarea modelului pe F200, a îmbunătățit o serie de caracteristici și a adăugat un nou mod de funcționare a cursorului de mână.

Conform descrierii din documentația SDK, modulul Cursor de mână returnează un punct pentru poziția brațului, ceea ce permite atingerea unei viteze ridicate și a vitezei de urmărire. Scopul acestui modul este de a simplifica munca cu comenzile interfeței utilizator folosind mâna cu ajutorul unui set limitat de gesturi.

Joystick-ul RS este un emulator de joystick-uri software descris în acest articol. Această aplicație hartă datele manuale 3D furnizate de pachetul SDK către comenzile virtuale ale joystick-ului, care permit interacțiunea cu aplicațiile controlate de joystick.

Aplicația Joystick RS utilizează următoarele componente ale modulului Cursor de mână.

  • Tipul lateral al caroseriei: aplicația notifică utilizatorul care controlează mâna joystick-ul virtual (pe baza comenzii de la cea apropiată).
  • Cursor clic-clic: utilizatorul poate comuta starea ON / OFF a butonului 1 de pe joystick-ul virtual folosind gestul clic cu degetul.
  • Urmărirea punctului de urmărire: aplicația afișează un punct 3D normalizat în "caseta delimitată" imaginară definită de modulul Cursor de mână și utilizează aceste date pentru a controla joystick-ul virtual de-a lungul axelor X, Y și Z.
  • Datele de notificare: aplicația utilizează notificările Cursor Not Detected. Cursor dezactivat și Cursor Out of Border pentru a schimba culoarea joystick-ului de la verde la roșu atunci când mâna utilizatorului este în afara domeniului camerei SR300.

Cerințe preliminare

Aveți nevoie de cunoștințe despre C # și de o înțelegere a acțiunilor de bază în Visual Studio, cum ar fi construirea unui executabil. Experiența adăugării de biblioteci terțe la proiecte individuale de software este, de asemenea, utilă. Cu toate acestea, chiar dacă nu ați făcut acest lucru înainte, nu ar trebui să existe dificultăți, deoarece acest manual oferă instrucțiuni detaliate pentru acțiunile necesare. Sistemul trebuie să aibă o cameră foto cu vedere frontală SR300, cele mai recente versiuni ale SDK și Managerului camerei de adâncime Intel® RealSense ™ (DCM). În plus, sistemul trebuie să îndeplinească cerințele pentru echipamentele enumerate aici. În cele din urmă, calculatorul trebuie să ruleze Microsoft Windows * 10 Threshold 2.

Software-ul terț

În acest proiect, pe lângă Intel RealSense SDK, se folosește un driver virtual de joystick de la o terță parte denumit vJoy * și câteva biblioteci dinamice de legătură (DLL). Aceste componente software nu sunt incluse în codul de distribuție asociat acestui proiect, deci informațiile despre descărcarea și instalarea driverului de dispozitiv sunt furnizate mai jos.

Instalați Intel RealSense SDK

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

Instalați driverul dispozitivului vJoy și setul SDK

După instalare, driverul dispozitivului vJoy apare în secțiunea "Dispozitivele HID" din Managerul de dispozitive (consultați Figura 2).

Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Figura 2. Manager dispozitive

Deschideți meniul Start din Windows 10 și selectați Toate aplicațiile. Veți vedea mai multe componente vJoy instalate, așa cum se arată în Fig. 3.

Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Figura 3. Meniu "Start" în Windows

Pentru a deschide browserul implicit și pentru a accesa pagina de descărcare, faceți clic pe butonul vJoy SDK.

După descărcare, copiați fișierul ZIP într-un dosar temporar și localizați DLL-ul C # în folderul \ SDK \ c # \ x86.

Vom adăuga aceste DLL-uri în proiectul Visual Studio după ce este creat (a se vedea descrierea de mai jos).

Creați un nou proiect Visual Studio

În Fig. 4 arată setările pentru acest proiect.

Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Figura 4. Setări de proiect noi în Visual Studio *

Faceți clic pe OK pentru a crea proiectul.

Copiați bibliotecile în proiect

Pentru a crea aplicații Intel® RealSense ™ în C #, aveți nevoie de două biblioteci.

  • libpxcclr.cs.dll este un C # DLL gestionat.
  • libpxccpp2c.dll - bibliotecă DLL neangajată din C ++ P / Invoke.

Două alte biblioteci vor permite aplicației să facă schimb de date cu driverul dispozitivului vJoy.

  • vJoyInterface.dll - Biblioteca C API.
  • vJoyInterfaceWrap.dll este shell-ul C # pentru biblioteca C API.

Pentru a simplifica structura proiectului, vom copia toate cele patru biblioteci în dosarul proiectului.

  • Faceți clic dreapta pe proiectul RsJoystick și selectați Adăugați. Elementul existent ...
  • Accesați folderul vJoy libraries (\ SDK \ c # \ x86) și selectați vJoyInterface.dll și vJoyInterfaceWrap.dll. Notă. În câmpul de tip fișier, este posibil să fie necesar să selectați Toate fișierele (*. *). astfel încât DLL-urile pot fi văzute.
  • Faceți clic pe butonul Adăugați.

În mod similar, copiați DLL-ul Intel RealSense SDK în proiect.

  • Faceți clic dreapta pe proiectul RsJoystick și faceți clic pe Adăugare. Elementul existent ...
  • Navigați la folderul bibliotecă x86, acesta este C: \ Program Files (x86) \ Intel \ RSSDK \ bin \ win32 dacă SDK-ul a fost instalat în folderul implicit.
  • Selectați libpxcclr.cs.dll și libpxccpp2c.dll.
  • Faceți clic pe butonul Adăugați.

Toate cele patru fișiere ar trebui să fie vizibile în Solution Explorer în proiectul RsJoystick.

Creați legături către biblioteci

Dacă biblioteca necesară este copiată fizic în proiectul Visual Studio, trebuie să creați referințe la bibliotecile gestionate (.NET) astfel încât aplicația să le poată utiliza. Faceți clic dreapta pe Link (sub proiectul RsJoystick) și selectați Add Reference ... În fereastra managerului de link-uri, faceți clic pe Browse și navigați la folderul proiectului (c: \ RsJoystick \ RsJoystick). Selectați fișierele libpxcclr.cs.dll și vJoyInterfaceWrap.dll, apoi faceți clic pe Adăugare. Faceți clic pe OK în managerul de link-uri.

Pentru funcționarea corectă a bibliotecilor DLL gestionate, trebuie să copiați bibliotecile DLL neangajate în folderul de ieșire al proiectului înainte de a rula aplicația. În Solution Explorer, faceți clic pe fișierul libpxccpp2c.dll pentru al selecta. Se va afișa fereastra de proprietăți a fișierului libpxccpp2c.dll. Găsiți câmpul Copiere în ieșire și selectați Întotdeauna Copiați din lista derulantă. Repetați acest pas pentru fișierul vJoyInterface.dll. Din acest motiv, bibliotecile DLL neangajate vor fi copiate în folderul de ieșire al proiectului atunci când se construiește aplicația.

Este posibil să apară un avertisment despre discrepanța dintre arhitectura procesorului specificată pentru proiectul colectat și arhitectura procesorului de bibliotecă. Eliminați acest avertisment urmând acești pași:

  • Găsiți legătura la Managerul de configurare din lista derulantă din meniu (consultați Figura 5).
  • Selectați Manager de configurare.
  • În fereastra Manager configurare, extindeți lista derulantă în coloana Platformă și selectați Nou.
  • Selectați x86 ca platformă nouă și faceți clic pe OK.
  • Închideți fereastra Manager de configurare.


Figura 5. Manager de configurare

În această etapă, proiectul trebuie să fie compilate și executați fără erori sau avertismente. În plus, dacă studiați conținutul folderului de ieșire (c: \ RsJoystick \ RsJoystick \ bin \ x86 \ Debug), veți vedea că acesta a copiat toate cele patru biblioteci.

Interfața utilizatorului

Următoarele informații sunt afișate în interfața cu utilizatorul (a se vedea figura 6):

  • Mâna utilizatorului care controlează joystick-ul virtual (pe baza ordinii de acces de la aproape până departe, mâna cea mai apropiată de aparatul foto este considerată a fi cea care controlează).
  • Starea ON / OFF a butonului 1 de pe joystick-ul virtual (controlat de un gest clic cu degetul).
  • Ellipse, care urmărește poziția relativă a mâinii utilizatorului de-a lungul axelor X și Y; Schimbările de diametru se bazează pe axa Z, în funcție de distanța dintre mână și cameră.
  • Datele Adaptive Point pentru axele X, Y și Z din SDK sunt prezentate sub formă de valori normalizate, intervalul fiind de la 0 la 1.
  • Un cadru colorat a cărui culoare se schimbă de la verde la roșu atunci când mâna utilizatorului este în afara intervalului camerei SR300.
  • Utilizați cursorul pentru a regla sensibilitatea pentru fiecare axă.

Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Figura 6. Interfața utilizatorului

Codul sursă complet XAML este prezentat în Tabelul 1. Acesta poate fi copiat și inserat direct în codul MainWindow.xaml generat automat la crearea proiectului.

Tabelul 1. Cod sursă XAML: MainWindow.xaml

Codul sursă al programului

Codul complet sursă al aplicației RSJoystick din C # este prezentat în Tabelul 2. Acesta poate fi copiat și inserat direct în codul MainWindow.xaml.cs care a fost generat automat la crearea proiectului.

Tabelul 2. Codul sursă C #: MainWindow.xaml.cs

Detalii cod

Pentru a face codul cât mai simplu posibil, toate metodele sunt închise într-o singură clasă. Așa cum se arată în codul sursă din Tabelul 2, clasa MainWindow constă din următoarele metode:

  • MainWindow (): Mai multe clase private și membri variabili sunt declarate la începutul clasei MainWindow. În constructorul MainWindow, instanțele acestor obiecte sunt create și variabilele sunt inițializate.
  • ConfigureRealSense (): Această metodă se ocupă de crearea și operarea obiectului SenseManager modulul Cursor de mână și configurează modulul Cursor.
  • Actualizare (): în conformitate cu descrierea din manualul de referință Intel RealSense SDK, interfața SenseManager poate fi utilizată fie ca apeluri de procedură, fie ca apeluri de apel pentru evenimente. În aplicația RSJoystick, folosim apelurile procedurale ca metodă de interacțiune. Ei primesc și eliberează rata de cadre pornită în fluxul Update (), indiferent de firul principal al interfeței utilizator. Acest fir funcționează în mod continuu; în care obținem datele din index, gesturi și alerte.
  • ControlJoystick (): Această metodă este apelată din metoda Update () atunci când este detectată o mână de utilizator. Această metodă este trecută cu date Adaptive Point împreună cu starea butonului virtual joystick (este comutat de gestul CURSOR_CLICK). Datele Adaptive Point sunt scalate pe baza valorilor obținute de la glisoarele de sensibilitate. Folosind cursorul și calculând scalarea, utilizatorul poate selecta scara valorilor transferate în metoda vJoy SetAxis (). Această metodă se așteaptă valori cuprinse între 0 și pe 32 768. Dacă glisor de ajustare a sensibilității este setată la poziția maximă, datele de index corespunzătoare vor fi convertite la o valoare în intervalul 0-32 768. Prin reducerea sensibilității acestui interval va fi redus la aceeași mână traiectorie. De exemplu: de la 8192 la 24.576.
  • Render (): Această metodă este chemată din threadul Update () și utilizează metoda Dispatcher.Invoke () pentru a efectua operații pe firul interfeței utilizator. Aceasta se referă la actualizarea poziției elipsei pe panza și la actualizarea valorilor datelor din controalele TextBlock.
  • sldSensitivity_ValueChanged (): Acest handler de evenimente este declanșat când se ajustează poziția glisoarelor.

Utilizarea aplicației

Puteți testa aplicația executând vJoy Monitor în meniul Start din Windows 10 (a se vedea Figura 3). După cum se arată în Fig. 7, puteți urmări efectele mișcării mâinii de-a lungul a trei axe și efectuați un gest de clic pentru a comuta butonul virtual 1.

Crearea unui joystick virtual utilizând cursor de mână intel® realsense ™ sdk, software intel®

Figura 7. Testarea aplicației cu monitorul vJoy

După descărcarea și instalarea Google Earth, citiți instrucțiunile furnizate aici. pentru a lansa simulatorul de zbor. Mai întâi, sensibilitatea pentru axele X și Y din RSJoystick ar trebui redusă, astfel încât mișcările mâinilor să nu afecteze în mare măsură mișcarea aeronavei virtuale. Pentru axa Z, setați cursorul la poziția maximă. Puțin obișnuit, puteți controla un plan virtual cu ajutorul mișcărilor netede ale mâinii.

concluzie

Acest articol oferă un simplu ghid pas cu pas care descrie modul de a crea aplicații-joystick emulator folosind Intel RealSense SDK și utilizați modulul de mână Cursor, care este susținută de camera SR300.

Despre tehnologia Intel RealSense

Bryan Brown (Bryan Brown) - Inginer Software Development în cadrul Grupului de Software și Servicii al Intel.

Pentru mai multe informații despre capacitățile de optimizare a compilatorului, consultați Notificarea noastră de optimizare.

Articole similare