DESCRIPTION ALPHABETIQUE DES FONCTIONS CREEES
Limiteurs en saturation | 1 2 3 4 5 | Champ magnétique 1 2 3 | Attitude 1 |
Dérivées | Rotation | Quaternion |
| Gradient de gravité principal | Energie | Champ By | Pour éviter les pbs de dérivée | Champ pulsé | Dérivée pulsée |
Mathématiques | Produit matrice vecteur | Quaternion et rotation absolue | Quaternion et rotation relative |
| Quaternion et matrice de passage | Produit de 2 quaternions | Changement de composantes | Test d'arrêt vitesse |
| Régulation "boussole" | Champ de consigne |
Matrices spécifiques aux simulations personnelles:
ASIM, BSIM P(f, q, y) Couplage roue-satellite
SPECIAL & IMPORTANT : CHAMP MAGNETIQUE IGRF11
% La variable d'entrée est le vecteur d'état réduit à Q = u=[q0 q1 q2 q3],
quaternion de la rotation transformant XYZ ( repère orbital ) en xyz ( repère
satellite )
% Cette fonction récupère le quaternion u qui donne l'attitude par rapport au repère orbital XYZ, dans le
paramétrage des angles de Cardan:
% roulis phi
% tangage teta
% lacet psi
% Sorties en radians
Cette fonction retourne les angles de Cardan avec atan2Voir aussi roulis lacet
Retrouver le programme en format texte utilisable
A_SIM(Asat,K_SAT,H_SAT,L_SAT,Q_SAT,vitesseroue)
Retrouver le programme en format texte utilisable
B_SIM(Asat,K_SAT,H_SAT,L_SAT,Q_SAT)
Retrouver le programme en format texte utilisable
% Cette fonction calcule le champ magnétique de consigne de M LAURENS connaissant:
% En entrée:
% u(1:3) le champ mesuré pulsé, le seul accessible à bord
% u(4:10) le vecteur d'état consitué de :
% u(4:6) la rotation inutile
% u(7:10) le quaternion d'attitude de xyz par rapport à XYZ
Retrouver le programme en format texte utilisable
% Cette fonction est destinée à éviter une division par 0 lorsque By s'annule.
% Ce qui est imprévisible en tumbling
Retrouver le programme en format texte utilisable
champmgn.m
% u est le temps de la simulation
% Cette fonction retourne les composantes analytiques approchées du champ magnétique terrestre
pour ( données à préciser dans le libellé de la fonction ):
% Une orbite circulaire d'altitude Z
% Inclinaison orbitale i
% Passage à l'équateur au temps t=0 s
% Sur le repère orbital, à savoir :
% Axe X tangent à l'orbite dans le même sens que la vitesse
% Axe Y portant le moment orbital ou la vitesse de rotation
% Axe Z verticale ascendante
Retrouver le programme en format texte utilisable
champsat.m
% u est le vecteur d'entrée à 7 composantes
% u(1:3) = B champ magnétique en repère orbital
% u(4:6) =OMEGA rotation absolue en axes satellite
% u(7;10) est la quaternion d'attitude du satellite par rapport au repère orbital
% Cette fonction calcule la matrice de passage du repère orbital XYZ
% au repère satellite xyz, ceci pour réaliser le changement de composantes
pour le champ B
% Nouv_compos = Inverse(Matrice)* Ancien_compos
Cette fonction retourne les composantes du champ magnétique terrestre
en axes satellite en utilisant le quaternion de la rotation XYZ vers xyz
Retrouver le
programme en format texte utilisable
% u(1:3) est la première entrée à 3 composantes ce sont les angles
% u(4:6) est la deuxième entrée à 3 composantes le couple de commande
% On calcule alors la matrice P( phi, teta,psi ) qui permet d'obtenir
% les composantes Cx Cy Cz du couple de commande en axes satellite
Retrouver le programme en format texte utilisable
derivrot.m
global Asat
% Le vecteur d'entrée pour le traitement du système différentiel est à 7 composantes.
% u(1)=p rotation absolue satellite sur x
% u(2)=q ...........................sur y
% u(3)=r ...........................sur z
% u(4)=q0 Première composante du quaternion
% u(5)=q1 Deuxième ........................
% u(6)=q2 Troisième .......................
% u(7)=q3 Quatrième .......................
ELLE RETOURNE LE SECOND MEMBRE DE L'EQUATION TMC, NE CONCERNANT QUE LA MATRICE D'INERTIE Asat ET
LE VECTEUR ROTATION INERTIEL DE COMPOSANTES p q r. A ce vecteur, il faudra, dans
une simulation, ajouter les couples actifs.
NB : Cette fonction ne prend pas en compte la roue dans la matrice dans ses interactions de couplage ni son couple propre
Retrouver le programme en format texte utilisable
deriv_qt.m
global vitesse_rotation Asat
% Le vecteur d'entrée pour le traitement du système
% différentiel est à 7 composantes.
% u(1)=p rotation absolue satellite sur x
% u(2)=q ...........................sur y
% u(3)=r ...........................sur z
%
% u(4)=q0 Première composante du quaternion
% u(5)=q1 Deuxième ........................
% u(6)=q2 Troisième .......................
% u(7)=q3 Quatrième .......................
% *************************************************
% Les données inertielles seront fournies en global, ainsi que la vitesse angulaire orbitale w0, notée rotation_orbitale
Cette fonction retourne la dérivée du
quaternion exprimée en fonction du quaternion ( repère orbital XYZ vers
repère satellite xyz et de la rotation instantanée absolue du satellite .
Retrouver le programme en format texte utilisable
display.m
Fonction destinée à fournir la synthèse de la simulation, sous la forme d'un
fichier texte récupérable dans l'espace Matlab
Elle doit être exécutée une fois la simulation finie ou interrompue.
Retrouver le programme en format texte utilisable
global Asat vitesse_rotation
Calcul de l'énergie cinétique inertielle, avec comme vecteur d'entrée la rotation inertielle ( p q r )
Retrouver le programme en format texte utilisable
gradgrav.m
global Asat vitesse_rotation
% u est le vecteur d'entrée à 7 composantes
% u(1:3) = rotation absolue p q r en repère orbital
% u(4;7) est la quaternion d'attitude du satellite par
% rapport au repère orbital
Cette fonction retourne le gradient de gravité exprimé en repère satellite xyz à l'aide du quaternion d'attitude par rapport au repère orbital
Retrouver le programme en format texte utilisable
jw_rotot.m
% Cette fonction calcule le couplage roue - satellite dans le calcul de la dérivée de la rotation
( p q r )
La variable d'entrée est constituée :
- de la rotation de la roue
- du vecteur d'état à 7 composantes
3 pour p q r la rotation a bsolue en axes satellite
4 pour le quaternion d'attitude du satellite par rapport au repère orbital
Retrouver le programme en format texte utilisable
***************** REGULATION "BOUSSOLE ", 6 fonctions créées ************************
Laurens0.m
% Programmation de la régulation "boussole" de LAURENS
% Le vecteur entrée est à 12 composantes
% u(1:3) est le vecteur dérivée pulsée du champ magnétique B' ( B'x B'y B'z ) en axes satellite
% u(4:6) est le vecteur champ B (Bx By Bz en axes satellite
% u(7:9) en colonne est le champ magnétique de consigne
% u(10:12) en colonne est la dérivée temporelle du champ de consigne ( B'c )
% **********************************************************************
% La fonction retourne les moments magnétiques mx, mz, et mz
% *********************************************************************
NB : les moments magnétiques sont contrôlés en saturation proportionnelle
Retrouver le programme en format texte utilisable
Laurens1.m
% Programmation de la régulation "boussole" de LAURENS
% Le vecteur entrée est à 12 composantes
% u(1:3) est le vecteur dérivée pulsée du champ magnétique B' ( B'x B'y B'z ) en axes satellite
% u(4:6) est le vecteur champ B (Bx By Bz en axes satellite
% u(7:9) en colonne est le champ magnétique de consigne
% u(10:12) en colonne est la dérivée temporelle du champ de consigne ( B'c )
% **********************************************************************
% La fonction retourne les composantes du couple magnétique généré par les 3
bobines
% *********************************************************************
NB : les moments magnétiques ne sont pas contrôlés en saturation
Retrouver le programme en format texte utilisable
Laurens2.m
% Programmation de la régulation "boussole" de LAURENS
% Le vecteur entrée est à 12 composantes
% u(1:3) est le vecteur dérivée pulsée du champ magnétique B' ( B'x B'y B'z ) en axes satellite
% u(4:6) est le vecteur champ B (Bx By Bz en axes satellite
% u(7:9) en colonne est le champ magnétique de consigne
% u(10:12) en colonne est la dérivée temporelle du champ de consigne ( B'c )
% **********************************************************************
% La fonction retourne les moments magnétiques mx, mz, et mz
% *********************************************************************
NB : les moments magnétiques ne sont pas contrôlés en saturation
Retrouver le programme en format texte utilisable
Laurens3.m
% Programmation de la régulation "boussole" de LAURENS secondée par une
régulation annexe de réduction
% de la vitesse angulaire du satellite autour de B
% En entrée un vecteur u à 10 composantes:
% u(1:3) est le champ magnétique pulsé élaboré à bord à l'aide des mesures
% u(4:10) est le vecteur d'état à 7
coordonnées p q r + le quaternion Q
% **********************************************************************
% Cette fonction retourne le couple magnétique
supplémentaire
% accompagné du couple roue, les 2 doivent être utilisés
% *********************************************************************
NB : les moments magnétiques et le couple roue ne sont pas contrôlés en saturation
Retrouver le programme en format texte utilisable
Laurens4.m
% Programmation de la régulation "boussole" de LAURENS secondée par une
régulation annexe de réduction
% des angles de Cardan, en régulation uniquement proportionnelle aux angles
% En entrée un vecteur u à 10 composantes:
% u(1:3) est le champ magnétique pulsé élaboré à bord à l'aide des mesures
% u(4:10) est le vecteur d'état à 7
coordonnées p q r + le quaternion Q
% **********************************************************************
% Cette fonction retourne le couple magnétique
supplémentaire
% accompagné du couple roue, les 2 doivent être utilisés
% *********************************************************************
% Sortie y(1:3) est le vecteur moment magnétique
% Sortie y(4:6) est le couple roue de dimension 3
% *********************************************************************
NB : les moments magnétiques et le couple roue ne sont pas contrôlés en saturation
Retrouver le programme en format texte utilisable Retrouver le programme en format texte utilisable
Laurens5.m
% Programmation de la régulation "boussole" de LAURENS secondée par une régulation annexe de réduction
% des angles de Cardan, en régulation PD ( proportionnelle et dérivée )
% En entrée un vecteur u à 10 composantes:
% u(1:3) est le champ magnétique pulsé élaboré à bord à l'aide des mesures
% u(4:10) est le vecteur d'état à 7
coordonnées p q r + le quaternion Q
% **********************************************************************
% Cette fonction retourne le couple magnétique
supplémentaire
% accompagné du couple roue, les 2 doivent être utilisés
% *********************************************************************
% Sortie y(1:3) est le vecteur moment magnétique
% Sortie y(4:6) est le couple roue de dimension 3
% *********************************************************************
NB : les moments magnétiques et le couple roue ne sont pas contrôlés en saturation
Retrouver le programme en format texte utilisable
**************************************************************************
% En entrée, les angles de Cardan u = angles (roulis tangage lacet) en rd
angle_roulis=u(1);
angle_tangage=u(2);
angle_lacet=u(3);
% En sortie la matrice de passage permettant le calcul de la rotation
% du satellite par rapport au repère orbital XYZ
% Cette matrice servira aussi à la transformation des couples
Retrouver le programme en format texte utilisable
y=mat_vect(u,v); calcule le vecteur produit de la matrice u par le vecteur v
Retrouver le programme en format texte utilisable
La fonction retourne le gain matriciel K, sous une matrice ( 3x3 ) qui prend en compte les inerties. Les moments magnétiques générés et calculés, restent dans la plage tolérée de 0.2 Am².
global Asat tau
% Le vecteur entrée u est à 6 composantes
% u(1:3) est le vecteur dérivée champ magnétique B' ( B'x B'y
B'z ) en axes satellite
% u(4:6) est le vecteur champ champ B ( Bx By Bz ) en axes satellite
% Unit sera son vecteur unitaire
% tau est la constante de temps donnée en global dans derivdat
% Asat est la matrice d'inertie du satellite dans x y z, elle est donnée en global
Utilité :
Pour éviter une saturation qui risque de bloquer une composante par rapport à une autre, et donc de ne pas avoir le couple opposé à la rotation principale, on met une saturation anticipée proportionnelle, ce qui gardera le couple opposé à la rotation transversale tout en limitant le moment magnétique des bobines à 0.2 Am², ceci en conservant l'es sentiel de la fonction de proportionnalité. En pratique c'est l'application d'un gain adapté variable.
Retrouver le programme en format texte utilisable
% Le vecteur entrée est à 6 composantes
% u(1:3) est le vecteur dérivée champ magnétique B' ( B'x B'y B'z ) en axes satellite
% u(4:6) est le vecteur champ B (Bx By Bz en axes satellite
% Unit sera son vecteur unitaire
% tau est la constante de temps donnée en global dans derivdat
% Asat est la matrice d'inertie du satellite dans x y z, elle est donnée en global
% La fonction retourne le gain matriciel K
La fonction tient compte d'une constante PROPORTION,
donnée dans PULDATP ou PULDATNP, qui fixe un pourcentage de puissance à
répartir ( pour les bobines ou roue ) entre 2 simulations, pour ne pas
dépasser les limites permises
Retrouver le programme en format texte utilisable
omegaabs.m
global vitesse_rotation Asat
% Le vecteur d'entrée est en colonne à 8 composantes:
% Les 4 premières du quaternion d'attitude Q
% Les 4 dernières de la dérivée temporelle du quaternion Q
Le programme reconstitue le vecteur rotation
absolue du satellite , ceci dans le but de vérifier que l'intégration est correcte. Expression en repère satellite.
NB :Attention à ne pas confondre avec la rotation relative du repère satellite xyz par rapport au repère orbital XYZ.
Retrouver le programme en format texte utilisable
omegaorb.m
% Le vecteur d'entrée est en colonne à 8 composantes:
% Les 4 premières du quaternion d'attitude Q
% Les 4 dernières de la dérivée temporelle du quaternion Q
Le programme retourne le vecteur rotation relatif du repère satellite
par rapport au repère orbital, ceci dans le but de vérifier que l'intégration est correcte
Les 2 vecteurs rotation ( absolu et relatif diffèrent de w0 Y du au mouvement orbital
)
Retrouver le programme en format texte utilisable
passage.m
% u est un quaternion et la fonction retourne y = Pmat la
matrice de passage associée au changement de base
Retrouver le programme en format texte utilisable
pqrQ_V_P.m
% Fonction qui extrait :
% les dérivées des angles de Cardan
% les angles de Cardan du repère satellite par rapport au repère orbital
% à partir du vecteur d'entrée u à 7 composantes
% de 1 à 3 p q r composantes absolues du satellite exprimées en repère orbital XYZ
% de 4 à 7 les 4 composantes du quaternion d'attitude du satellite xyz par rapport
% au repère orbital XYZ
% ------------------------------ But ----------------------------
% Eviter les problèmes de dérivées avec sauts dans les PD ou PID
% ----------------------------------------------------------------
Retrouver le programme en format texte utilisable
y=prodquat(p,q);
Retoune le produit quaternionique des quaternions p et q
Retrouver le programme en format texte utilisable
prodvect.m
% Variable d'entrée à 6 composantes 3 pour le vecteur x et 3 pour y
La fonction retourne un vecteur produit vectoriel de x par y
Retrouver le programme en format texte utilisable
quatbmgn.m
% u est un vecteur à 7 composantes
% De 1 à 3 le champ magnétique en repère orbital
% De 4 à 7 le quaternion Q d'attitude faisant passer du repère orbital XYZ au repère satellite xyz
La fonction retourne les composantes du champ magnétique terrestre calculées dans le repère satellite, connaissant le QUATERNION D'ATTITUDE Q du repère satellite xyz par rapport au repère orbital XYZ et LE CHAMP MAGNETIQUE EN REPERE ORBITAL
Retrouver le programme en format texte utilisable
function y=saturmmc(u);
global couple_max_roue moment_max_bobine
% Cette fonction gère les problèmes de saturation soit des magnétocouple
% soit de la roue, soit des deux quant ils fonctionnent ensemble.
% Dans le cas présent c'est la bobine roulis, la bobine lacet et la roue tangage
% qui sont traités en parallèle, de manière à opérer une saturation, non pas
% individuelle mais proportionnelle, afin de respecter les conditions mathématiques
% de la régulation.
% Variable d'entrée u à 3 composantes:
% mx moment magnétique primitif de la bobine roulis
% mz moment magnétique primitif de la bobine lacet
% Croue couple roue primitif de la roue
% En sortie la fonction retourne les valeurs des moments ou couple dans la plage admissible
% Ces valeurs remplacent les valeurs primitives calculées avec notamment les PID
Retrouver
le programme en format texte utilisable
% Cette fonction gère les problèmes de saturation soit des magnétocoupleurs
% soit de la roue, soit des deux quand ils fonctionnent ensemble.
% Dans le cas présent c'est la bobine roulis, la bobine lacet et la roue tangage
% qui sont traités en parallèle, de manière à opérer une saturation, non pas
% individuelle mais proportionnelle, afin de respecter les conditions mathématiques
% de la régulation.
% Variable d'entrée u à 3 composantes:
% mz moment magnétique primitif de la bobine roulis
% my moment magnétique primitif de la bobine lacet
% Croue couple roue primitif de la roue
La fonction est utilisée, en particulier lorsqu'une roue fonctionne en parallèle avec le mode Bpoint
Retrouver le programme en format texte utilisable
saturmom.m
% En entrée le moment magnétique u général, créé par la régulation ( capteurs+électronique+bobines )
% Ce moment est écrété proportionnellement en se calquant sur la composante la plus grande, pas sur le
% vecteur complet. Donc seule, une des 3 composantes atteindra à chaque instant le seuil de saturation,
% fixé à 0.2 Am²
La fonction retourne les composantes du moment magnétique de commande, la plus grande plafonnée en valeur absolue à 0.2 Am²
Retrouver le programme en format texte utilisable
% En entrée les 3 composantes du champ magnétique réel u(1:3)
% ainsi que le test ( 1 ou 0 )de situation de t entre to et to+Ta u(4)
% En sortie la variable le champ magnétique pulsé dans cet intervalle
% stockée dans champ.mat ( variable champ )
Retrouver le programme en format texte utilisable
% En entrée les 3 composantes de Bprime ( mesurées ) u(1:3)
% ainsi que le test u(4) de situation de t entre to et to+Ta ( 1 ou 0 ) )
% Valeur 1 entre to=nT et to+Ta et Ta intervalle de mesure de la dérivée
% Valeur 0 ailleurs
% En sortie la variable la dérivée du champ magnétique dans cet intervalle
% stockée dans derB.mat ( variable B_prime )
Retrouver le programme en format texte utilisable
stopderv.m
% ***************************************************************************
% Cette fonction retourne une sortie 1 ou 0, pour un test d'arrêt sur vitesse
% ***************************************************************************
% 1 si les vitesses angulaires passent chacune sous le seuil acceptable pour le mode fin
% 0 si une des vitesses angulaires est au dessus du seuil acceptable pour le mode fin
% La valeur 0 arrêtera la régulation
% u est la variable d'entrée des vitesses angulaires absolues en rd/s
Retrouver le programme en format texte utilisable
FONCTIONS A USAGE PERSONNEL :
A_SIM.m
function y=A_SIM(Asat,K_SAT,H_SAT,L_SAT,Q_SAT,vitesseroue);
Retrouver
le programme en format texte utilisable
% Calcul de la matrice A_SIM de l'équation dX/dt =A_SIM
X + B_SIM U
B_SIM.m
function y=B_SIM(Asat,K_SAT,H_SAT,L_SAT,Q_SAT);
% Calcul de la matrice B_SIM de l'équation dX/dt = A_SIM X+ B_SIM U
MODELE DE CHAMP MAGNETIQUE IGRF
igrf11.m
%****************************************************
% Direct conversion of igrf11_f to MATLAB
% USAGE : [B]=igrf11syn(fyears,alt,nlat,elong)
%
% INPUT: fyears = date in fractional years e.g. 1909.5
% alt = altitude in (km)
% nlat = latiude positive north (deg)
% elong = longitude positive east (deg)
% OUTPUT:
% B = [B_North; B_East; B_up] (nano Teslas)
%
% Conversion written by
% Charles L. Rino
% Rino Consulting
% September 27 2010/October 3 2010
% crino@mindspring.com
Nécessite seulement le fichier de données coeff_GH.mat
Retrouver le texte de la fonction
Retrouver l'ensemble des routines minimales
Fin de page