DESCRIPTION ALPHABETIQUE DES FONCTIONS CREEES

  Limiteurs en saturation1   2  3  4  5Champ magnétique 1  2  | Attitude 1  | 

Dérivées |  Rotation  |  Quaternion |

| Gradient de gravité principal | EnergieChamp 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

angles.m

% 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

Bconsign.m

% 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

by_nulle.m

% 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

CpidToCm.m


% 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

energie.m

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

**************************************************************************

mat_card.m

% 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

mat_vect.m        

 y=mat_vect(u,v); calcule le vecteur produit de la matrice u par le vecteur v

Retrouver le programme en format texte utilisable

mom_magn.m

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

momXmagn.m

% 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

prodquat.m      

 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

saturmmc.m

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

saturmm2.m

% 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

storcham.m

% 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

storderB.m

% 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

 

SPECIAL & IMPORTANT 

 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