Перейти к основному содержимому

04 Урок. Стабилизация космического аппарата

Режим стабилизации космического аппарата означает поддержание нулевой угловой скорости. Такой режим необходим, например, для получения четких снимков или их передачи на наземный пункт приема, когда время передачи данных продолжительно и не допустимо отклонение антенны космического аппарата от направления на наземный пункт приема данных. Также описанная в этом уроке теория подходит для режима поддержания любой требуемой угловой скорости, а не только нулевой, для таких задач как отслеживание подвижного объекта.

Как реализовать режим стабилизации

Изменять угловую скорость аппарата можно с помощью маховиков, реактивных двигателей, электромагнитных катушек, двигателей - гиродинов. В этом примере мы рассмотрим управление управляющим моментом с помощью маховика. Действие этого устройства основано на законе сохранения момента импульса. Например, когда двигатель-маховик раскручивается в одну сторону, то космический аппарат (КА), соответственно, начинает вращаться в другую сторону под действием такого же раскручивающего момента, но направленного в противоположную сторону в соответствии с третьим законом Ньютона. Если под влиянием внешних факторов КА начал разворачиваться в определённом направлении, достаточно увеличить скорость вращения маховика в ту же сторону и нежелательный поворот КА прекратится, вместо аппарата вращательный момент «вберет» в себя маховик. Получать информацию об угловой скорости КА будем с помощью датчика угловой скорости. В этом примере мы рассмотрим как по показаниям датчика угловой скорости и данных о частоте вращения маховика рассчитать управляющие команды для маховика, чтобы космический аппарат был стабилизирован или поддерживал требуемую угловую скорость.

Теория

Аналогии между поступательным и вращательным движением

Аналогом закона сохранения импульса для вращательного движения является закон сохранения момента импульса или закон сохранения кинетического момента:

i=1nJiωi=const\sum\limits_{i=1}^{n}{{{J}_{i}}\cdot {{\omega }_{i}}}=const

Вообще вращательное движение космического аппарата описывается законами схожими с законами известными для поступательного движения. Так, например, для каждого параметра в поступательном движении есть аналогичный параметр для вращательного движения:

Законы движения

Законы движения также выглядят аналогичным образом

Законы движения

Вывод соотношения для требуемой угловой скорости маховика

Запишем закон сохранения кинетического момента системы КА+маховик для моментов времени «1» и «2»:

Jsωs1+Jmωm1=Jsωs2+Jmωm2{{J}_{s}}\cdot {{\omega }_{s1}}+{{J}_{m}}\cdot {{\omega }_{m1}}={{J}_{s}}\cdot {{\omega }_{s2}}+{{J}_{m}}\cdot {{\omega }_{m2}}

Абсолютная скорость маховика, т.е. скорость маховика в инерциальной системе координат, например, связанной с Землей, представляет собой сумму угловой скорости космического аппарата и угловой скорости маховика относительно аппарата, т.е. относительной угловой скорости маховика:

ωmi=ωsi+ωmi{{\omega }_{mi}}={{\omega }_{si}}+{{{\omega }'}_{mi}}

Обращаем внимание, что маховик может измерять собственную угловую скорость относительно корпуса КА или относительную угловую скорость.

Выразим угловую скорость маховика, которую необходимую задать

Jsωs1+Jm(ωs1+ωm1)=Jsωs2+Jm(ωs2+ωm2){{J}_{s}}\cdot {{\omega }_{s1}}+{{J}_{m}}\cdot \left( {{\omega }_{s1}}+{{{{\omega }'}}_{m1}} \right)={{J}_{s}}\cdot {{\omega }_{s2}}+{{J}_{m}}\cdot \left( {{\omega }_{s2}}+{{{{\omega }'}}_{m2}} \right)
(Js+Jm)(ωs1ωs2)=Jm(ωm1ωm2)\left( {{J}_{s}}+{{J}_{m}} \right)\left( {{\omega }_{s1}}-{{\omega }_{s2}} \right)=-{{J}_{m}}({{\omega }_{m1}}-{{\omega }_{m2}})
ωm2=ωm1+Js+JmJm(ωs1ωs2){{\omega }_{m2}}={{\omega }_{m1}}+\frac{{{J}_{s}}+{{J}_{m}}}{{{J}_{m}}}\left( {{\omega }_{s1}}-{{\omega }_{s2}} \right)

Обозначим отношение Js+JmJm\frac{{{J}_{s}}+{{J}_{m}}}{{{J}_{m}}} как kdk_d.

Для работы алгоритма необязательно знать точное значение Js+JmJm\frac{{{J}_{s}}+{{J}_{m}}}{{{J}_{m}}}, т.к. маховик не может мгновенно установить требуемую угловую скорость. Также в процесс управления вмешиваются шумы измерений: угловая скорость космического аппарата, измеренная с помощью датчика угловой скорости не является точной, т.к. в измерениях всегда есть постоянная ошибка и шум измерений. Следует учесть, что измерения угловой скорости и выдача команд маховику происходят с некоторым минимальным шагом во времени. Все эти ограничения приводят к тому, что kdk_d подбирается экспериментальным путем или строятся подробные компьютерные модели, которые учитывают все вышеописанные ограничения. В нашем случае коэффициент kdk_d будем подбирать экспериментально.

ωm2=ωm1+kd(ωs1ωs2){{\omega }_{m2}}={{\omega }_{m1}}+{{k}_{d}}\left( {{\omega }_{s1}}-{{\omega }_{s2}} \right)

Угловая скорость ωs2\omega_{s2} в момент времени «2» является целевой угловой скоростью, обозначим ее ωs_goal\omega_{s\_goal}. Таким образом, если необходимо что аппарат поддерживал угловую скорость ωs_goal\omega_{s\_goal}, то зная текущую угловую скорость космического аппарата и текущую угловую скорость маховика возможно рассчитать желаемую скорость маховика для поддержания режима «вращения с постоянной скоростью»:

ωm2=ωm1+kd(ωs1ωs_goal){{\omega }_{m2}}={{\omega }_{m1}}+{{k}_{d}}\left( {{\omega }_{s1}}-{{\omega }_{{s\_goal}}} \right)

Используя режим вращения с постоянной скоростью можно заставить космический аппарат повернуться на любой угол если вращать его с постоянной скоростью определенное время. Тогда время, которое необходимо вращать КА с постоянной скоростью ωs_goal\omega_{s\_goal}, чтобы развернуться на требуемый угол α\alpha определяется делением этих величин:

t=αωs_goalt=\frac{\alpha}{\omega_{{s\_goal}}}

Если требуется чтобы КА был застабилизирован, то ωs_goal=0\omega_{s\_goal}=0 и выражение приобретает более простой вид:

ωm2=ωm1+kdωs1{{\omega }_{m2}}={{\omega }_{m1}}+{{k}_{d}}\cdot {{\omega }_{s1}}

Пример полного кода программы стабилизации космического аппарата на языке С:

     #include <stdio.h>
#include <stdint.h>
#include "libschsat.h"
void control(void){

float gyro_x = 0, gyro_y = 0, gyro_z = 0;
uint16_t tmp=0;

gyro_set_offset(0, 4.6, -2.0, 0.7); //эти значения будут другими

float gyro_set = 0.0;
float p_koeff = 1.0;
float motor_set = 0;

for (int i = 0; i < 300; i++)
{
gyro_request_raw(tmp, &gyro_x, &gyro_y, &gyro_z); // gyro returns degrees per sec!
printf("Gyro: %6f\t Wheel_rpm: %6f\n", gyro_z, motor_set);

// simple P-controller
float delta_gyro = (gyro_set - gyro_z );
if (fabs(delta_gyro) > 0.001)
{
motor_set += delta_gyro * p_koeff;
}
motor_set_speed(0, motor_set);
mSleep(100);
}
motor_set_speed(0, 0);
// set telemetry period 1 sec
puts("Job done!");
}

Пример данных, полученных в процессе стабилизации

Рисунок 1. Пример данных, полученных в процессе стабилизации

В этой программе для стабилизации космического аппарата использован пропорциональный закон управления. Принцип действия заключается в том, что регулятор вырабатывает управляющее воздействие на объект пропорционально величине ошибки (чем больше ошибка delta_gyro, тем больше изменение скорости вращения маховика) (рисунок 2):

Пропорциональный регулятор

Рисунок 2. Пропорциональный регулятор

Задание для самостоятельной работы

1) Измените программу так, чтобы зонд вращался с постоянной скоростью.

2) Измените программу так, чтобы зонд работал по следующей циклограмме:

  • стабилизация в течении 10 секунд,
  • разворот на 180 градусов за время 30 секунд,
  • снова стабилизация в течении 10 секунд.