Dans cet article nous vous proposons de découvrir notre logiciel de contrôle de l’AR Drone : AR Flight Controller ! Ce programme vous permet de contrôler l’AR Drone avec une manette de Playstation 3 (PS3) ! Voici une brève vidéo de présentation :

Installation du programme

AR Flight Controller est compatible avec MAC OS X et Linux. Ou plus généralement avec les systèmes UNIX ! Nous détaillons dans les lignes qui suivent la procédure d’installation en trois étapes :

Prérequis : la SDL et pkg-config

AR Flight Controller utilise la bibliothèque SDL (Simple DirectMedia Layer) afin de gérer la manette de PS3. Pour le moment nous utilisons la SDL mais nous envisageons d’utiliser la SDL2 à l’avenir afin d’exploiter les vibrations de la manette. Vous devez donc installer SDL sur votre machine pour compiler ce code source ! Vous pouvez installer SDL avec la plupart des gestionnaires de paquets. N’hésitez pas à nous contacter si vous rencontrez des problèmes pour installer la SDL. Par ailleurs vous aurez besoin d’une connexion Bluetooth pour utiliser les fonction sans-fil de la manette.

Nous utilisons également pkg-config afin de réaliser l’édition de lien. Veillez à ce que ce paquet soit bien installé sur votre machine ! Si vous ne pouvez pas – ou ne voulez pas – installer pkg-config nous vous indiquerons la marche à suivre.

Installation
  • Téléchargez le code source du programme avec Git :
$ git clone https://github.com/UpsilonAudio/AR-Flight-Controller.git ; cd AR-Flight-Controller/
Téléchargement du code source

  • Générer le fichier Makefile :
$ ./configure
Compilation
  • Compiler le code source :
$ make ; cd src/
Exécution du programme

Et voilà ! Vous pouvez désormais exécuter AR Flight Controller à l’aide de la commande suivante. N’oubliez pas de connecter votre manette de PS3 ! Sinon le programme affichera un message d’erreur.

$ ./AR_Flight_Controller
Exécution du programme

N’hésitez pas à réagir au travers des commentaires si vous rencontrez des problèmes pour installer AR Flight Controller ! Pour information nous avons utilisé Mac OS X 10.9.2 pour nos tests. Vous pouvez également nous notifier des bogues. Si vous en rencontrez !

ATTENTIONCe programme est expérimental : Nous ne pouvons garantir son fonctionnement optimal. Utilisez le en toute connaissance de cause ! En aucun cas nous ne pourrons être tenus pour responsable des dommages directs ou indirects causés par l’utilisation d’AR Flight Controller. N’hésitez pas à nous contacter si vous avez des doutes sur l’utilisation de ce programme !

Fonctionnalités

Voici la liste des fonctionnalités offertes par AR Flight Controller :

  • Bouton R1 : Décollage
  • Bouton L1 : Atterrissage
  • Bouton « Playstation » + Flèche haut : Looping vers l’avant
  • Bouton « Playstation » + Flèche bas : Looping vers l’arrière
  • Bouton « Playstation » + Flèche gauche : Looping vers la gauche
  • Bouton « Playstation » + Flèche droite : Looping vers la droite
  • Bouton « Triangle » + « Croix » : Activation du mode d’urgence
  • Bouton « Rond » + « Carré » : Désactivation du mode d’urgence
  • Bouton « Start » : Quitter le programme. Le drone atterri automatiquement s’il est en vol lorsque vous quittez le programme.
  • Bouton « Select » : Basculer entre le mode de vol « Normal » et le mode « Autonome ». Le mode autonome permet de suivre automatiquement une cible prédéfinie.
  • Bouton R3 : Activation du mode « Nervosité » (Voir plus loin !)
  • Bouton L3 : Activation du mode « Sécurité »

Comment utiliser le mode « Nervosité » ?!

AR Flight Controller offre deux modes vol : le mode « Sécurité » qui est similaire à l’expérience qu’offre l’application officielle (AR.FreeFlight) et le mode « Nervosité » qui permet d’exploiter sans concessions le potentiel de l’AR Drone. Le mode « Nervosité » offre une vitesse verticale maximale plus importantel’angle de flexion maximal est plus important (ce qui signifie que la vitesse de déplacement du drone est bien plus grande) –  la vitesse de lacet du drone est plus grande (ce qui signifie que la vitesse de rotation du drone est bien plus grande). Vous pouvez personnaliser ces paramètres en modifiant le code source du programme (voir plus loin).

Comme son nom l’indique le mode « Nervosité » est … Nerveux ! Utilisez le de préférence dans un lieu à découvert. Loin de tout obstacle. En effet l’accélération du drone est importante en mode « Nervosité ». Une collision avec un arbre est vite arrivée ! Veillez à garder une altitude de vol suffisante lorsque le mode « Nervosité » est activé : l’angle de flexion maximal important provoque une « légère » perte d’altitude du drone lorsque celui-ci est lancé à pleine vitesse. C’est pourquoi nous avons préféré augmenter l’altitude de vol minimal du drone dans ce mode de vol.

Appuyez simplement sur la touche R3 de la manette pour activer le mode « Nervosité ». Nous avons configuré ce programme de telle sorte que le drone décolle toujours en mode « Sécurité ». Vous ne pouvez donc activer le mode « Nervosité » que lorsque le drone est en vol. Appuyez ensuite sur la touche R1 si vous souhaitez basculer à nouveau dans le mode « Sécurité ». Nous expliquons dans la suite de cet article comment modifier les différents paramètres des modes « Sécurité » et « Nervosité ».

ATTENTION : Le mode « Nervosité » est réservé aux utilisateurs confirmés ! L’AR Drone est rapide ! Ne le perdez pas de vue !

Anecdote : Nous avons perdu de vue un AR Drone 2.0 alors qu’il y avait un peu de vent. Nous ne l’avons jamais revu ! À ce propos nous avons constaté que le mode « Nervosité » permet de combattre plus efficacement le vent lorsque le drone est en perdition. Toutefois si nous devions vous donner un bon conseil : ne volez pas en extérieur lorsqu’il y a du vent ! L’AR Drone est trop léger pour combattre le vent !

Le mode DEBUG

Le mode DEBUG permet permet d’afficher dans la console toutes les informations relatives à l’envoi des commandes AT ou à la gestion de la manette. Vous pouvez activer (respectivement désactiver)  le mode DEBUG en commentant (respectivement dé-commentant) la ligne suivante dans le fichier d’en-tête Gestion_Manette.h (voir plus loin) :

Notez que vous pouvez activer ou désactiver à souhaits l’affichage des informations sur la manette ou sur la valeur renvoyée par les joysticks. Voici deux exemples des informations affichées par le mode DEBUG (ces captures proviennent de Xcode) :

DEBUG_2
DEBUG

Les lignes « INT » indiquent les valeurs entières envoyés par les joysticks (ces valeurs sont comprises entre -32768 et +32767) tandis que les lignes « FLOAT » indiquent une valeur entière comprise entre -1 et 1. La relation entre ces deux grandeurs n’est pas linéaire mais suit une loi polynomiale (voir plus loin) afin d’améliorer la précision de la manette dans la gestion de la puissance des moteurs du drone.

Et les « loopings »

AR Flight Controller permet d’effecter quatre types de loopings : vers l’avant – vers l’arrière – vers la gauche – vers la droite. Vous pouvez choisir le type de looping à réaliser avec le bouton « Playstation » et le stick directionnel de la manette (voir plus haut). Attention ! La réalisation d’un looping est particulièrement gourmande en énergie. Vous pouvez essayer de réaliser des loopings pendant que le drone est en mouvement ! Effet garanti ! À condition de ne pas se trouver trop près des arbres environnants. Attention ! Le drone gagne de l’altitude lorsqu’il réalise un looping. Prévoyez de la place !

Suivre une cible !

AR Flight Controller permet également de suivre une cible prédéfinie. Pour cela vous devez basculer le drone en mode de vol « autonome » à l’aide de la touche « Select » de la manette. Cette fonctionnalité est encore expérimentale. Nous vous fournirons bientôt plus d’explications ! Toutefois nos premiers tests ont été concluants.

Que se passe t-il en cas de déconnexion de la manette ?!

Pas de problèmes ! Le drone atterri automatiquement lorsque la manette est déconnectée pendant l’exécution du programme. Vous pouvez rencontrer ce problème si votre manette n’a plus de batterie ou que vous vous éloignez trop de votre ordinateur.

