índiceitem superior

item anteriorpróximo item

 

Parte I: Corpo rígido livre de torques. Movimento de nutação.

 

1)      Adota-se como exemplo inicial um satélite com distribuição de massa totalmente simétrica, cuja matriz de inércia é diagonal com elementos iguais a 10 kgm2. A atitude é propagada por 200 segundos, com atitude inicial nula e velocidade angular de 1 rotação a cada 20 segundos no eixo z, conforme o código:

 

      w._1 = 0;

      w._2 = 0;         // Velocidade angular inicial

      w._3 = PI/10;

 

As Figuras B-1 e B-2 mostram as componentes da atitude (rotação 3-1-3) e da velocidade angular do satélite.

 

Fig. B-1 – Atitude (ângulos de Euler de rotação 3-1-3).

 

Fig. B-2 – Velocidades angulares (as velocidades nos eixos x e y são nulas).

 

2)      Este exemplo é semelhante ao anterior, com posição inicial nula, e velocidade angular de 1 rotação a cada 20 segundos no eixo z, e 0.1 rotação a cada 20 segundos no eixo y. Os resultados são vistos nas Figuras B-3 e B-4. Devido à simetria do corpo, as componentes da velocidade permanecem iguais, como mostra a Figura B-4.

 

      w._1 = 0;

      w._2 = PI/100;    // Velocidade angular inicial

      w._3 = PI/10;

      ele = get_sat_ang_momentum ();

 

Fig. B-3 – Atitude num corpo totalmente simétrico (esférico) em rotação (atitude inicial nula).

 

Fig. B-4 – Velocidades angulares num corpo totalmente simétrico (esférico) e com atitude inicial nula.

 

3)      Também neste exemplo as condições são iguais ao anterior (satélite simétrico e velocidades angulares em y e z), porém com com posição inicial não nula nos três eixos, dada pelo código:

 

      ezxz._1 = 50*RADIANS;

      ezxz._2 = -20*RADIANS;  // Parâmetros de euler da atitude inicial

      ezxz._3 = 140*RADIANS;

 

Os resultados são mostrados nas Figuras B-5 e B-6

 

Fig. B-5 – Atitude num corpo totalmente simétrico (esférico) em rotação e com atitude inicial não nula.

 

Fig. B-6 – Velocidades angulares num corpo totalmente simétrico (esférico) e com atitude inicial não nula.

 

4)      Adota-se agora uma distribuição não simétrica de massa, cuja matriz de inércia é diagonal, com elementos iguais a 10, 15 e 20 kgm2. A atitude é propagada por 200 segundos, com velocidade angular de 1 rotação a cada 20 segundos no eixo z, e 0.1 rotação a cada 20 segundos no eixo y. Os gráficos abaixo apresentam a velocidade angular e as direções inerciais do momento angular em função do tempo. As velocidades angulares aparecem na Figura B-7, onde o movimento de nutação é evidenciado.

 

Fig. B-7 – Velocidades angulares num corpo com rotação com movimento de nutação.

 

A atitude em ângulos de Euler desta simulação é mostrada nas Figuras B-8, B-9, B-10 e B-11, respectivamente em eixos 1-2-3, 3-1-2, 3-1-3 e 3-2-1. A atitude inicial considerada foi de 180o ao redor de z, 4,2892o ao redor de x e 0o ao redor de z (3-1-3), mostrado no código abaixo. Nesta configuração, o momento angular fica alinhado ao eixo z inercial, o que facilita a interpretação dos resultados (Figura B-12).

     

w._1 = 0.;

      w._2 = PI/100.;

      w._3 = 1.*PI/10.;

      istat = set_ang_velocity (w);

      ezxz._1 = 180*RADIANS;

      ezxz._2 = 4.2892*RADIANS;

      ezxz._3 = 0*RADIANS;

      quater = ezxzquat (ezxz);

      istat = set_attitude (quater);

 

Fig. B-8 – Atitude em graus (rotação x-y-z).

 

Fig. B-9 – Atitude em graus (rotação z-x-y).

 

Fig. B-10 – Atitude em graus (rotação z-x-z).

 

Fig. B-11 – Atitude em graus (rotação z-y-x).

Fig. B-12 – Momento angular do corpo no sistema inercial.

 

5)      A matriz de inércia é ainda diagonal, com elementos iguais a 10, 15 e 20, com velocidade angular de 1 rotação a cada 20 segundos no eixo y, e 0.1 rotação a cada 20 segundos no eixo x conforme o código mostrado a seguir. O gráfico da Figura B-13 apresenta a velocidade angular em função do tempo. O movimento de nutação é evidenciado nesta figura, onde se percebe a instabilidade do movimento ao redor do eixo de inércia intermediário.

 

Fig. B-13 – Velocidades angulares num corpo com rotação ao redor do eixo de inércia intermediário.

 

Adotou-se uma atitude inicial, nesta simulação, de forma a que o momento angular novamente coincida com o eixo z inercial. Neste caso a atitude foi de 180o ao redor de z, 90o ao redor de x e 3,8141o ao redor de z (3-1-3), também mostrado no código a seguir.

 

      w._1 = PI/100.;

      w._2 = 1.*PI/10.;

      w._3 = 0;

      istat = set_ang_velocity (w);

      ezxz._1 = 180*RADIANS;

      ezxz._2 = 90*RADIANS;

      ezxz._3 = 3.8141*RADIANS;

      quater = ezxzquat (ezxz);

 

A Figura B-14 mostra a atitude em ângulos de Euler em rotações z-x-y (3-1-2). A Figura B-15 ilustra o momento angular em coordenadas referidas ao sistema inercial, evidenciando o alinhamento com o eixo z (as demais coordenadas são nulas).

 

Fig. B-14 – Atitude num movimento de nutação com velocidade angular próxima ao eixo do momento de inércia intermediário.

 

Fig. B-15 – Momento angular do corpo referido ao sistema inercial

 

6)      Neste exemplo mantém-se a matriz de inércia diagonal, com elementos iguais a 10, 15 e 20, com posição inicial nula e velocidade angular de 1 rotação a cada 20 segundos no eixo x, e 0.1 rotação a cada 20 segundos no eixo z. Os gráficos mostrados nas Figuras B-16, B-17 e e B-18 apresentam a velocidade angular e atitude em rotações de Euler nos eixos 3-1-3 e 3-2-1, respectivamente. O momento angular em coordenadas inerciais é apresentado na Figura B-19, no qual percebe-se novamente o alinhamento com o eixo z inercial. Como a velocidade angular encontra-se preferencialmente ao redor do eixo de menor momento de inércia, tem-se novamente um movimento de nutação. Veja aqui uma animação deste movimento

 

Fig. B-16 – Velocidades angulares de um corpo com movimento de nutação. As componentes da velocidade nas direções y e z são quase senoidais, enquanto que a velocidade ao redor do eixo x permanece praticamente constante.

 

Fig. B-17 – Atitude num movimento de nutação em rotações de Euler nos eixos z-x-z, com velocidade angular próxima ao eixo de menor momento de inércia.

 

Fig. B-18 – Atitude em ângulos de Euler nos eixos z-y-x, e velocidade angular próxima ao eixo de menor momento de inércia.

 

Fig. B-19 – Momento angular do corpo no sistema de coordenadas inerciais. Nota-se que não há variação do momento angular uma vez que não há torques externos.

 

O código abaixo apresenta a versão do programa utilizada para gerar os Exemplos 4, 5 e 6.

 

// Código dependente do compilador

#ifdef WIN32

      #define copysign _copysign

#endif

 

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

#include <float.h>

 

#include "att_pro.h"         // cabeçalho do pacote

 

int main (void)

