Skip to content

arthur-miguel/ground_track

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Biblioteca P2C

Biblioteca em Python para traçado de solo de órbitas fechadas. Parte da disciplina de Mecânica do Voo Espacial da Universidade Federal de Santa Catarina

Sobre

A biblioteca ground_track inclui o template da classe Orbit e seus métodos que permitem a realização do estudo da cinemática de órbitas keplerianas e de problemas de dois corpos.

A forma mais básica de incializar uma órbita é passando o semieixo maior e excentricidade para seu construtor:

orb_eq = Orbit(42157, 0)

também podem ser passados como parâmetros para construção de uma órbita: inclinação, longitude do nó ascendende, argumento do periapse, época, unidade de tempo (segundos, minutos, ...), passo de tempo para simulação e parâmetro gravitacional padrão (mu) em km^3/s^2

Para o cálculo da cinemática da órbita, usa-se a função evaluate

orb_eq.evaluate(0, orb_eq.period) # início e fim do intervalo de tempo que se quer avaliar

além do campo period, outras propriedades da órbita podem ser facilmente acessadas como apoapsis, periapsis, ang_moment e c3.

É possivel salvar todos os dados em um arquivo texto por meio da função Orbit.save_data("nome_do_arquivo"). É necessário salvar esse arquivo para usar os métodos de plotagem da biblioteca.

Outra funcionalidade da biblioteca é a de plotar tanto o traçado de solo quanto a Órbita em três dimensões por meio dos comandos Orbit.plot_track() (como parâmetro opcional é possivel passar o nome do arquivo de saída da função plot_track()) e Orbit.plot_3D(), respectivamente.

Para acessar o valor das anomalias em função do tempo e velocidades, raio da órbita e ângulo de voo em função da anomalia verdadeira estão à disposição as funções *_at, como por exemplo:

orb_eq.M_at(tempo)
orb_eq.E_at(tempo)
orb_eq.f_at(tempo)
orb_eq.r_at(anomalia)
orb_eq.v_at(anomalia)
orb_eq.gamma_at(anomalia)

para mais detalhes sobre a utilização da biblioteca veja a seção exemplos.

Dependências

Python >= 3.0
Scipy
Gnuplot >= 5.0

Instalação

Linux

Dependências

pip install --user numpy scipy
# debian distros
sudo apt install gnuplot # para outras distros consulte seu package manager

Código-fonte

git clone https://github.com/arthur-miguel/ground_track.git

Windows

Video com instruções para instalação

1º Instalar Gnuplot através do link: Gnuplot

2ª Instalar o Python;

3ª Instalar Scipy;

4ª Clonar o repositório.

Exemplos

O arquivo teste.py possui exemplos e instruções para utilização da biblioteca, fique a vontade para modificá-lo como bem entender e experimentar diferentes parâmetros. Para usá-lo basta emitir o seguinte comando em seu respectivo diretório:

python teste.py

Construção do objeto Orbit

molnyia = Orbit( 26600,  #major semiaxis
                 0.74,   #eccentricity
                 63.4,   #inclination
                 80,     #accending node
                 270     #periapsis argument
               )
molnyia.evaluate(0, 2*molnyia.period)   # evaluates orbit at two periods

Parâmetros da órbita

entrada

Q = molnyia.apoapsis		            # gets orbit apoapsis
q = molnyia.periapsis		            # gets orbit periapsis
energy = molnyia.c3		              # gets orbit specific energy
moment = molnyia.ang_moment	        # gets orbit specific moment

saída

Molnyia parameters
Apoapsis:  46284.0
Periapsis:  6916.0
Specific moment:  69258.130381927
Specific energy:  -0.13346713497240342

Tempo de voo

entrada

tQ     = molnyia.period/2
vQ     = molnyia.v_at(180)	          # gets velocity at apoapsis
gammaQ = molnyia.gamma_at(180)        # gets flight angle at apoapsis
vq     = molnyia.v_at(0)	            # gets velocity at periapsis
gammaq = molnyia.gamma_at(0)	        # gets flight angle at periapsis

t1     = molnyia.period*0.17
f1     = molnyia.f_at(t1)             # gets true anomaly at a quarter of period
r1     = molnyia.r_at(f1)             # gets radius at a quarter of period
v1     = molnyia.v_at(f1)		          # gets velocity at a quarter of period
gamma1 = molnyia.gamma_at(f1)		      # gets flight angle at a quarter of period

t2     = molnyia.period*0.33
f2     = molnyia.f_at(t2)             # gets true anomaly at a quarter of period
r2     = molnyia.r_at(f2)             # gets radius at a quarter of period
v2     = molnyia.v_at(f2)		          # gets velocity at a quarter of period
gamma2 = molnyia.gamma_at(f2)		      # gets flight angle at a quarter of period

saída

Time of flight
Time     True anomaly    Radius     Velocity   Flight angle
0.0      0               6916.0     10.01      0.0
2.04     145.57          30887.51   3.29       47.04
3.96     165.61          42489.42   1.94       33.0
6.0      180             46284.0    1.5        0.0

Traçado de solo da ISS (plot_track())

alt text

Órbita ISS 3D (plot_3D())

alt text

Traçado de solo da Molnyia (plot_track())

alt text

Órbita Molnyia 3D (plot_3D())

alt text

Contato

Arthur Gabardo - arthur.miguel@grad.ufsc.br

Github - https://github.com/arthur-miguel/ground_track

Agradecimentos ao Prof. Helton da Silva Gaspar pela ajuda com o Gnuplot