Движение твердого тела под действием следящей силы
Задание для лабораторной работы по курсу Динамика твёрдого тела и систем тел.
Построить модель движения орбитальной ступени ракеты-носителя после отделения полезного груза в течение 30 секунд относительно орбитальной подвижной системы координат, которая считается инерциальной. Принять допущение о том, что орбитальная ступень движется только под действием силы тяги \(P\) сопла торможения.
Описание механической системы
- Схема орбитальной ступени показана на рисунке 1.
Рисунок 1 – Схема ступени
- Инерционно-массовые характеристики ступени
| Параметр | Значение |
|---|---|
| Масса ступени | 5000 кг |
| Положение центра масс, \(x_c\) | 3 м |
| Момент инерции относительно продольной оси | 5000 кг\(\cdot\)м \(^2\) |
| Момент инерции относительно любой поперечной оси | 10000 кг\(\cdot\)м \(^2\) |
- Тяга реактивного сопла увода
Рисунок 2 – Закон изменения тяги реактивного сопла
В качестве параметров, определяющих угловое положение ступени, использовать
- направляющие косинусы;
- углы Эйлера (пассивная точка зрения);
- кватернионы
Последовательность поворотов углов Эйлера выбирается из следующей таблицы:
| Вариант | Последовательность |
|---|---|
| 1 | 313 |
| 2 | 231 |
| 3 | 121 |
| 4 | 312 |
| 5 | 132 |
| 6 | 321 |
| 7 | 213 |
| 8 | 232 |
| 9 | 323 |
| 10 | 131 |
| 11 | 212 |
Номер варианта определяется по номеру в ведомости.
- Начальные условия
В начальный момент времени координаты центра масс равны нулю, скорость ступени равна нулю (по отношению к орбитальной подвижной системы координат). Начальные углы поворота определяются выражением: \[\varphi_1 = 1 + (\text{N} \times 100) \mod 5, \; \varphi_1 = (\text{N} \times 100) \mod 10, \; \varphi_1 = (\text{N} \times 100) \mod 15.\]
где \(N\) – номер варианта.
Проекция начальной угловой скорости ступени на ее продольную ось равна 2 градусу в секунду, проекции угловой скорости на поперечные оси равны нулю.
Задание
- Построить графики изменения проекций угловой скорости ступени на связанные оси: \(\omega_x, \omega_y, \omega_z\).
- Построить графики изменения координат и проекций скорости центра масс ступени на оси орбитальной подвижной системы координат: \(x,y,z\), \(V_x, V_y, V_z\).
- Построить графики изменения углов: \(\varphi_1, \varphi_2, \varphi_3\).
- Определить проекции единичного вектора направление вектора кинетического момента ступени после окончания работы реактивного сопла (через 30 секунд после начала движения) в орбитальной подвижной системе \(O x_0 y_0 z_0\).
- Определить угол нутации и угловую скорость прецессии орбитальной ступени после окончания работы реактивного сопла (через 30 секунд после начала движения).
- В течение 10 секунд после окончания работы реактивного сопла (с 30 по 40 секунду после начала движения) сравнить численное и аналитические решения для проекций угловой скорости ступени, используя общее аналитическое решение для случай Эйлера (построить аналитическое решение для начальных условий \(\omega_x^0 = \omega_x(30), \omega_y^0 = \omega_y(30), \omega_z^0 =\omega_z(30)\) и сравнить его с продолжением численного решения до t = 40 c).
Методические указания
Пример MATLAB-кода для углов Брайнта (123)
Главный файл-скрипт для запуска процесса интегрирования
% Масса
params.m = 5000.0;
% Матрица тензора инерции
params.J = [5000.0, 0, 0;
0 , 20000, 0;
0 , 0 , 20000];
% Матрица обратная матрице тензора инерции
params.invJ = inv(params.J);
% Функция силы от времени
% Текущее значение силы интерполируется по таблице значений
% при помощи функции interp1
params.sopForceTable = @(t) interp1([0 5 10 15 30 50],[1000 380 150 50 0 0],t);
% Точка приложения силы в ССК
params.pFsop = [1.5;
1.0*sin(45*pi/180.0);
1.0*cos(45*pi/180.0)];
% Единичный вектор направления силы в ССК
params.nFsop = [-cos(20*pi/180.0);
+sin(20*pi/180.0)*cos(55*pi/180.0);
-sin(20*pi/180.0)*cos(35*pi/180.0)];
% Начальные условия
% Положение центра масс
r0 = [0;0;0];
% Скорость центра масс
v0 = [0;0;0];
% Начальная ориентация (углы Брайнта 1-2-3)
a0 = [0;0;0];
% Начальная угловая скорость
w0 = [0;0;0];
% Начальный вектор состояния
q0 = [r0;a0;v0;w0];
% Интервал интегрирования от 0 до 30 секунд с шагом 0.2 с
% Другой вариант (с заданным количеством точек) linspace(0,30,100)
% 100 точек в интервале от 0 до 30 с
tspan = 0:0.2:30;
% Относительная погрешность
option = odeset('RelTol',1e-8);
% Запуск процесса интегрирования дифференциальных уравнений
[t, q] = ode45(@(t,q) dqdt_orbital_stage(t,q,params), tspan, q0, option);
Файл-функция правых частей
function dq = dqdt_orbital_stage(t,q,params)
%dqdt_orbital_stage.m Файл-функция правых частей дифференциальных уравнений
% движения орбитальной ступени
r = q(1:3); % Положение центра масс
a = q(4:6); % Углы Брайнта
v = q(7:9); % Скорость центра масс
w = q(10:12); % Угловая скорость
% Матрица преобразования координат из
% связанной системы координат (ССК)
% в орбитальную (ОСК)
A = Axyz(a(1),a(2),a(3));
% Модуль силы
F = params.sopForceTable(t);
% Вектор силы в ССК
% Значение * единичный вектор направления
Fsop_b = F*params.nFsop;
% Вектор момента этой силы относительно ССК
Msop_b = cross(params.pFsop, Fsop_b);
% Вектор силы в ИСК
Fsop_0 = A*Fsop_b;
% Ускорение центра масс
dv = Fsop_0/params.m;
% Угловое ускорение
dw = params.invJ*(Msop_b - cross(w,params.J*w));
% Кинематические уравнения для углов Брайнта
% (производные углов)
da = kinematicEq123(a, w);
% Собираем ответ
% Значение правой части системы ДУ
dq = [v; da; dv; dw];
end
Функция вычисления производных углов Брайнта (функция кинематических уравнений)
function da = kinematicEq123(a, w)
%kinematicEq123.m Кинематические уравнения для углов Брайнта
% Последовательность XY'Z'' (пассивная точка зрения)
%
% Аргументы:
% a - строка или столбец углов Брайнта в радианах
% w - строка или столбец угловых скоростей радиан/с
% Результат:
% res - столбец производных углов Брайнта
%
c3 = cos(a(3));
s3 = sin(a(3));
c2 = cos(a(2));
s2 = sin(a(2));
da = [ w(1)*c3/c2 - w(2)*s3/c2;
w(1)*s3 + w(2)*c3;
-w(1)*c3*s2/c2 + w(2)*s3*s2/c2 + w(3)];
end
Файл-функция Axyz.m
function A = Axyz(a1, a2, a3)
A = Ax(a1)*Ay(a2)*Az(a3);
end
function A = Ax(angle)
c = cos(angle);
s = sin(angle);
A = [1, 0, 0;
0, c, -s;
0, s, c];
end
function A = Ay(angle)
c = cos(angle);
s = sin(angle);
A = [c, 0, s;
0, 1, 0;
-s, 0, c];
end
function A = Az(angle)
c = cos(angle);
s = sin(angle);
A = [c, -s, 0;
s, c, 0;
0, 0, 1];
end