Projets:Perso:2013:AlphaRocket/Charge utile

La charge utile est composée de quatre éléments : le système de trajectométrie, le système de communication temps réel, le système de contrôle du roulis et le système de prise de vue.

Résumé
Le système de trajectométrie permet d'établir la position de la fusée durant la phase de vol. Les données sont transmises au contrôle de roulis et à la télémétrie pour permettre le suivit de vol au sol. La trajectométrie doit donc d'être calculé dans le référentiel de navigation.

La position de la fusée est établi à partir des données issues des capteurs suivants: - GPS GY-NEO6MV2 - altimètre GY-NEO6MV2 - accéléromètre IMU 10DOF - gyroscope IMU 10DOF - magnétomètre IMU 10DOF



Position angulaire
Le programme embarqué (arduino Mega) réalise une initialisation du magnétomètre, de accéléromètre et du gyroscope. Chacun de ces éléments possèdent 3 degrés de libertés qui sont couplés via un l'algorithme de Madgwick et donne une orientation sous forme de Quaternion. Le calcul des angles est fait au sein de l’Arduino méga. Il s'agit d'une conversion de quaternion vers des angles de Tait-Bryan. On a une orientation de la fusée dans le révérenciel de navigation aéro (nord,est,bas).

Changement de référentiel
Afin d'obtenir une position géographique de la fusée à la fois, précise et fréquente, il est nécessaire d'utiliser les données issue de l’accéléromètre. Par double intégration de l'accélération de l’objet sur les 3 axes du référentielle terrestre on peut obtenir sa position relative. $$ x = \int(\int a_x.dx).dx = \int v_x.dx $$

Le petit problème c'est que les accélérations de la fusée sont calculés dans le référentiel de la fusée (du capteur). Donc, si elle est inclinée, un mouvement ne va pas nous sortir des accélérations sur les axes x, y et z du référentiel terrestre mais sur X Y Z du référentiel local...



Ce qui nous intéresse, c'est le mouvement de la fusée dans le référentiel terrestre. On va devoir convertir les données issu de l’accéléromètre dans le référentiel terrestre ([AHRS] plus exactement).

Pour ça, on applique une rotation du vecteur d'accélération $$ A = \begin{bmatrix} a_x \\ a_y \\ a_z \end{bmatrix} $$. La construction de la matrice de rotation est faite à partir des angles Tait-Bryan en suivant l'ordre de rotation. Dans notre cas rotation sur Z(yaw) puis sur Y (pitch) et enfin sur X (roll). [Matrice de rotation]

On a plus qu'a faire le produit de la matrice de rotation et du vecteur d'accélération(colonne).

$$ A' = R * A = Z_1 Y_2 X_3 * A = \begin{bmatrix} c_1 c_2 & c_1 s_2 s_3 - c_3 s_1 & s_1 s_3 + c_1 c_3 s_2 \\ c_2 s_1 & c_1 c_3 + s_1 s_2 s_3 & c_3 s_1 s_2 - c_1 s_3 \\ - s_2 & c_2 s_3 & c_2 c_3 \end{bmatrix}.\begin{bmatrix} a_x \\ a_y \\ a_z \end{bmatrix} $$


 * 1, 2, 3 represent the angles α, β and γ, i.e. the angles corresponding to the first, second and third elemental rotations respectively.
 * X, Y, Z are the matrices representing the elemental rotations about the axes x, y, z of the fixed frame (e.g., X1 represents a rotation about x by an angle α).
 * s and c represent sine and cosine (e.g., s1 represents the sine of α).

On peut enfin retirer la gravité terrestre de l'accélération maintenant que le vecteur $$ \vec a_z' $$ est toujours pointé vers le centre de la terre. $$ A_{ahrs} = \begin{bmatrix} a_{ahrs} \\ a_{ahrs}\\ a_{ahrs}\end{bmatrix} = \begin{bmatrix} a_x' \\ a_y' \\ a_z'-1 \end{bmatrix}$$