Anecdote : les premières versions de notre programme ne géraient pas la déconnexion de la manette … L’AR Drone fonçait dans une direction aléatoire dès que la manette était déconnectée ! Nous avons évidemment corrigé ce problème qui venait d’une mauvaise gestion des informations véhiculées par la SDL … La preuve en vidéo !

Que se passe t-il si la connexion WiFi est interrompue ?!

L’AR Drone bascule en vol stationnaire si la la connexion WiFi est interrompue. Le programme affiche alors ce message d’erreur : « Error : Network is unreachable ! ». Si vous rencontrez ce problème vous devrez vous reconnecter au réseau WiFi du drone afin d’en reprendre le contrôle. Nous allons améliorer ce programme afin que la la manette vibre s’il y a un problème de connexion au réseau. Notez que le drone atterri automatiquement lorsque sa batterie devient faible.

Pendant nos tests en terrain dégagé nous avons constaté une excellente portée tant pour le WiFi (connexion avec le drone) que pour le  Bluetooth (connexion avec la manette). Nous avons utilisé lors de ces tests deux MacBook Pro Retina 13′ (fin 2013).

Développement

Code_Source_Upsilon_Audio

Vous souhaitez participer au développement d’AR Flight Controller ?! Pas de problèmes ! Nous avons ouvert une section dédiée à l’AR Drone sur le Forum. Faîtes nous part de vos suggestions ou de vos améliorations et participer avec nous au développement de ce projet ! Nous vous répondrons rapidement. Pour rappel nous mettons régulièrement à jour le code source de ce programme sur GitHub.

GITHUBRendez vous sur cette page pour accéder au code source du projet. Les fichiers sources se trouvent dans le dossier « src » !

To Do

Le programme est actuellement en version 1.0. Voici la liste des tâches à faire pour les prochaines versions :

  • Récupérer et afficher le flux vidéo dans une fenêtre
  • Compatibilité avec les manettes de XBOX 360 (Voir plus loin)
  • Afficher les informations de navigation dans une fenêtre (Altitude – Charge de la batterie – État de la connexion WiFi – Version du Firmware … )
  • Exploiter les vibrations des manettes en cas de problème de connexion au drone

N’hésitez pas à nous faire part de vos suggestions ou à participer au développement du programme ! Nous avons besoin de vous !

Personnaliser le programme

Vous pouvez personnaliser ce programme en modifiant directement son code source ! Nous avons pris soin de commenter le code en détail. N’oubliez de re-compiler les fichiers sources avec la commande « make » !

La correction d’axe

AR Flight Controller corrige les valeurs envoyées par les axes de la manette de telle sorte que la puissance des moteurs ne varie pas de manière linéaire en fonction de la position des joysticks. Nous obtenons ainsi une gestion plus précise de la puissance des moteurs ! Vous pouvez ajuster cette correction en modifiant la fonction « adaptation_axe » dans le fichier Gestion_Manette.c !

Vous remarquerez que nous avons choisi une évolution polynomiale en x^{2}. N’hésitez pas à modifier cette fonction afin de l’adapter à votre expérience de jeu.

Modifier le seuil de détection des joysticks

Les axes des joysticks renvoient au programme une valeur entière comprise entre -32768 et +32767. Nous avons configuré notre programme de telle sorte que le drone reste en vol stationnaire si tous les axes renvoient une valeur dont la valeur absolue est inférieure à un seuil de détection que nous avons fixé à 6000. Pour rappel un joystick correspond à deux axes. Vous pouvez personnaliser ce seuil de détection en modifiant la ligne suivante dans le fichier Gestion_Manette.h :

En diminuant le seuil de détection vous augmentez la plage de valeur de la puissance moteur. Néanmoins vous prenez le risque de déplacer le drone par inadvertance.

Comment personnaliser le mode « Nervosité » ?

Vous pouvez personnaliser les paramètres associés au mode « Nervosité » en modifiant les lignes suivantes dans le fichier AR_Flight_Controller_3.c :

Comment personnaliser le délai entre deux commandes AT ?

Vous pouvez modifier le délai entre deux commandes AT en modifiant la ligne suivante :

AR Flight Controller vous intéresse ? N’hésitez pas à partager cet article ou à réagir dans les commentaires ! Pour les plus chevronnés vous pouvez également participer au développement de ce programme en postant sur le Forum. À bientôt !

Vous êtes intéressés par l’AR Drone ? Soutenez nous en achetant un AR Drone sur Amazon ! Merci !

Équipe Dédale – Télécom SudParis