-- Cours/Projet - AERO-I3 --

Mécanique Spatiale

- Trajectoire Lunaire -

Trajectoires et paramètres importants

simon.marie@lecnam.net
In [ ]:
# Importation de la classe capsule
from Orbiter import Capsule

#Option pour afficher les figures dans le notebook et eviter le plt.show():
%matplotlib inline  
plt.rc('xtick',labelsize=14)
plt.rc('ytick',labelsize=14)
In [ ]:
# Constante célestes:                        
G=6.67408e-11 # Constante de gravitation -   
Rt=6380000 # Rayon terrestre - m             
Rl=1736000 # Rayon luniare - m               
Ms=1.9884e30 # Masse du soleil - kg          
Mt=5.9722e24 # Masse de la terre - kg        
Ml=7.3477e22  # Masse Lune - kg              
al=384399e3      # Distance Terre-Lune - m      
at=149.598262e9  # Distance Terre-Soleil - m             

Le module orbiter est utilisé ici pour l'intégration des trajectoires. Sont utilisation est décrite dans un notebook dédié et la documentation (sommaire) est disponible en ligne.

Calcul de trajectoires Lunaire

En partant d'une orbite basse circulaire terrestre ($222$km) calculer les manoeuvres nécessaires pour arriver en orbite lunaire.

In [ ]:
zs=222e3
us=np.sqrt(G*Mt/(Rt+zs))
Ap8=Capsule(z0=zs,u=us)
print(Ap8)

En vue d'effectuer une injection lunaire, on peut se placer au périgé de l'ellipse incluant la lune pour effectuer la future manoeuvre. On reste donc sur l'orbite circulaire pendant 3/4 de la periode:

In [ ]:
dtref=1
In [ ]:
Tin=2*np.pi*np.sqrt((Rt+zs)**3/(G*Mt))
# Restons en orbite 1h15:
Ap8.run(dt=dtref,ntmax=0.75*Tin/dtref)
In [ ]:
Ap8.plotraj('polar')
plt.ylim(0,7000)

1 - Injection

Pour quitter l'orbite terrestre et rejoindre la lune, on peut effectuer un transfert de type Hohmann. Ce type de transfert présente l'interêt d'être le moins couteux en carburant. En revanche le temps de transfert est supérieur à 5 jours. Pour le dimensionement des mission lunaires, il fut nécessaire de réduire au maximum les temps de mission afin de minimiser les risques liés au manque de ressources des astronautes (oxygène, vivres...). Pour réduire le temps de transfert, la technique consiste à utiliser un transfert de Hohmmann sur une orbite fictive situé à 1.2 fois la distance Terre-Lune.

In [ ]:
r1=Rt+zs
r2=1.2*al

L'incrément de vitesse de Hohmann est alors donné par: $$ \Delta V_H=\sqrt{2GM_t\dfrac{r_2}{r_1(r_1+r_2)}}-V_{init} $$

soit:

In [ ]:
VH=np.sqrt(2*G*Mt*r2/(r1*(r1+r2)));
VH

La durée du transfert est donnée par la demie-période:

In [ ]:
TH=np.pi*np.sqrt((0.5*(r2+Rt+zs))**3/(G*Mt))
TH/(60*60*24)

Ce temps correspond au temps nécessaire à atteindre une distance de 1.6 fois Terre-Lune. Pendant ce temps, la lune aura bougée de $\delta \theta=2\pi T_h/T_l$ soit:

In [ ]:
dth=2.*np.pi*TH/Ap8.TL
dth
param=0.575

Il faut donc anticiper en avancant de $\delta \theta$ sur notre orbite de départ c'est à dire une durée de $dt=\delta \theta T_{in}/2\pi$ soit:

In [ ]:
dtin=dth*Tin/(2.*np.pi)
Ap8.run(dt=dtref,ntmax=param*dtin/dtref)

Injectons alors la différence pour acquérir la bonne vitesse:

In [ ]:
# Ejection translunaire
Ap8.mvr(VH-Ap8.u,0)
In [ ]:
Ap8.run(dt=dtref,ntmax=0.47*TH/dtref)
In [ ]:
Ap8.plotraj('polar')
In [ ]:
Ap8.run(dt=dtref,ntmax=TH/dtref)
In [ ]:
Ap8.plotraj('polar')
Ap8.thetaL

2 - Capture lunaire et freinage

Calculer la manoeuvre nécessaire pour circulariser l'orbite

In [ ]:
r=Rt+Ap8.z
rl=np.sqrt(r**2+al**2-2*r*al*np.cos((Ap8.theta-Ap8.thetaL)))
Ulc=np.sqrt(G*Ml/rl)
Ulc
In [ ]:
dg=180-Ap8.gamma*180/np.pi
dg
In [ ]:
# Injection en orbite lunaire
Ap8.mvr(Ulc,180)
In [ ]:
Ap8.plotraj('polar')
#plt.ylim(0,3000)

Circularisation et orbite d'observation:

In [ ]:
a1=Rt+Ap8.z-al
a2=Rl+10e3
dv=Ap8.u*(np.sqrt(1+(G*Ml/Ap8.u**2)*((1/a2)-(1/a1)))-1)
T2=2*np.pi*np.sqrt(a2**3/(G*Ml))
dv
In [ ]:
# Injection transterrestre
Ap8.mvr(dv,180)

Conclusion

Rédigez une synthèse de toutes les notions que vous avez parcourues dans ce projet.

Références

Voici quelques références qui ont servi a mettre au point ce notebook. Les lecteurs intéressés pourront approfondir de nombreux sujets en les parcourant.

In [2]:
from IPython.core.display import HTML
style=open('notebooks.css', "r").read()
HTML(style)
Out[2]: