FAAST

De µRV - La réalité virtuelle au département informatique
Aller à : navigation, rechercher

Généralités

FAAST utilise VRPN serveur. Pour se connecter, il faut saisir "Tracker0@localhost". Le serveur démarre automatiquement dès que FAAST est connecté au capteur. Au total, 24 transformations des nœuds du squelette (y compris la position et la rotation) sont écoutées. D'après la documentation, d'OpenNI/NITE, les raccords entre les nœuds sont ordonnés de cette façon :

Faast.png

Note : La position et l'orientation sont données par OpenNI : et sont relatives à un repère et non au repère du raccord parent. Les positions sont en mètres (comme le standard de VRPN).

Installation

Télécharger :

  1. PrimeSense Package (contient OpenNI, NITE, etr PrimeSensor)
  2. Microsoft Kinect Driver

Ou à la main en aller chercher les binaires sur le site d'OpenNI :

  1. OpenNI Unstable Build for Windows x86 (32-bit) v1.5.2.23
  2. PrimeSense NITE Unstable Build for Windows x86 (32-bit) v1.5.2.21
  3. Hardware sensors drivers
  4. Microsoft Kinect: SensorKinect091-Bin-Win32-v5.1.0.25.msi (disponible sur GitHub)
  5. PrimeSensor : PrimeSensor Module Unstable Build for Windows x86 (32-bit) v5.0.3.4

Note : S'il y a une erreur au démarrage, il faut peut-être installer Microsoft Visual C++ 2008 SP1 Redistributable Package.

Utilisation

  1. Télécharger FAAST à cette adresse : FAAST
  2. Lancer FAAST
  3. Charger le fichier de configuration avec le bouton Load.
  4. Brancher la Kinect
  5. Cliquer sur Connect
  6. Cliquer sur Start Emulator

Contrôler la souris avec la Kinect

Deux modes de contrôle de la souris sont disponibles : Absolu et Relatif.

  • Le déplacement absolu associe l'espace autour du corps directement avec les coordonnées de l'écran. Ce mode est utile pour contrôler les applications Windows.
  • Le déplacement relatif permet de mouvoir la souris continuellement en se basant sur la position de la partie du corps suivi. Ce mode est utile pour contrôler, pointer et déplacer la vue dans des jeux.

Par défaut, l'acquisition des données de la Kinect entraîne un trop grande agitation du curseur et des mouvements trop brusques et incontrôlables. Pour réduire cette agitation, il faut augmenter le smoothing factor dans l'onglet Sensor de FAAST et movement threshold dans l'onglet Mouse. Après quelques tests, en mettant smoothing factor entre 0.5 et 0.8, et movement threshold à environ 2, cela permet de lisser le mouvement de la souris et d'avoir un déplacement de la souris précis par exemple sur le bureau Windows.

Faire le fichier de configuration

Paramétrer FAAST pour le contrôle de la souris avec Kinect

1. Dans l'onglet Sensor mettre :

smoothing factor : 0.5
skeleton mode : Full Body

2. Dans l'onglet Mouse mettre :

enabled : cocher la case
mouse control : Relative
body part : Right Hand
origin : Shoulder Joint
left bound: 12
right bound : 12
bottom bound : 12
top bound : 12
forward threshold : 13
speed : 18


3. Dans l'onglet Actions mettre toutes les actions sous le format :

action_name action_threshold virtual_event_type virtual_event_name

action_name  : nom de la pose ou du geste que l'utilisateur fait. action_threshold  : limite minimum pour activer l'action (varie selon les évènements). virtual_event_type : type de l'évènement virtuel qui doit être généré. virtual_event_name : évènement spécifique qui doit être généré.

Exemples d'actions

  • left_foot_up 13 mouse_click right_button --> si on lève le pied gauche de 13 inches (~33cm) par rapport au sol cela fera un clic de souris droit
  • left_arm_forwards 20 mouse_hold left_button --> si on avance la main gauche de 20 inches (~50cm) par rapport au corps cela fera un appui prolongé du clic de souris gauche
  • right_arm_forwards 20 mouse_click left_button --> si on avance la main droite de 20 inches (~50cm) par rapport au corps cela fera un clic de souris gauche

Mots clés

Listes d'actions disponibles

