Stabilisateur Tracker GPS à IMU

De Wiki LOGre
Aller à : navigation, rechercher


Le sujet

Le projet consiste à créer un système électronique et mécanique pour:

  • Stabiliser une camera placée sur un engin volant.
  • "Locker" une cible au sol pour la filmer.
  • "Locker" une cible en vol pour la filmer.

Le prototypage hardware choisi pour les 2 premières étapes est d'utiliser un FPGA (board Papillio 250K) avec un core AVR8.

La partie mécanique comprend 3 servos moteurs de modélisme. La partie capteur comprend un gyroscope, un accélerometre, un magnétometre et 1 GPS.

Le but: - Pratiquer le VHDL avec l'écriture d'IP hardware nouvelles, réutiliser des IP existante - Se former sur les aspects mathématiques (filtres numériques, Kalman, rotations et quaterions)

Principe

Ensemble IMU s.jpg

Caractéristiques techniques

  • Mécanique:

Poids: Servos et structure  : 380g, Electronique  : 180g, APN  : 220g, Accus  : 200g, Total (hors fixation): 980g

  • Electronique:

FPGA Xilink Spartan 3E FPGA 250k, Custom wing board, ITG3200, BMA180, HMC5883, SDCard 4Go, GPS mediatek

Etat du projet

  • La stabilisation 3 axes fonctionnne ainsi que le systeme de pointage d'orientation.
  • Carte electronique finale entièrement testée.
  • Configuration mécanique finale terminée.
  • Tests en vol en cours.

Etapes réalisées

  • Creation carte Papillio fille:
    • Choix des composants, achats.
    • Placement, routage du PCB final.
    • Fabrication.
  • GPS:
    • Tests de communication NMEA et binaire.
    • Implementation d'une UART. Lecture des trames du GPS avec l'UART.
    • Tests données terrain.
  • Fixations
    • Decoupe laser
    • Mise en place sous portique
  • Mécanique
    • Différentes pièces mécaniques(merci Steeve) de liaison APN <-> Stabilisateur
    • Creation et impression boitiers de commande (Merci Fred & Steeve) et extension.
  • Software
    • Creation du fichier mémoire à partir des données NASA (ouf !)
    • Correction des angles d'Euler spécifiques au montage mécanique.
    • Filtrage numérique pour le lacet, et restart.
    • Implantation d'un filtre de Kalman.
    • Calculs de rotation pour l'angle de visée (stabilisation + tracking) couplé au filtrage en lacet (quaternions)
    • Programme principal optimisé en taille (actuellement 15Ko).
  • Tests
    • Test des differents capteurs.
    • Tests lecture/écriture mémoire micro SDHC.
    • 1er vol de test.
  • Hardware
    • VHDL pour le buzzer.
    • Debounceur VHDL
    • Création et mise au point d'une IP I2C hardware connectée au bus de l'AVR8.
    • Création d'une IP hardware pour la gestion des servomoteurs.
    • Adaptation IP SPI pour AVR8 (merci Jack).
  • Electricité
    • Renversement de la structure (servos en orientation finale).
    • Montage des bateries pour alimentation autonome.

Etapes en cours

  • Design nouveau systeme mécanique.
  • Programme de calcul de tracking.
  • Verif fonctionnelle block hardware de présentation des data GPS en temps reel.
  • Tests en vol.

Etapes restantes

  • Debug petits sauts d'angle
  • Tracking cible en vol

Références et sources

  • Références:
    • Languages: VHDL, C++
    • Protocoles: I2C, SPI, NMEA, SRTM
    • Hardware: gyro, accelerometre, magnétometre, GPS, SDCard [[1]], Arduino [[2]], Papillio [[3]]
    • Maths: Filtres de Kalman [[4]], Matrices DCM [[5]], Matrices de rotation [[6]], Quaternion et angles d'Euler [[7]], Quaternion et controle d'attitude [[8]], IMU [[9]], projections cartographiques (GPS), filtrage numérique [[10]]
    • Logiciels: Eagle [[11]], Blender [[12]]
    • Ressources du LOG: Découpe laser [[13]], Impression 3D, soudure, ...
  • Code:
    • I2C sur AVR8 (VHDL) based on I2C Master on Opencore [[14]]
    • IMU Based on 'Aeroquad: The Open Source Quadcopter' [[15]]

Photos/vidéos

  • Vidéo de démo avec le dernier soft de stabilisation
Erreur dans le widget Daily Motion
  • Tout petit extrait de la vidéo de test lors du premier vol (St Hilaire, Isère, France)

Video de test lors du 1er vol avec stabilisation IMU totalement automatique (pas de manipulation en vol). Ca ne se voit pas (c'est le but) mais il y avait beaucoup de mouvements de la sellette sur les 3 axes ce jour la. Ne pas regarder la qualité de l'image (faible volontairement) mais le suivi et la stabilisation. Les vibrations parasites du support ont été réduites au montage pour donner une idée du résultat de la stabilisation.

  • On voit qu'il reste des réglages à faire pour le 2ieme vol notamment:
    • Réglage des gains du filtre de kalman.
    • Redesign du support mécanique pour plus de rigidité.
    • Optimisation des jeux mécaniques.

Mais rien d'insurmontable...

Erreur dans le widget Daily Motion
  • Montage no 1

Montage 1.jpg

  • Analyse du problème de filtrage numérique en X

Problem X.JPG

  • Comparaisons des données GPS temps réel (rouge), des données terrain temps réel (vert) et du niveau du terrain de référence (bleu) lors d'un déplacement en voiture en condition de réception mauvaise à médiocre. Les écarts max sont toujours inférieurs à la précision requise (30m entre 2 lignes horizontales sur le graphe).

GPS Terrain comparison Meylan-LOG small.jpg

  • 1er test du GPS en déplacement (voiture)

OpenStreet-GPS track small.jpg

  • Apercu du fichier de relief (région de Grenoble) à partir des données de terrain (précision: 30m x 30m x 1m)

Grenoble-1s.jpg

  • Premiere version du boitier final (vue de dessus)

Boitier final.jpg

  • Premiere version de PCB

Réalisation: SeeedStudio à Shenzhen
P1020952s.jpg
GPS, socket SDCard, BMA, buzzer, switch + connecteurs soudés Daughter board.jpg Daughter board b.jpg

  • Vidéo de test (première implémentation):
Erreur dans le widget Daily Motion
  • Vidéo de test au LOG avec un petit flacon posé sur la plaque supérieure (il n'est pas collé !):
Erreur dans le widget Daily Motion
  • Le prototype:

P1020719.JPG

P1020721.JPG

P1020722.JPG

P1020723.JPG

  • Les différentes pièces mécaniques (imprimées) de connexion à l'appareil photo (modélisée avec Blender):

Pièce liaison souple.jpg Pièce liaison dure.jpg Pièce liaison 1.jpg Pièce liaison light.jpg