Étiquette : copter

Glove Controller

Depuis que je me suis mis à construire un quadricopter, je cherchais une autre façon de contrôler l’engin, une façon de commander plus naturelle. En temps normal pour contrôler des modèles réduits, on utilise des télécommandes assez sophistiquées qui couvrent toutes les fonctionnalités du contrôleur de vol. Malheureusement, ce n’est pas avec cette manette qu’on peut ressentir un vol, c’est pour ça que j’ai créé le « Glove Controller » (ou le gant de contrôle) !

Avant un long discours quoi de mieux qu’une petite vidéo du gant !

Où tout a commencé.

Je faisais voler mon quadricopter avec ma nouvelle télécommande FrSky Taranis -une super télécommande en passant-, et je pensais à la beauté du « port d’entrainement » qui permet à une autre télécommande de prendre le contrôle (limité) de la télécommande maître. C’est une super fonctionnalité pour partager sa passion avec quelqu’un d’autre en toute sécurité pour votre quadricopter. Et soudain, j’ai entrevu la puissance de ce port avec lequel on peut interfacer n’importe quel périphérique qui est capable d’envoyer un signal PPM (Pulse-Position Modulation, ou modulation en position d’impulsion). Comprenez qu’on peut contrôler le quadricopter avec presque n’importe quoi…

C’est ainsi que le Glove Controller est né !

Quésaco ?

IMU 9DOF Razor
La IMU Sparkfun 9DOF Razor

J’ai baptisé ce projet le Glove Controller juste à cause du form factor final : un gant… mais un gant high-tech ! Pour dire vrai, j’aurais dû l’appeler le « 9 DoF IMU Controller », ce qui est incompréhensible mais tellement plus sexy. Bon faisons la lumière sur ce nom obscure : 9 Degree-of-Freedom (DoF) Inertial Measurement Unit (IMU) Controller, soit dans la langue de Molière : l’unité de contrôle basé sur une centrale inertielle de 9 degrés de liberté. Tout de suite c’est plus clair, hein !? Une centrale inertielle, que j’appellerai « IMU » par la suite, est quelque chose de très commun, je suis prêt à parier que vous en avez une dans votre poche. Non ? Les gens appellent ça un téléphone intelligent, un smartphone, une tablette, etc… En faite tous ces périphériques qui ont un accéléromètre (pour quand vous le secoué), un gyroscope (pour faire tourner l’écran) et un magnétomètre (le capteur de la boussole). Cet ensemble de trois capteurs forme une IMU.

Celle que j’utilise pour le gant embarques un accéléromètre 3 axes, un gyroscope 3 axes et un magnétomètre 3 axes, ce qui donne bien un total de 9 degrés de liberté. L’IMU est alimenté par une batterie lithium-ion de 3.6V 2Ah, le tout est attaché à un chargeur USB. Le gant est un simple gant de vélo.

Systeme complet
Système complet avec le gant, la IMU, le chargeur et la batterie.

Comment ça marche ?

Orientation & mouvements
Pitch, Roll, Yaw

La IMU 9DoF Razor vient avec un firmware très complet qui combine toutes les données des capteurs afin de donner le roulis (Roll), le tangage (Pitch), et le lacet (Yaw), soit les 3 mouvements élémentaires d’un modèle réduit (ou d’un vrai avion). C’est justement parfait pour contrôler un quadricopter sur le plan (X; Y). Notez que c’est assez rare de trouver les termes français dans la littérature, on voit bien plus souvent Roll, Pitch et Yaw; donc à retenir pour la suite. Bon, les initiés auront remarqué que je ne parle pas des gaz (throttle), un point important pour pouvoir voler quand même… Mais dans une volonté de simplicité et au vu des fonctionnalités des contrôleurs de vol actuels, il y a souvent une option d’asservissement en altitude (Altitude Hold) qui supprime le besoin de contrôle des gaz. Ainsi, le quadricopter peut garder l’altitude cible au moment où le gant est activé.

