Académique Documents
Professionnel Documents
Culture Documents
EPREUVE SPECIFIQUE - FILIERE PSI
____________________
INFORMATIQUE
Vendredi 6 mai : 8 h - 11 h
____________________
1/12
La mission Cassini-Huygens
I Introduction
La mission spatiale Cassini-Huygens a pour objectif l’explora-
tion de Saturne et de ses nombreux satellites naturels (62 « lunes »
identifiées en 2009). Cassini orbite depuis 2004 autour de Saturne
et collecte grâce à ses différents instruments d’observation, de pré-
cieuses informations sur la planète géante, ses anneaux caractéris-
tiques et ses différents satellites.
Le sujet proposé aborde des problématiques associées à diffé-
rentes phases de la mission :
– l’acquisition d’images par l’imageur spectral VIMS (Visible
and Infrared Mapping Spectrometer) dans le domaine du vi-
sible et de l’infrarouge embarqué à bord de la sonde Cassini et
la compression des données avant transmission vers la Terre Figure 1 – La sonde
pour leur exploitation, Cassini-Huygens
– la mise en orbite autour de Saturne de la sonde, en utilisant
le phénomène d’assistance gravitationnelle de Vénus, de la
Terre, puis de Jupiter.
L’un des principaux objectifs scientifiques associés à l’instrument VIMS est de cartographier
la distribution spatiale des caractéristiques minéralogiques et chimiques de différentes cibles :
anneaux de Saturne, surface de ses satellites, atmosphère de Saturne et Titan, etc. Pour cela,
l’instrument VIMS mesure les radiations émises et réfléchies par les corps observés, sur une
gamme de 0,35 à 5,1 µm (domaines visible et infrarouge) avec au total 352 longueurs d’onde
différentes.
2/12
Les données acquises par l’instrument sont organisées sous la forme d’un cube (figure 4)
constitué d’un ensemble de 352 « tranches » (associées aux différentes longueurs d’onde λ)
comportant 64 pixels dans les deux directions spatiales x et y. Il est ensuite possible d’en
extraire une image à une longueur d’onde donnée (λk ) ou un spectre associé à un pixel de
coordonnées spatiales (xi ,yj ).
y : 64 pixels
x : 64 pixels
Les contraintes technologiques liées au transfert de l’ensemble des données recueillies par la
sonde vers la Terre imposent une réduction de leur volume. Pour l’imageur VIMS, cela consiste
en une compression des données prise en charge par une unité de traitement numérique embar-
quée à bord de la sonde. Cette compression doit toutefois s’effectuer sans perte d’information.
Après compression, la taille maximale attendue pour un cube de données est de 1 Mo (méga-
octet).
Objectif
Cette partie s’intéresse à l’implémentation d’algorithmes spécifiques visant à amé-
liorer les performances de la compression en vue d’une mise à jour des programmes
de l’unité de traitement embarquée.
A chaque pixel pijk du cube de données hyperspectrales (de coordonnées xi , yj et appartenant
à une image de longueur d’onde λk ) est associé un nombre moyen de photons reçus par les
capteurs de l’instrument VIMS. Cette dernière information est codée sur 12 bits.
Q1. Déterminer en octets la taille d’un cube de données hyperspectrales avant compression.
Si T et Tc représentent respectivement la taille des données avant compression et après
compression, le taux de compression τ est défini comme : τ = T −T
T
c
.
Q2. Déterminer alors le taux de compression à appliquer aux données afin de respecter le cahier
des charges.
4/12
Q3. Calculer l’entropie associeé à l’exemple précédent. En déduire le taux de compression limite
de cet exemple et le comparer à la longueur moyenne de 2,4 bits par caractère.
Dans le cadre d’une étude visant à améliorer les performances de la compression des données,
les ingénieurs souhaitent caractériser l’entropie des images acquises par l’instrument VIMS.
La fonction entropie(S) dont le code est partiellement présenté ci-après reçoit en argument
d’entrée une série d’entiers naturels S sous forme de tableau à une dimension (liste en Python)
et renvoie la valeur H de l’entropie de Shannon associée.
La fonction réalise différentes étapes. La première étape utilise la fonction set en Python
ou unique en Scilab. Un exemple extrait de la documentation de la fonction set est donnée
ci-dessous. En Python, il faut transformer le résultat en list pour itérer sur le résultat de set
(le principe est similaire en Scilab avec la fonction unique).
>>> b a s k e t = [ ’ a p p l e ’ , ’ orange ’ , ’ a p p l e ’ , ’ pear ’ , ’ orange ’ , ’ banana ’ ]
>>> f r u i t = s e t ( b a s k e t ) # c r e a t e a s e t without d u p l i c a t e s
>>> f r u i t
s e t ( [ ’ orange ’ , ’ pear ’ , ’ a p p l e ’ , ’ banana ’ ] )
>>> ’ orange ’ i n f r u i t # f a s t membership t e s t i n g
True
>>> ’ c r a b g r a s s ’ i n f r u i t
False
Données Données
d’entrée ∆ δ compressées
Prédicteur Mappeur Encodeur entropique
x y
Compresseur
avec θk = min(x̂k − xmin , xmax − x̂k ), soit ici : θk = min(x̂k , 4 095 − x̂k ).
7/12
Q12. Ecrire une fonction prediction(x) recevant en argument d’entrée le tableau à une di-
mension x et renvoyant le tableau erreur contenant les valeurs ∆k .
Q13. A partir de la définition de la fonction de mappage, équation (2), écrire une fonction
mappage(erreur,x) recevant en arguments d’entrée les tableaux à une dimension erreur et x
et renvoyant le tableau delta contenant les valeurs δk .
Le principe du codage d’un entier N avec l’algorithme de Rice de paramètre p est le suivant :
– l’entier N à coder est divisé par 2p (division entière) ;
– le quotient q de la division entière est codé avec un codage unaire (q occurences de 1
suivies d’un 0, voir tableau 3), ce qui constitue la première partie du code de Rice ;
– le reste r de la division entière est codé en binaire sur p bits, ce qui constitue la seconde
partie du code de Rice.
Le tableau 4 illustre le codage des entiers 0 à 7 avec un codage de Rice de paramètre p = 2.
8/12
III Mise en orbite de la sonde autour de Saturne
III.1 Présentation
La sonde Cassini-Huygens a été lancée du site de Cap Canaveral (Floride - USA) le
15 Octobre 1997. Une fusée Titan IV-B/Centaur a été nécessaire pour assurer le lancement
de cette sonde de 5,6 tonnes. Aucun lanceur n’étant alors capable de donner à une sonde
spatiale de cette masse l’énergie suffisante pour rejoindre Saturne par une trajectoire directe,
l’énergie manquante est obtenue en utilisant le phénomène d’assistance gravitationnelle de Vé-
nus, de la Terre et enfin de Jupiter. L’assistance gravitationnelle consiste à utiliser le champ de
gravitation d’une planète afin de fournir une accélération supplémentaire à la sonde.
Le trajet de la sonde vers Saturne s’est donc effectué en plusieurs étapes comme indiqué sur
la figure 6.
Objectif
L’objectif de cette partie est de simuler le mouvement de la sonde lors de la phase
d’assistance gravitationnelle de Vénus afin de déterminer sa trajectoire ainsi que
le gain de vitesse obtenu.
9/12
Hypothèses
– Seuls le Soleil et Vénus ont une in-
y
fluence gravitationnelle significative Orbite de la Terre
Position de la Terre
sur la trajectoire de la sonde. au 26 avril 1998
– Le propulseur de la sonde n’étant Orbite de Vénus
pas utilisé lors du survol de Vé- Terre
nus, sa poussée n’est pas prise en
compte. G θv (t)
– Les trajectoires de la sonde et de Position de Vénus r(t)
θ(t)
Vénus sont considérées comme co- au 26 avril 1998
planaires (plan O, x, y ). Aussi, les Gv x
vecteurs position s’expriment en co- Vénus rv (t) O
Soleil
ordonnées cartésiennes :
r(t) = x(t) x + y(t) y
rv (t) = xv (t) x + yv (t) y
Terre
– L’orbite de Vénus autour du Soleil,
Trajectoire
considérée comme quasiment circu- de la sonde
laire, est décrite par les équations : Position de la Terre
au lancement
xv (t) = rv cos(Ωt + Φ) Figure 7 – Paramétrage du mouvement
yv (t) = rv sin(Ωt + Φ)
avec rv = 1,082 09 × 1011 m, Ω = θ̇v (t) = 3,236 39 × 10−7 rad · s−1 et Φ la position angulaire
initiale de Vénus.
Equations de mouvement
Le mouvement de la sonde est défini par l’équation suivante :
d2 x(t)
= Sx (x(t),y(t),t) (4)
dt2
d2 y(t)
= Sy (x(t),y(t),t) (5)
dt2
Q18. Donner les expressions des fonctions Sx et Sy . Ecrire une fonction eval_sm(x,y,t), qui
prend en argument les coordonnées x et y et l’instant t et qui renvoie les valeurs Sx et Sy
associées.
10/12
III.3 Résolution numérique
III.3.1 Méthode numérique
La résolution numérique des équations différentielles (4) et (5) repose sur leur discrétisation
temporelle et conduit à déterminer à différents instants ti une approximation de la solution.
On note ui et vi , les approximations des composantes du vecteur vitesse (vx (t),vy (t)) à
dx(t) dy(t)
l’instant ti avec vx (t) = et vy (t) = . On note ∆t = ti+1 − ti .
dt dt
Q19. En appliquant la méthode d’Euler explicite, déterminer les deux relations de récurrence
reliant ui+1 à ui , Sx et ∆t ainsi que vi+1 à vi , Sy et ∆t.
On note xi et yi , les approximations des composantes du vecteur position (x(t),y(t)) à
l’instant ti .
Q20. En appliquant la méthode d’Euler explicite, déterminer les deux relations de récurrence
reliant xi+1 à xi , ui et ∆t ainsi que yi+1 à yi , vi et ∆t.
11/12
Annexe : rappels des syntaxes en Python et Scilab
Remarque : sous Python, l’import du module numpy permet de réaliser des opérations pratiques
sur les tableaux : from numpy import *. Les indices de ces tableaux commencent à 0.
Remarque : sous Scilab, les indices des tableaux commencent à 1.
Python Scilab
L=[1,2,3] (liste)
tableau à une dimension v=[1, 2, 3] ou [1 2 3]
v=array([1,2,3]) (vecteur)
accéder à un élément v[0] renvoie 1 v(1) renvoie 1
L.append(5)
ajouter un élément v($+1) = 5
uniquement sur les listes
tableau à deux dimensions
M=array(([1,2,3],[3,4,5])) M=[1,2,3;3,4,5]
(matrice)
accéder à un élément M[1,2] ou M[1][2] donne 5 M(2,3) donne 5
extraire une portion de ta-
M[:,0:2] M(:,1:2)
bleau (2 premières colonnes)
tableau de 0 ( 2 lignes, 3 co-
zeros((2,3)) zeros(2,3)
lonnes)
dimension d’un tableau T de
T.shape donne [i,j] length(T) donne (i,j)
taille (i,j)
séquence équirépartie quel-
conque de 0 à 10.1 (exclus) arange(0,10.1,0.1) [0:0.1:10]
par pas de 0.1
définir une chaîne de carac-
mot="Python et Scilab" mot="Python et Scilab"
tères
taille d’une chaîne len(mot) length(mot)
extraire des caractères mot[2:7] part(mot,[11:16])
FIN
12/12