{

            quaternion quater;

      matrix3 iner;

      matrix3 test;

      vector3 vec1;

      vector3 w, ezxz, exyz;

      double t;

      double t_start, t_end, t_step;

      int istat;

     

// ************** arquivo para impressão de valores de saída

     

      FILE *nfile;

      nfile = fopen("attit.dat", "w");

     

// ************** inércia e massa

     

      iner = mat3_def(10., 0., 0., 0., 15., 0., 0., 0., 20.);

      istat = set_sat_inertia (iner);

     

      test = get_sat_inertia ();

      printf(" inertia \n");

      printf(" %10.4f %10.4f %10.4f \n", test._1._1, test._1._2, test._1._3);

printf(" %10.4f %10.4f %10.4f \n", test._2._1, test._2._2, test._2._3);

printf(" %10.4f %10.4f %10.4f \n", test._3._1, test._3._2, test._3._3);

     

// **************** tempo de integração

     

      t_start = 0;

      t_end   = 200;

      t_step  = 1.;

      istat = set_current_time (t_start);

      istat = set_step_time (t_step);

      istat = set_int_step_time (t_step/10.);

     

// **************** parâmetros iniciais de atitude

     

//    w._1 = 0.;

//    w._2 = PI/100.;         // Exemplo 4

//    w._3 = 1.*PI/10.;

//    ezxz._1 = 180*RADIANS;

//    ezxz._2 = 4.2892*RADIANS;

//    ezxz._3 = 0*RADIANS;

     

//    w._1 = PI/100.;

//    w._2 = 1.*PI/10.;       // Exemplo 5

//    w._3 = 0;

//    ezxz._1 = 180*RADIANS;

//    ezxz._2 = 90*RADIANS;

//    ezxz._3 = 3.8141*RADIANS;

     

      w._1 = 1.*PI/10.;

      w._2 = 0;               // Exemplo 6

      w._3 = PI/100.;

      ezxz._1 = 180*RADIANS;

      ezxz._2 = 78.6901*RADIANS;

      ezxz._3 = 90*RADIANS;

     

      istat = set_ang_velocity (w);

      quater = ezxzquat (ezxz);

      istat = set_attitude (quater);

     

            exyz = DEGREES*quatezxz(quater);

     

      printf(" Quaternion ");

      printf("%10.4f %10.4f %10.4f %10.4f  \n", quater._1,

            quater._2, quater._3, quater._4);

      printf(" Euler angles 3-1-3 ");

      printf("%10.4f %10.4f %10.4f \n", exyz._1, exyz._2, exyz._3);

      printf(" Momento angular ");

      exyz = get_sat_ang_momentum();

      printf("%10.4f %10.4f %10.4f \n", exyz._1, exyz._2, exyz._3);

     

// **************** configuração do integrador

     

      istat = select_integ_method(INTEG_RKF_78, INTEG_FIX);

     

// ***************** malha de integração

     

      while (t < t_end) {

     

            quater = get_attitude ();

            w = get_ang_velocity ();

            t = get_current_time ();

     

// ***************** arquivo de saída

     

            fprintf(nfile, " %10.6f, ", t);

fprintf(nfile, " %14.6f, %14.6f, %14.6f, ", w._1, w._2, w._3);

     

//          exyz = DEGREES*rmxexyz(quatrmx(quater));

//          exyz = DEGREES*rmxezxy(quatrmx(quater));

            exyz = DEGREES*rmxezxz(quatrmx(quater));

//          exyz = DEGREES*rmxezyx(quatrmx(quater));

     

fprintf(nfile, " %14.6f, %14.6f, %14.6f, ", exyz._1, exyz._2, exyz._3);

            vec1 = get_sat_ang_momentum();

            fprintf(nfile, " %14.6f, %14.6f, %14.6f, \n", vec1._1, vec1._2, vec1._3);

     

// ***************** propagação da atitude

     

            sat_propagation ();

            t = get_current_time ();

      }

     

      fclose (nfile);

      return 0;

}

 

1)