D’ailleurs, je ne vais pas m’arrêter en si bon chemin pour simplifier un peu plus: Supprimons le lacet (Yaw) ! On évitera les nœuds ! – Ok je sors – Mon contrôleur de vol, qui est une carte APM2.6 chargée avec le firmware Arducopter, a un mode appelé Super Simple qui permet au pilote de contrôler le copter à partir de son point de vue tout en ignorant dans quelle direction le copter pointe. C’est dur d’expliquer mieux ce mode, il faut avoir volé au moins une fois pour bien comprendre l’avantage de ce mode… ou regarder cette vidéo. Mais en bref, cela permet de laisser le contrôle du Yaw au contrôleur de vol.

Et voilà ! Le mode Altitude Hold verrouille l’axe Z et s’occupe des gaz, et le mode Super Simple s’occupe du lacet (Yaw) pour nous. Fantastique ! Il nous reste plus qu’à gérer le Roll et le Pitch avec le gant.

Voici comment le gant fonctionne

  1. La IMU sur le gant encapsule dans un signal PPM et envoie le Pitch et le Roll à la télécommande via le port d’entrainement.
  2. La télécommande lit le signal et envoie les infos à son récepteur.
  3. Le récepteur sur le quadricopter fait transiter les données au contrôleur de vol.
  4. Le Pitch et le Roll sont traités par le contrôleur de vol.
  5. Les variateurs de vitesse des moteurs sont ajustés en fonction du Pitch et du Roll.
 Glove Controller
Le « Glove Controller » avec son câble

La partie technique.

La IMU 9DoF Razor est construite autour d’un microcontrôleur Atmel ATmega328P et est par le fait même compatible avec Arduino. Ce qui veut dire qu’il suffit d’un convertisseur Serial-USB de 3.3V pour pouvoir programmer la carte. Personnellement, j’utilise celui de Sparkfun parce qu’il a exactement le bon brochage. Pour que la IMU ait les fonctionnalités qui vont bien, j’ai fait une petite modification du firmware d’origine afin d’ajouter la sortie PPM, et de limiter les valeurs du Pitch et du Roll.

En tant normal, la IMU produit des angles entre [-180; 180] degrés, mais la télécommande, elle, ne comprend que des valeurs entre [-100; 100]%. Donc j’ai commencé par limiter les angles du Pitch et du Roll à [-90; 90] degré, parce que c’est assez compliqué d’aller au-delà de ±90 deg avec son poignet. Par contre, sachant que le Roll devient très sensible quand le Pitch est supérieur à ±85 deg, j’ai dû limiter le Roll à ±85 deg et le Pitch à ±90 deg. J’ai aussi ajouté une petite option bien pratique au cas où quelque chose va mal, ou que vous avez simplement besoin de votre main: Tournez votre paume vers le ciel (> 110 deg) pour désactiver le gant, et mettre toutes les sorties à zéro. Les sorties seront forcées à zéro jusqu’à ce que votre paume soit de nouveau face au sol (< 10 deg).

Le signal PPM est généré par le timer 16-bit du microcontrôleur, ce qui signifie que la carte continue de traiter les données des capteurs pendant que le signal est produit. Ainsi, il n’y a aucune latence qui pourrait être véhiculée par l’utilisation de délais (fonction delay()). Je me suis inspiré de cet exemple pour mettre en oeuvre le signal PPM. Juste quelques mots en passant à propos du signal PPM: La plupart du temps, les gens font la confusion entre PPM et PWM (Pulse Width Modulation). PPM est une sorte de modulation numérique comme le FSK ou le PSK (Frequency and Phase-Shift Keying), ainsi chaque pulse représente un octet (une valeur numérique), et peut avoir une largeur différente des pulses qui l’entour. Alors qu’un signal PWM est utilisé pour numériser une seule valeur, car cette fois on ne s’intéresse pas à un pulse, mais au rapport cyclique (temps haut sur période). En bref, avec un signal PPM vous pouvez envoyer la valeur de plusieurs chaines, alors qu’avec un signal PWM on ne peut envoyer qu’une seule et unique valeur.

Assemblage du gant.

