índiceitem superior

item anteriorpróximo item

 

3.10 – Cálculo de efemérides

 

Para simular leituras de sensores e a atuação de bobinas magnéticas é necessário calcular-se certas efemérides. Uma vez que a maior parte destas efemérides dependem da posição orbital do satélite, foram então implementados no simulador dois propagadores analíticos de órbita. Embora a precisão obtida na propagação analítica seja inferior à da propagação numérica, ela é suficiente para as necessidades do simulador de atitude, além de ser computacionalmente mais rápida. O primeiro deles leva em conta apenas os harmônicos zonais da Terra até a ordem 4 (Brower e Clemence, 1961, ver Capítulo 5, Seção 5.2). Diversas funções foram acrescentadas para permitir a conversão de coordenadas orbitais neste propagador. O segundo propagador é o modelo SGP8, da NASA, também baseado no modelo de Brower, e apresentado na Seção 5.5. Este modelo analítico é mais completo do que o primeiro pois converte os elementos médios da propagação em elementos osculadores. Uma vez que a simulação do sensor GPS é afetada pelo elemento osculador da órbita, percebe-se que este modelo é mais adequado em simulações que envolvam o GPS. Contudo, qualquer um deles pode ser utilizado na simulação.

 

Deve ser mencionado, porém, que a propagação de órbita e o cálculo de efemérides podem ser dispensados numa simulação de atitude de pequena duração, tal que a variação do campo magnético ou da posição do Sol e até mesmo da Terra com relação ao satélite possam ser ignoradas neste intervalo. Neste caso as efemérides da posição do Sol, do satélite ou o campo geomagnético podem ser previamente estabelecidos e mantidos constantes durante a execução da simulação. Caso seja necessário propagar uma órbita analiticamente  configura-se a propagação por meio das funções:

 

·         set_orbit_propagation_flag,

·         set_orbit_propagation_model,

·         set_ephemeris_date,

·         set_keplerian_elements,

·         set_two_line_elements.

 

As duas últimas funções possuem a mesma finalidade: definir os elementos orbitais. A primeira delas, set_keplerian_elements, é mais apropriada para a propagação em elementos médios, enquanto que a outra é mais utilizada no modelo SGP8. Esta última aceita os elementos orbitais definidos pela estrutura nasa_el descrita na Seção 5.5. Nota-se, porém, que qualquer uma das duas funções pode ser utilizada com qualquer modelo de órbita. Resultados imprevisíveis podem ocorrer, contudo, se a seleção do modelo for alterada durante a propagação. Se os elementos keplerianos forem utilizados no modelo SGP8, alguns dos coeficientes da estrutura serão considerados nulos (mean_motion_dot, mean_motion_dot_dot e bstar - ver Seção 5.5). Isto tem pouco impacto numa propagação de curto período, inferior a alguns dias. Além disso deve-se informar o tempo das efemérides por meio da função set_ephemeris_date. Por outro lado, caso se utilize os elementos “2-line” no modelo de propagação em elementos médios, então aqueles elementos citados acima são ignorados, e não é necessário estabelecer o tempo das efemérides, já que este estará presente na estrutura nasa_el (mod_julian_date e day_fraction).

 

Cumpre salientar que a propagação da órbita atualiza automaticamente, a cada ciclo de integração, a posição orbital do satélite, a direção do Sol e a direção do campo geomagnético, todos eles referidos ao sistema inercial. Este cálculo é referido ao instante atual de propagação acrescido do tempo das efemérides, ou seja, o tempo das efemérides coincide com o instante time = 0 de propagação da atitude. Esta atualização tem um custo de processamento que será compensado quando os modelos dos sensores necessitarem destas informações. As funções set_ephemeris_date, set_keplerian_elements e set_two_line_elements atualizam as efemérides da órbita, do campo geomagnético, do Sol e da Terra (tempo sideral) sempre que forem acionadas.

 

Por outro lado, caso a propagação de órbita não seja necessária pode-se definir um ou mais dos valores que seriam calculados pela propagação automática. Caso, por exemplo, seja necessário simular a ação de bobinas magnéticas ou então um magnetômetro de bordo, o valor do campo magnético terrestre pode ser estabelecido com a função  set_inertial_geomag_strength. Em resumo, as funções que permitem configurar as efemérides por meio de definições são:

 

·         reset_orbit_propagation_flag,

·         set_inertial_sat_pos,

·         set_greenwich_sidereal_time,

·         set_inertial_sun_vector,

·         set_inertial_geomag_strength.

 

A função reset_orbit_propagation_flag desabilita a propagação analítica e automática de órbita. Neste caso o vetor de estado do satélite, a direção do Sol e do campo geomagnético assumem valores “default”, a menos que sejam definidos por meio das funções descritas a seguir. A função set_inertial_sat_pos define a posição do satélite no sistema de eixos inerciais no instante corrente de execução. A velocidade é assumida como sendo nula. As demais funções seguintes estabelecem o tempo sideral de Greenwich, o vetor posição do Sol e do campo geomagnético.

 

As funções de retorno do valor diferem das funções usuais de definição, uma vez que na grande maioria das situações deseja-se definir um parâmetro no sistema de referência geocêntrico inercial, ao passo que durante a simulação deseja-se conhecer este valor no sistema de referência do corpo do satélite. Logo, as funções do tipo set são também do tipo inertial, ao passo que as funções do tipo get referem-se tanto a inertial quanto a body. O conjunto destas funções é dado por:

 

·         get_orbit_propagation_flag,

·         get_orbit_propagation_model,

·         get_current_date,

·         get_greenwich_sidereal_time,

·         get_inertial_state_vector,

·         get_terrestrial_sat_pos,

·         get_body_earth_vector,

·         get_inertial_sun_vector,

·         get_body_sun_versor,

·         get_inertial_geomag_strength,

·         get_body_geomag_vector,

 

A posição do satélite pode ser recuperada pela função get_body_earth_vector que fornece a direção do centro da Terra no sistema do corpo do satélite (para simular um sensor de Terra, por exemplo). Este vetor é igual ao negativo do vetor posição do satélite no sistema de referência do corpo do satélite. Nota-se que estas funções não dependem do modelo de propagação adotado, isto é, elas funcionam com qualquer um dos modelos. Segue a descrição das funções.

 

 

·         int set_orbit_propagation_flag ();

·         int reset_orbit_propagation_flag ();

·         int get_orbit_propagation_flag ();

·         int set_orbit_propagation_model (int orb_model);

·         int get_orbit_propagation_model ();

·         int set_ephemeris_date (int day, int month, int year, int hour, int minut, double secon);

·         vector6 get_current_date ();

·         int set_greenwich_sidereal_time (double gst);

·         int get_greenwich_sidereal_time ();

·         int set_keplerian_elements (vector6 kepel);

·         int set_two_line_elements (nasa_el tl_elem);

·         int set_inertial_sat_pos (vector3 satpos);

·         vector6 get_inertial_state_vector ();

·         vector3 get_terrestrial_sat_pos ();

·         vector3 get_body_earth_vector ();

·         int set_inertial_geomag_strength (vector3 geomagnetic);

·         vector3 get_inertial_geomag_strength ();

·         vector3 get_body_geomag_vector ();

·         int set_inertial_sun_vector (vector3 sunvec);

·         vector3 get_inertial_sun_vector ();

·         vector3 get_body_sun_versor ();