Inspiré par le post de Nico1854 sur le forum de VoiceAttack (VA), j'ai décidé de reprendre le même principe pour lappliquer au Boeing 737, je vous propose donc ce petit tuto et explications.
Le but est d'utiliser
VoiceAttack comme co-pilote virtuel pour les différentes checklist sans utiliser de clavier et pilotable à la voix.
Je souhaite:
demander tel ou tel checklist
avoir chaque élément de cette checklist énoncé par VA
à chaque élément je souhaite pouvoir valider oralement celui-ci
après validation de lélément passer au suivant
à la fin de la checklist avoir confirmation que la checklist est terminée
VA est vraiment un outil puissant avec des possibilités de programmation, de scripting et de scénarios, c'est ce que nous allons exploiter.
Je vous propose d'expliquer la checklist Before start, le principe sera appliqué identiquement aux autres checklists.
D'abord la logique:
A chaque checklist est associée une variable. Pour la checklist Before start j'ai associé la variable BSC (ASC pour After start, BTOC pour Before TakeOff, etc)
Lors de lappel de la checklist la variable est initialisée avec une valeur.(on peut mettre ce que lon veut). Toutes les autres variable sont mise à 0.
A chaque validation d'un check, la variable est incrémentée de 1 et on passe au check suivant et ainsi de suite jusqu'à la fin de la checklist
Ensuite le plan:
Le point de départ est un tabl'eau dans lequel pour chaque checklist nous allons lister:
lélément de la checklist
ce que le co-pilote va dire
la réponse que nous devons dire pour passer à lélément suivant
La variable associée
La valeur que doit avoir la variable pour ce check
La valeur quaura la variable une fois le check validé (t'ypiquement la valeur actuelle + 1)
Si lon prend notre checklist BSC, voilà ce que cela donne pour lappel de la checklist et lexécution du check.
La première ligne contient:
le nom de la checklist dans la colonne Action ˜Before Start Procedure BSC . Cette colonne est pour information est n'est pas utilisé dans notre programmation VA.
dans la colonne Pilot says, ce que lon doit dire pour appeler la checklist: Before start [procedure; checklist;]
Ce qui signifie pour VA que lon peut dire
˜Before start procedure ou ˜Before start checklist
dans la colonne Copilot says, ce que le copilote dit. Ici rien
dans la colonne Variable, le nom de notre variable: BSC
dans la colone Is set as, quelle valeur doit avoir la variable pour traiter la commande. Ici peut importe la valeur.
dans la colonne Set to, quelle valeur nous stockons dans la variable. Ici on initialise à 1301
La deuxième ligne contient:
le nom de l'action. Ici Doors.
Cette colonne est pour information est n'est pas utilisée dans notre programmation VA.
Pour info la 2éme colonne contient l'endroit du cockpit où lon doit faire la vérification/action. Cette colonne est aussi uniquement à titre informatif.
dans la colonne Pilot says, ce que lon doit dire. Ici rien car c'est au copilote à énoncer le nom de lélément.
dans la colonne Copilot says, ce que le copilote dit. Ici ˜Doors And St'airs
dans la colonne Variable, le nom de notre variable: BSC
dans la colone Is set as, quelle valeur doit avoir la variable pour traiter la commande. Ici 1301. Donc si la variable n'est pas égal à 1301 cette commande/ligne n'est pas exécutée.
dans la colonne Set to, quelle valeur nous stockons dans la variable. Ici rien car on incrémente (donc on passe au check suivant) uniquement lorsque nous avons oralement validé le check/action
La troisième ligne contient:
dans la colonne Pilot says, ce que lon doit dire. Ici ˜Closed; Locked Ce qui signifie que lon peut dire soit ˜Closed, soit ˜Locked
dans la colonne Copilot says, ce que le copilote dit. Ici rien car c'est nous qui validons le check.
dans la colonne Variable, le nom de notre variable: BSC
dans la colone Is set as, quelle valeur doit avoir la variable pour traiter la commande. Ici 1301. Donc si la variable n'est pas égal à 1301 cette commande/ligne n'est pas exécutée.
dans la colonne Set to, quelle valeur nous stockons dans la variable. Ici on incrémente de 1, donc 1301+1 = 1302
On passe ensuite à la 4éme ligne qui est le check suivant et ainsi de suite jusqu'à la fin de la checklist.
On va ainsi définir chaque checklist et au final nous aurons notre plan que nous allons devoir programmer dans VA.
Toujours avec moi ?
Alors c'est partie pour la programmation dans VA.
Dans Voice Attack nous allons commencer par créer une commande correspondant à la checklist Before Start.
A chaque checklist correspond une commande de ce genre. C'est le point de départ de notre checklist.
Donc quand je dis ˜Before start procedure ou ˜Before start checklist cette commande est appelée.
Dans les actions à exécuter pour cette commande, si vous vous souvenez de ce qui a été écrit plus haut, nous allons initialiser notre variable checklist BSC et mettre à zéro toutes les autres variables des checklist. Ceci pour être sûr de ne pas exécuter les actions d'une autre checklist.
On en profite aussi pour ˜tuer la commande ˜Playsound dont nous parlerons après.
La dernière action à exécuter est lappel à la commande ˜Playsound
Les autres options de la commande sont définies comme ci-dessous
Passons maintenant à la commande ˜Play sound. C'est la commande principale appelée par toutes les checklists. Cette commande va parcourir chaque variable, tester sa valeur et si le test est vraie, jouer le son correspondant.
La première ligne à exécuter de la commande doit commencer par Begin
et la dernière ligne doit se terminer par End Condition
Entre les 2, nous allons tester nos différentes variables avec des Else If
Pour la BSC on aura alors
Comme vous le constater on va tester chaque valeur possible de notre variable BSC et lui associer une action.
Par exemple si BSC vaut 1301 alors on va jouer le son DoorsandSt'airs.wav, on simule donc le copilote qui parle.
Si BSC vaut 1302 alors on va jouer le son fuel.wav
Etc
Ensuite lorsque le son est joué on sort de la commande ˜Play sound.
Laction Playsound qui joue le fichier wav est configurée comme ci-dessous
Pour ceux qui suivent
, vous allez maintenant me demander mais comment fait-on pour passer au check suivant, autrement dit pour incrémenter la variable et continuer le déroulement de la checklist ?
Nous allons créerdes commandes
Ces commandes correspondront aux réponses possibles des checks et pourront être utilisées par plusieurs checklists.
Par exemple la réponse ˜Check est reprise dans toutes les checklists.
Si on reprend le premier check de la checklist BSC
Nous venons de commencer la checklist et la variable BSC vaut 1301.
La commande ˜play sound est exécutée et joue le fichier DoorsandSt'airs.wav
Ensuite VA est en mode attente, donc à nous de répondre.
En regardant notre tabl'eau on voit que les réponses possibles sont: Closed [and locked; and armed;]
En langage VA cela signifie que lon peut dire ˜Closed ou ˜Closed and locked ou ˜Closed and armed
Nous allons donc définir cette commande
Les actions à exécuter par la commande sont un kill de la commande ˜Play sound au cas ou elle serait toujours en cours.
Ensuite on regarde si la variable BSC vaut 1301 et dans ce cas on incrémente de 1 et on rappelle ˜Play sound
Si jamais cette commande était appelée et que la variable BSC ne vaut pas 1301 alors on nous dit ˜Wrong
La variable BSC vaut maintenant 1302 et dans lexécution de ˜Play sound le son du prochain check est joué
Si vous vous souvenez le prochain est Fuel
Les réponses possibles sont
˜Check; checked; Pumps On
Nous allons donc avoir une commande multipart comme ceci pour check
On voit que la commande est appelée par d'autres checklist il y a donc plusieurs conditions de testées.
On y retrouve aussi celles de la checklist BSC
On doit aussi créer la commande pour ˜Pumps on
Et on continue ainsi de suite pour chaque checklist et chaque élément de checklist.
Cela peut paraître long et fastidieux mais beaucoup de commandes sont communes à plusieurs checklists et VA permet de faire des copier/coller de commandes et dactions.
A l'utilisation c'est un plaisir de pouvoir parler pour appeller et exécuter les checklist.
Bien sur avant d'utiliser VA, ne pas oublier de faire
lentrainement Windows pour lui faire reconnaitres votre voix comme expliqué ici
Démonstration en vidéo
http://youtu.be/6EgowqE23II