Qu’est-ce qu’il me faut ?

  • Un [compléter avec un nombre]copter. Tri, quad, hexa, octo ou toutes autres variantes.
  • Un contrôleur de vol avec le mode Altitude Hold ou équivalent, et si vous avez le mode Super Simple c’est encore mieux.
  • Une télécommande avec un port  d’entrainement maître. Remarque: Un port d’entrainement esclave ne fonctionnera pas !
  • La IMU 9DoF Razor + une batterie 3.6V (+ un programmeur FTDI Serial-USB 3.3V).
  • Un connecteur jack 3.5mm + câble.
  • Un gant de votre choix.
Quadricopter, télécommande et gant
Le quadricopter, la télécommande et le gant

Configurer la IMU

Prérequis: Savoir utiliser l’IDE d’Arduino, et programmer une carte.

  1. Souder les broches de connexions.
  2. Programmer le firmware d’origine (la dernière version): ptrbrtz/razor-9dof-ahrs.
  3. Suivre le tutoriel pour calibrer la carte (étape très importante !).
  4. Sauvegarder les offsets déterminés au moment de la calibration, et les copier dans ma version modifiée du firmware: eklex/GloveController.
  5. Programmer la IMU avec la version modifiée.
  6. Scratcher la IMU sur le dessus du gant, et placer la batterie à l’intérieur.

IMU sur dessus du gant
La IMU sur le dessus du gant

Velcro sur le gant
Le velcro pour garder la IMU en place

Batterie et chargeur dans le gant
La batterie et son chargeur à l’intérieur du gant


Fabriquer le câble entre l’IMU et la télécommande

Note: Cette étape a été validée sur une télécommande FrSky Taranis. Je ne garantis pas que cela fonctionnera sur votre télécommande. Il est donc préférable de vérifier le brochage du port d’entrainement dans votre manuel utilisateur ou sur les forums de RC. Il est aussi possible que la connexion au port ce fasse avec autre chose qu’une prise jack 3.5mm.

  1. Trouver de vieux écouteurs avec une fiche jack de 3.5mm.
  2. Couper les écouteurs, et ne garder que le câble avec sa fiche jack.
  3. Utilisez un header femelle avec 2 pins (voir photo), et souder-le en suivant le brochage ci-dessous.

connexion/brochage fiche jack
Port d’entrainement: connexion de la fiche jack

câble IMU vers port d'entrainement
Câble entre la IMU et le port d’entrainement

header 2 broches femelles
Header avec 2 broches femelles

Connecter le gant au port d’entrainement

  1. Brancher le header femelle 2 pins sur les broches au-dessus du bouton de reset. La masse est située sur la broche inférieure sur le flanc de la carte.
  2. Brancher le jack dans le port d’entrainement (DSC sur la Taranis) de votre télécommande.

bochage IMU
Brochage & axes sur la IMU

câble IMU
La IMU et son câble (mauvaise connexion sur la photo)

Port d'entrainement sur Taranis
Port d’entrainement sur Taranis


Configuration de la télécommande

  1. Si vous avez une télécommande qui a un système autre que OpenTX, référez-vous à votre manuel.
  2. Sinon, maintenir le bouton menu pour ouvrir les pages de configurations, puis aller à la page TRAINER.
  3. Si vous faites confiance à votre main, vous pouvez mettre Ail et Ele à 100%, sinon je vous conseille de commencer avec 50% sur les deux voies.
  4. Poser le gant à plat sur une table pour obtenir un Pitch et Roll à zéro.
  5. Appuyer sur le bouton reset de la carte et attendre 5 secs, puis mettez la IMU à l’envers pour forcer les sorties à zéros.
  6. Appuyer sur Cal en bas de la page TRAINER afin de mettre toutes les voies à zéro.
  7. Placer votre IMU à 90 deg, vous devriez avoir ±100% sur une voie, si ce n’est pas le cas, ajuster le Multiplier pour obtenir ±100%.
  8. (Facultatif) Pour mieux comprendre comment le mode d’entrainement fonctionne sur les télécommandes OpenTX, vous pouvez visionner la vidéo ci-dessous [en anglais]. Il y a aussi un exemple de configuration présenté.

Décollage !

Tout est prêt pour vous envoler. Bon vol !

 

Futures améliorations: Ajouter une connexion sans fil entre la IMU et la télécommande, et peut-être l’ajout des gaz pour augmenter le fun. Restez branché !