índiceitem superior

item anteriorpróximo item

 

Parte V: Corpo rígido sob a ação de torques de propulsores.

 

1)      Neste exemplo mostra-se uma simulação da ação de torques de controle com propulsores. A matriz de inércia é ainda diagonal, com elementos iguais a 10, 15 e 20 kgm2. Foram usados 6 propulsores, que fornecem torques nas 3 direções em ambos os sentidos. Foi usado um controle bang-bang (liga-desliga) cujo equacionamento pode ser visto em Wertz (1978), com o objetivo de eliminar a velocidade e os erros da atitude. O programa em C é mostrado abaixo, e os resultados são mostrados nas Figuras B-24, B-25, B-26 e B-27. As oscilações que aparecem nas figuras da velocidade angular e diagrama de fase devem-se à comutação entre o controle de redução da velocidade angular e o controle de posição e velocidade (bang-bang). As retas inclinadas no gráfico de fase representam a zona morta de atuação (relacionada ao MIB).

 

// configuração dos propulsores

      istat = set_thruster_flag ();

      istat = set_number_thrusters (6);

      vec1._1 = 0.4;          // Posição

      vec1._2 = 0.8;

      vec1._3 = 0.;

      vec2._1 = 0.;           // Empuxo

      vec2._2 = -2;

      vec2._3 = 0;

      set_thrusters (1, vec1, vec2);

      vec1._1 = -0.4;         // Posição

      vec1._2 = 0.8;

      vec1._3 = 0.;

      set_thrusters (2, vec1, vec2);

      vec1._1 = 0.;           // Posição

      vec1._2 = 0.8;

      vec1._3 = 0.4;

      set_thrusters (3, vec1, vec2);

      vec1._1 = 0.;           // Posição

      vec1._2 = 0.8;

      vec1._3 = -0.4;

      set_thrusters (4, vec1, vec2);

      vec1._1 = 0.4;          // Posição

      vec1._2 = 0.;

      vec1._3 = 0.6;

      vec2._1 = 0.;           // Empuxo

      vec2._2 = 0.;

      vec2._3 = -2;

      set_thrusters (5, vec1, vec2);

      vec1._1 = -0.4;         // Posição

      vec1._2 = 0.;

      vec1._3 = 0.6;

      set_thrusters (6, vec1, vec2);

 

      // atitude inicial

      exyz._1 = 80*RADIANS;

      exyz._2 = -20*RADIANS;

      exyz._3 = -150*RADIANS;

      quater = exyzquat (exyz);

      istat = set_attitude (quater);

 

      // velocidades angulares iniciais

      w._1 = 0.5;

      w._2 = 0;

      w._3 = .5;

      istat = set_ang_velocity (w);

 

      // ganhos do controlador e “minimum impulse bit”

      kp = 1;

      kd = 6.;

      mib = 0.05;

 

      while (t < t_end) {

 

            // atitude

            quater = get_attitude ();

            w = get_ang_velocity ();

            t = get_current_time ();

 

            // torque de propulsores

 

            exyz = quatexyz (quater);

            if (modulus(w) > .1) { 

                  vec2 = kp*kd*w;   // reduzir a velocidade angular se

                  tcom = t;         // for muito alta

            } else {

                  vec2 = kp*(ezxz + kd*w);     // controle bang-bang

            }

 

// inserir limitador de duração de ativação

            if (fabs(vec2._1) > 1) vec2._1 = copysign(1., vec2._1);   

            if (fabs(vec2._2) > 1) vec2._2 = copysign(1., vec2._2);                if (fabs(vec2._3) > 1) vec2._3 = copysign(1., vec2._3);

 

            // minimum impulse bit

            if (fabs(vec2._1) < mib) vec2._1 = 0;

            if (fabs(vec2._2) < mib) vec2._2 = 0;

            if (fabs(vec2._3) < mib) vec2._3 = 0;

           

vec2 = vec2*get_step_time(); // duração do acionamento

 

            // acionar os propulsores

            if (vec2._1 < 0) istat = set_thruster_duty_cycle (3, -vec2._1);

            if (vec2._1 > 0) istat = set_thruster_duty_cycle (4, vec2._1);

            if (vec2._2 < 0) istat = set_thruster_duty_cycle (5, -vec2._2);

            if (vec2._2 > 0) istat = set_thruster_duty_cycle (6, vec2._2);

            if (vec2._3 < 0) istat = set_thruster_duty_cycle (2, -vec2._3);

            if (vec2._3 > 0) istat = set_thruster_duty_cycle (1, vec2._3);

 

            vec2 = get_thruster_torque ();

            sat_propagation ();

}

 

 

 

Fig. B-24 – Velocidades angulares do corpo sob a ação de torques de propulsão.

 

Fig. B-25 – Atitude do corpo em função do tempo, sob a ação de um controle com propulsores.

 

Fig. B-26 – Diagrama de fase de uma simulação de controle com torques gerados por propulsores.

 

Fig. B-27 – Histórico de acionamento dos propulsores para o controle de atitude.