Résultat: J'ai appliqué le calcul sur une série de mesure de l'accélération. Je fait pivoter l'accélérométre sur les trois axes. En rouge l'accélération d'origine. En vert l'accélération dans le référentiel terrestre (gravité déduite). En bleu, après passage dans un filtre passe haut très simple utilisant les coefficients suivant: [-0.328581437337850946, 0.657162874675701891 , -0.328581437337850946] On peut voir que seul les transitions de position angulaire sont gardées. La gravité ne vient pas parasiter les accélérations quelque soit la position angulaire du capteur.

Couplage GPS et accéléromètre
Bibliothèque calcul positionnement ]

Centrale inertielle + altimètre
IMU 10DOF - MPU9250 + MS5611 Sketch Arduino de base utilisé : mpuarduino.ino


 * Gamme de mesure pour l'altimètre IMU 10DOF : précision à +/- 1m d'après expérimentation, altitude initiale à 0, mesure de l'altitude relative
 * Gamme de mesure accéléromètre : accélération maximum autour de 100m/s² ~ 10G, donc règlage sur +/- 16G (cran en-dessous à +/- 8G, probablement pas suffisant)
 * Gamme de mesure gyroscope : règlages possibles ±250, ±500, ±1000, et ±2000°/sec. D'après ce qu'on peut voir dans les vidéos d'autres fusées expérimentales, la vitesse de rotation est rarement supérieure à 1 tour par seconde (360°/s), donc on peut se caler raisonnablement sur ±500
 * Gamme de mesure magnétomètre : règlage par défaut unique ±4800µT.

Fréquence d'échantillonage : 1 mesure toutes les 100ms, soit pour un vol d'environ 150s 1500 mesures.

Micro-contrôleur
Arduino Mega 2560

Avantages d'Arduino :
 * très documenté (dont librairies disponibles pour une très large gamme de capteurs)
 * simple à apprendre
 * capacité (mémoire / stockage) de la version Mega largement suffisante pour gérer les capteurs ci-dessus

Archive
Initialement nous avons prévu un capteur de pression Bosch BMP180, acquis et testé avec succès avec Arduino Uno le 29/8/2015 (librairie sur Github) - mais en réalité redondant avec le capteur de pression présent sur la centrale inertielle.

Télémétrie : transmission des données en vol
Comparatif des solutions considérées :



Nous étions initialement partis sur des modules Xbee en 868MHz, mais l'un des deux modules achetés s'est révélé défectueux. Puis quand est venu le moment de le remplacer, les Xbee Pro en 868MHz arrivaient en fin de vie.

Pourquoi 868MHz :
 * fait partie des fréquences autorisées par l'ANFR, puissance max de 25mW, ce qui est supérieur aux 10mW du 433MHz, autre fréquence autorisée pour la télémétrie
 * approvisionnement facile et relativement accessible de modules E/R sur cette fréquence

Contrôle du roulis
Le contrôleur de roulis est une partie de l’expérimentation à intégrer à la fusée. Il permet d'asservir le roulis (rotation de la fusée autour de son axe longitudinal) induit par les défauts de son aérodynamisme et les perturbations extérieures. Sous-projet piloté par Mohcine.

Système modifié après refus de Planète Sciences de valider le système initial.

Mise à jour du 19 avril 2016 : Le système repose désormais sur deux ailettes diamétralement opposées, actionnées par un unique servo-moteurs.

Un circuit non programmable impose aux ailettes de se maintenir au neutre pendant la phase de propulsion, puis autorise le circuit programmable a actionner les ailettes pour contrôler le roulis pendant un instant T limité puis enfin réimpose le neutre de manière définitive avant le déclenchement du parachute.

Photo du 15 novembre 2016 :

Rendus finaux :

