Предыдущий вопрос Сколько времени требуется, чтобы выйти на круговую орбиту GTO с использованием ионного двигателя? имеет хороший количественный ответ , основанный на известной дельта-v.
Но мне интересно, как бы вы на самом деле нацеливали непрерывную ионную тягу, когда вы двигаетесь по высокоэллиптической орбите в начале? Есть ли способ сделать это, не тратя много топлива? Или вы используете тягу только в течение части орбиты (в начале), когда она находится вблизи перицентра, и, следовательно, требуется больше времени для накопления дельта-v, потому что двигатель фактически выключен большую часть времени?
Вот быстрый, глупый расчет, показывающий, что для 0,2N и 2200 кг, начиная с 300 км LEO, требуется около 600 дней, чтобы медленно выйти на GEO. Спутник вращается один раз за один оборот вокруг Земли, поэтому мне приходится время от времени немного замедлять скорость вращения, чтобы поддерживать их синхронизацию, чтобы тяга всегда была касательной к круговой орбите.
Теперь предположим, что я хочу начать со стандартного эллипса переноса Хомана (GTO) и снова запустить свою программу. Высота перицентра 300 км, апоцентр на гео. Давайте предположим, что в GEO больше нет ничего, с чем можно было бы столкнуться, чтобы упростить задачу.
Q1: Чтобы использовать наименьшее количество ионного топлива, должен ли космический корабль медленно вращаться или иметь фиксированное положение, возможно, по касательной к апоапсису? При вращении с постоянной или линейной скоростью?
Q2: Как можно модулировать тягу и положение, чтобы сделать стандартный эллиптический GTO круговым с использованием ионного двигателя 0,2 Н за наименьшее количество времени?
def deriv(X, t):
r, v = X.reshape(2, -1)
vhat = v / np.sqrt((v**2).sum())
rhat = r / np.sqrt((r**2).sum())
rsq = (r**2).sum()
acc_grav = -GMe * rhat / rsq
acc_thrust = vhat * acc # right now, thrust is just in vhat direction
return np.hstack((v, acc_grav + acc_thrust))
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint
GMe = 3.986004418E+14 # m^3/s^2
re = 6371.E+03 # m
alt = 300.E+03 # m
a = re + alt # m
v0 = np.sqrt(GMe / a) # vis-viva equation for circular
T = 2. * np.pi * a / v0
print "period (min) ", T/60., " at ", alt, " km altitude."
acc = 0.2/2200. # m/s^2 0.2N and 2200kg
X0 = np.array([a, 0, 0, 0, v0, 0]) # initial state vector
days = np.linspace(0, 600, 100000)
t = days * 24. * 3600.
tol = 1E-10 # good enough for rough answer but not an accurate trajectory
answer, blob = ODEint(deriv, X0, t, rtol=tol, atol=tol, full_output=True)
xp, yp = 0.001*answer.T[:2]
alti_km = np.sqrt(xp**2 + yp**2) - 0.001*re
if 1 == 1:
plt.figure()
plt.subplot(3, 1, 1)
plt.plot(days, xp)
plt.plot(days, yp)
plt.title('x, y (km)')
plt.subplot(3, 1, 2)
plt.plot(xp, yp)
plt.title('xy (km)')
plt.subplot(3, 1, 3)
plt.plot(days, alti_km)
plt.title('altitude (km)')
plt.show()
тл; Д.Р.: Оптимизация траектории для непрерывной тяги сложна, и в этой области ведутся очень активные исследования.
Разъяснения 2021 года:
В этом более старом ответе я упоминаю законы управления Руджеро: они обеспечивают наиболее эффективные углы тяги, основанные на истинной аномалии, для изменения элемента орбиты (или его набора). В статье также приводятся частные производные уравнений, которые можно использовать для определения эффективности ( ) модификации элемента орбиты при заданной истинной аномалии.
Эти ответы относятся к поднятию большой полуоси и достижению нулевого эксцентриситета. Он не отвечает решению для реальной орбиты GEO, которая имеет дополнительные ограничения на наклонение (около нуля) и другие элементы орбиты, характерные для данной миссии.
Q1: Чтобы использовать наименьшее количество ионного топлива, должен ли космический корабль медленно вращаться или иметь фиксированное положение, возможно, по касательной к апоапсису? При вращении с постоянной или линейной скоростью?
Если ваша тяга всегда направлена в направлении вектора скорости, вы постоянно увеличиваете скорость космического корабля и, следовательно, увеличиваете SMA (наряду с изменением других элементов). Чтобы сделать орбиту круговой, вам нужно поднять только периапсе, пока она не совпадет с апоапсисом. Чтобы поднять SMA, вам нужно все время толкать... но это повлияет на вашу эксцентричность. Следовательно, лучший подход, вероятно, состоит в том, чтобы поднять SMA до GEO, а затем сделать круговую орбиту. Чтобы потреблять наименьшее количество топлива, вы должны включать двигатель только тогда, когда вы находитесь в очень небольшой области вашего периапсида, так что ваш апоапсис очень немного увеличивается на полвитка позже. Повторяйте это, пока не достигнете целевого SMA. Затем сделать круг.
Q2: Как можно модулировать тягу и положение, чтобы сделать стандартный эллиптический GTO круговым с использованием ионного двигателя 0,2 Н за наименьшее количество времени?
Можно было бы постоянно толкать и изменять углы в плоскости и вне плоскости, так что наклонение и SMA изменялись бы в любой момент времени по всей орбите, но путем взвешивания одного из элементов орбиты больше, чем другого на основе их эффективность. Высокоточный астродинамический инструментарий Nyx предоставляет готовые законы управления Руджеро.
Редактировать: Что касается вращения вашего космического корабля, вы захотите построить углы тяги в плоскости и вне плоскости (относительно рамы RNC космического корабля). Это даст вам представление о том, насколько двигатели должны быть стабилизированы перед тягой. Этот угол полностью зависит от того, какие параметры орбиты вы меняете (см. законы управления Нааса, Руджеро и Петропулоса). Я ожидаю , что этот угол не сильно изменится во время коррекции орбиты, но я могу ошибаться (надеюсь, скоро будет ответ ). Это ожидание основано на уравнениях, выполняющих мгновенную оптимальную коррекцию каждого параметра, ср. рисунки 4 и 5 внизу.
Если вы используете непрерывную тягу, вы, как правило, захотите решить проблему оптимального управления. При решении задачи оптимального управления вы минимизируете функционал, т.е. ищете функцию (управление), которая минимизирует вашу функцию стоимости на каждом временном шаге (см. скриншот презентации моей группы ниже).
Существуют разные способы решения задачи оптимального управления для проектирования траектории с малой тягой, и (как это часто бывает, к сожалению) каждая группа исследователей в чем-то разрозненна.
Из (неопубликованного) исследования, которое мы с двумя коллегами провели, есть несколько стратегий для решения этой проблемы, которые я резюмирую ниже. Все, кроме первого, решают задачу оптимального управления.
Самый простой: использовать субоптимальный закон управления с обратной связью (например, Q-закон Петропулоса), который подается на оптимизатор как генетический алгоритм. Это приводит к субоптимальному решению для траектории, но часто очень близко к оптимальному решению. Все, что вам нужно, это закодировать Q-закон и ГА и определить начальную и конечную орбиты. Другие элементы управления, заслуживающие внимания, включают Naasz и Ruggiero (но обратите внимание, что первоначальная формулировка для управления Naasz была проверена только в случаях, когда вы хотите увеличить значение орбитального параметра, и вам нужно выполнить небольшое изменение в уравнениях, чтобы сделать это работает по-другому (я могу предоставить информацию, если это необходимо, я проверил изменения в своем собственном исследовании)).
Самый теоретический и математический метод: косвенные методы, которые решают двухточечную краевую задачу путем нахождения гессиана. Требуются желаемые начальные и конечные условия. Существует несколько таких методов, в основном начатых Беттсом в 1998 году, в том числе прямая стрельба, непрямая стрельба и недавно использованная непрямая коллокация. Одна из проблем, с которой вы столкнетесь, — это выбор начальных множителей Лагранжа, зная, что неправильный выбор может помешать сходимости. Кроме того, эти методы приводят к решениям с открытым контуром.
Прямые методы: время дискретизировано, и на каждом этапе вы пытаетесь найти лучший контроль. Это также метод разомкнутого цикла, и из-за того, как поставлена проблема, вы сталкиваетесь с проклятием размерности (см. Lantoine 2012). Тем не менее, некоторые считают это современным уровнем оптимизации траектории (см. «Оптимизация траектории космического корабля», Conway 2010).
Лучший способ: динамическое программирование: идея здесь состоит в том, чтобы разбить задачу на более простые независимые задачи (подход типа «разделяй и властвуй») и применить принцип оптимальности (принцип обхода графа Беллмана, где кратчайший путь от a до c соответствует кратчайшему пути из a в b и из b в c) (см. рис. 2). Основным недостатком здесь является то, что разделение пространства состояний на независимые подзадачи означает, что вы собираетесь использовать массу памяти для хранения текущих решений... и затем вам нужно будет пройти по этому графу. Однако главное преимущество заключается в том, что вы всегда найдете глобальное оптимальное решение, а возвращаемый функционал представляет собой управление с обратной связью.
Дифференциальное динамическое программирование: это не очень новый метод сам по себе, но он определенно снова набирает обороты в недавней истории. В частности, он используется в NASA Mystic, которое занимается оптимизацией траектории для миссии Dawn (у которой есть три Safran PPS-1350, но каждый раз включается только один, это довольно крутая миссия). Идея этого метода состоит в том, чтобы выбрать начальное предположение для управления, распространить (реальную) динамику вперед, вычислить стоимость, выполнить коррекцию управления путем распространения назад (но с использованием квадратичной аппроксимации динамики (т. е. вы будете нужна также матрица перехода состояний и якобиан STM, который является гессианом динамики)), и, наконец, проверьте, минимизируете ли вы функцию стоимости, снова распространяясь вперед (см. Рисунок 3). Ссылки вы'
Надеюсь, это поможет!
Я изначально разместил этот ответ здесь . Это цифра, которую я получил из классного задания несколько лет назад. Хотя это определенно не практическая траектория, она показывает характеристики перехода с эллиптической на круговую орбиту. Это решение было вычислено с помощью косвенной оптимизации. Эта задача предполагала постоянную величину тяги (поэтому двигатель всегда работает), а управляющей переменной был угол тяги. Целевая функция была min(t_f).
Как видно из рисунка, векторы тяги (желтые стрелки) направлены примерно в направлении скорости вблизи перицентра и апоцентра, а между апсидами примерно перпендикулярны. В общем, когда векторы тяги совпадают с вектором скорости (параллельно или антипараллельно), они регулируют орбитальную энергию (и, следовательно, увеличивают/уменьшают большую полуось). Когда векторы тяги перпендикулярны скорости, они регулируют эксцентриситет (форму) и аргумент перицентра (ориентацию) орбиты.
Эта задача 2D, но для достижения изменения наклона вам нужно вытолкнуть из плоскости возле апсид. Вы можете визуализировать это как указание «на страницу» в перицентре и медленное вращение вверх, пока он не окажется в плоскости в средней точке, и, наконец, «вне страницы» в апоцентре.
Более реалистичный переход с GTO на GEO потребовал бы НАМНОГО больше спиралей, чем в этой задаче (которая представляет собой глупый переход с какой-то сумасшедшей эллиптической орбиты на орбиту Марса). Для CubeSat или малого спутника с очень ограниченной тягой передача около 6 месяцев может занять более 250 спиралей!
Еще одно заметное отличие состоит в том, что эта проблема решается за минимальное время, а не за минимальное количество топлива. В общем, проблемы с минимальным расходом топлива, как известно, намного сложнее решить с помощью косвенной оптимизации, и обычно используют гомотопию, чтобы сначала решить проблему min (u ^ 2) (где u - усилие управления, в данном случае величина тяги ), а затем с причудливой математикой все ближе и ближе к min(u). Задача min(u^2) имеет гораздо более широкий радиус сходимости, поэтому успешные начальные догадки о костях найти намного проще. Эти численные трудности являются одной из причин, по которой на практике почти всегда предпочитают прямые методы. Для передач с очень малой тягой передача с минимальным временем часто может быть близка к передаче с минимальным порохом.
Когда у вас есть доступная высокая тяга, переход с GTO на GEO будет завершен импульсными маневрами в апсидах. По мере того, как ваш максимальный уровень тяги будет уменьшаться, вам придется либо совершать тягу на больших участках орбиты, либо вам придется совершать тягу для большего количества витков, либо и то, и другое. Доступное топливо и временные ограничения будут определять окончательный выбор траектории.
Рассел Борогов
ооо
Рассел Борогов
ооо
Рассел Борогов
ХопДэвид
Рассел Борогов