Action Name 		 | Type 		| Threshold
---------------------|--------------|-------------------------------------------------------------------------------------------
lean_left 		   | skeleton 	| angular body lean left (degrees)
---------------------|--------------|-------------------------------------------------------------------------------------------
lean_right 		  | skeleton 	| angular body lean right(degrees)
---------------------|--------------|-------------------------------------------------------------------------------------------
lean_forwards        | skeleton 	| angualr body lean forwards (degrees)
---------------------|--------------|-------------------------------------------------------------------------------------------
lean_backwards       | skeleton 	| angular body lean back (degrees)
---------------------|--------------|-------------------------------------------------------------------------------------------
turn_left            | skeleton 	| angular amount of left body turn (degrees)
---------------------|--------------|-------------------------------------------------------------------------------------------
turn_right           | skeleton 	| angular amount of right body turn(degrees)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_arm_forwards    | skeleton 	| forward distance from left hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_arm_down        | skeleton 	| downward distance from left hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_arm_up          | skeleton 	| upward distance from left hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_arm_out         | skeleton 	| sideways distance from left hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_arm_across      | skeleton 	| sideways distance from left hand across body to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_arm_forwards   | skeleton 	| forward distance from right hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_arm_down       | skeleton 	| downward distance from right hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_arm_up         | skeleton 	| upward distance from right hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_arm_out        | skeleton 	| sideways distance from right hand to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_arm_across     | skeleton 	| sideways distance from right hand across body to shoulder (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_foot_forwards   | skeleton 	| forward distance from left hip to foot (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_foot_sideways   | skeleton 	| sideways distance from left hip to foot (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_foot_backwards  | skeleton 	| backwards distance from left hip to foot (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
left_foot_up         | skeleton 	| height of left foot above other foot on ground (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_foot_forwards  | skeleton 	| forward distance from right hip to foot (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_foot_sideways  | skeleton 	| sideways distance from right hip to foot (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_foot_backwards | skeleton 	| backwards distance from right hip to foot (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
right_foot_up        | skeleton 	| height of right foot above other foot on ground (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
jump                 | skeleton 	| height of both feet above ground (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
crouch               | skeleton 	| crouch distance, calculated as current height subtracted from standing height (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
walk                 | skeleton 	| height of each step above ground when walking in place (inches)
______________________________________________________________________________________________________________________________________
push                 | NITE 		| velocity (inches/sec.)
---------------------|--------------|-------------------------------------------------------------------------------------------
swipe_up             | NITE 		| velocity (inches/sec.)
---------------------|--------------|-------------------------------------------------------------------------------------------
swipe_down           | NITE 		| velocity (inches/sec.)
---------------------|--------------|-------------------------------------------------------------------------------------------
swipe_left           | NITE 		| velocity (inches/sec.)
---------------------|--------------|-------------------------------------------------------------------------------------------
swipe_right          | NITE 		| velocity (inches/sec.)
---------------------|--------------|-------------------------------------------------------------------------------------------
circle               | NITE 		| radius (inches)
---------------------|--------------|-------------------------------------------------------------------------------------------
wave                 | NITE 		| n/a (leave at 0)

Liste des évènements virtuels

Virtual Event Type   | Virtual Event Name
---------------------|-----------------------------------------------------------------------------------------------------------------
key_press            | key to press when the action is first detected (either a single character or a special key from the table below)
---------------------|-----------------------------------------------------------------------------------------------------------------
key_hold             | key to hold down while the action is performed (either a single character or a special key from the table below)
---------------------|-----------------------------------------------------------------------------------------------------------------
mouse_click          | mouse button to click when the action is first detected (left_button, right_button, or middle_button)
---------------------|-----------------------------------------------------------------------------------------------------------------
mouse_double_click   | mouse button to double click when the action is first detected (left_button, right_button, or middle_button)
---------------------|-----------------------------------------------------------------------------------------------------------------
mouse_hold           | mouse button to hold down while the action is performed (left_button, right_button, or middle_button)
---------------------|-----------------------------------------------------------------------------------------------------------------
faast                | input emulator control event (pause, resume, or stop)

Touches spéciales

backspace, tab, clear, enter

shift, caps_lock, control, alt
right_shift, left_shift, right_control, left_control, right_alt, left_alt

up_arrow, down_arrow, right_arrow, left_arrow
home, page_up, page_down, end

numpad_1, numpad_2, numpad_3, numpad_4, numpad_5, numpad_6, numpad_7, numpad_8, numpad_9, 
add, subtract, multiply, divide, decimal

f1, f2,f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15,  f16,  f17,  f18, f19, f20, f21, f22, f23, f24

browser_back, browser_forward, browser_refresh, browser_stop, browser_search, browser_favorites, browser_home
start_mail

media_previous_track, media_next_track, media_play_pause, media_stop, media_select
volume_down, volume_up, volume_mute

escape, help
space, separator

num_lock, scroll_lock

windows, right_windows, left_windows

insert, delete, print_screen, pause
select, print, execute, sleep

applications, start_application_1, start_application_2


Conversion

Convertir inch -> cm : http://www.aly-abbara.com/utilitaires/convertisseur/convertisseur_unites_anciennes.html


http://projects.ict.usc.edu/mxr/faast

Autre source : http://www.kinecteducation.com/blog/2011/05/19/teachers-guide-to-innovating-schools-with-gesture-based-learning/#more-504