V0.1 du contrôleur
(non validé par Planète Sciences à cause de l'indépendance mécanique des 4 ailettes)

Hangout du 24/6/2015: Contrôle de roulis est conforme au cahier des charges.

Il agit en actionnant 4 ailettes motorisées.

Challenges : assurer que ce système ne modifie pas la trajectoire. Il faut donc que l'angle des 4 ailettes par rapport à l'axe de la fusée soit toujours le même.

Les ailettes pourraient être faites en alu, avec la charly robot.

Mise à jour du 14/10/2015 : le système est tout intégré et comprend un bati, des actionneurs, des batteries, une électronique de commande et de la visserie. Dessin technique à venir... (il ne sera finalisé que quand on aura tous les appros car des dimensions manquent)

-> [BATI] le bâti est monobloc et imprimé 3d en nylon. La pièce est cylindrique de diamètre 94mm et de longueur 70mm

Fournisseur Electrolab ???

Fournisseur Shapeways : prix ~120€

-> [SERVOS] les servomoteurs actionnent les ailettes. ils ont plusieurs caractéristiques à dimensionner ce qui peut être extrêmement complexe, couple, vitesse, résolution... D'après mes recherches le meilleur choix disponible est le suivant et ils sont surdimensionnés par sécurité:

- couple 18kg, vitesse 0.07sec/60°, casing alu, alimentation direct 8.4v. Fournisseur hobbyking: prix ~144€ pour 4 (attention sur le site, il suffit de laisser la page ouverte quelques minutes pour avoir un discount)

-> [BATTERIES] elles fournissent l'énergie au système, il y a 2 x 2 batteries 18650 Li-on montés en série ( configuration 2S2P, soit 8.4V) pour alimenter les actionneurs et l'électronique de manière indépendante et isolée. Cette référence de batterie n'est pas choisie par hasard, elles peuvent débiter 30A 20A en continu. Fournisseur Ebay: prix ~52€ pour les 4 + chargeur.

-> [AILETTES] elles ont une géométrie complexe et doivent être réalisées avec une bonne précision/répétabilité dimensionnelle. Je pense qu'elles peuvent être difficilement réalisés au lab en fraisage 3d mais c'est ca reste possible. J’opterais plus pour une impression 3d en acier infusé bronze. Fournisseur shapeways : prix ~??? (nécessite le 3d pour cotation)

-> [VISSERIE] ??? Fournisseur : par exemple Cergy Vis prix ??? faut prévoir 20-30€

-> [ELECTRONIQUE] l'electronique sera composée de 3 pcb circulaires de diamètres 90mm -> PCB bouchon (sert a des connexions electriques) -> PCB alimentation -> PCB controleur L'architecture électrique est en cours, il faudra que je fasse le schéma/routage. Fournisseur ??? prix ??? mais faut bien prévoir 150-200€

-> [LOGICIEL] L'architecture logicielle est en cours...

En conclusion : on arrive au point ou faut acheter les servos et les batteries, pour que je puisses finir le 3d du bati et il faudra réaliser le 3d des ailettes pour cotation. Faire imprimer le bati et les ailettes. En parallèle j'avance sur l'electronique et le soft.

Prise de vue
Sous-projet piloté par Nicolas.

Une section de la fusée devra être vitrée pour permettre la vidéo sur l'angle voulu (360° si on est gourmands) => idée : la structure créera des angles morts, en profiter pour faire passer les câbles. Si on installe le gyromètre d'asservissement du miroir rotatif sur celui-ci, on peut choisir un gyromètre d'amplitude max moins importante mais plus précis car on asservi alors en relatif. J'ai aussi pensé à une option de miroir panoramique pour filmer directement en 360°, dans ce genre-là.

7 décembre 2016 : Update de Nicolas :

Ce qu'on a : 

- la minicam (récup)

- un montage élec pour contrôler son déclenchement / arrêt

- la section de fusée transparente

- une feuille miroir souple

- les calculs géométriques pour la forme du miroir et la position de la caméra

- j'ai un pote qui a commencé à faire des tests des transformation géométrique sur le fichier vidéo, il attend un test grandeur nature pour finaliser

Ce qui manque :

- prévoir l'interfaçage avec les autres sous-système pour avoir un signal de déclenchement / arrêt

- faire le routage et le PCB

- concevoir la fixation du miroir conique au corps de la fusée (je suis pas encore convaincu de mon design ...)

- faire des tests !

22 janvier 2016 : Nicolas est passé chez un ami qui a un fer à souder, finalement on n'a pas ressoudé la batterie mais carrément testé l'interfaçage arduino.

Ça marche bien, on peut sans soucis alimenter, déclencher l'allumage de la caméra et le lancement de la vidéo puis arrêter et éteindre la caméra via une routine basique. Rien de définitif dans les soudures mais on peut envisager une intégration du module si la qualité est satisfaisante !