Die vorherige Frage Wie lange dauert es, eine GTO-Umlaufbahn mit Ionenantrieb zu kreisförmigisieren? hat eine gute, quantitative Antwort basierend auf einem bekannten Delta-v.
Aber ich frage mich, wie Sie eigentlich einen kontinuierlichen Ionenschub anstreben würden, wenn Sie sich zu Beginn in einer stark elliptischen Umlaufbahn bewegen? Gibt es eine Möglichkeit, dies zu tun, ohne viel Treibmittel zu verschwenden? Oder verwenden Sie den Schub nur während eines Bruchteils der Umlaufbahn (am Anfang) in der Nähe der Periapsis, und daher dauert es länger, das Delta-V zu akkumulieren, weil das Triebwerk tatsächlich die meiste Zeit ausgeschaltet ist?
Hier ist eine schnelle, alberne Berechnung, die zeigt, dass es für 0,2 N und 2200 kg, beginnend bei 300 km LEO, etwa 600 Tage dauert, um langsam zu GEO zu gelangen. Der Satellit dreht sich einmal pro Umdrehung um die Erde, also muss ich die Rotationsrate ab und zu ein winziges bisschen verlangsamen, um sie synchron zu halten, damit der Schub immer tangential zur kreisförmigen Umlaufbahn ist.
Angenommen, ich möchte von einer standardmäßigen Hohman-Transfer-Ellipse (GTO) ausgehen und mein Programm erneut ausführen. Periapsishöhe 300 km, Apoapsis bei GEO. Nehmen wir an, es gibt nichts anderes bei GEO, mit dem man kollidieren könnte, um es einfach zu machen.
F1: Sollte sich das Raumschiff langsam drehen oder eine feste Lage haben, vielleicht tangential zur Apoapsis, um die geringste Menge an Ionentreibstoff zu verwenden? Bei Rotation mit konstanter oder ansteigender Rate?
F2: Wie würde man den Schub und die Lage modulieren, um einen standardmäßigen elliptischen GTO mit dem 0,2N-Ionenantrieb in kürzester Zeit kreisförmig zu machen?
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()
TL; DR: Die Trajektorienoptimierung für kontinuierlichen Schub ist schwierig und dieses Gebiet ist sehr aktiv in der Forschung.
Klarstellungen 2021:
In dieser älteren Antwort erwähne ich die Ruggiero-Kontrollgesetze: Diese liefern die effizientesten Schubwinkel basierend auf einer echten Anomalie, um ein Orbitalelement (oder einen Satz davon) zu ändern. Das Papier liefert auch die partiellen Ableitungen der Gleichungen, die man verwenden kann, um die Effizienz zu bestimmen ( ) ein Orbitalelement an einer gegebenen wahren Anomalie zu modifizieren.
Diese Antworten sind spezifisch für das Anheben der großen Halbachse und das Erreichen einer Exzentrizität von Null. Es beantwortet nicht die Lösung für eine echte GEO-Umlaufbahn, die zusätzliche Einschränkungen für die Neigung (nahe Null) und andere Umlaufbahnelemente hat, die für eine bestimmte Mission spezifisch sind.
F1: Sollte sich das Raumschiff langsam drehen oder eine feste Lage haben, vielleicht tangential zur Apoapsis, um die geringste Menge an Ionentreibstoff zu verwenden? Bei Rotation mit konstanter oder ansteigender Rate?
Wenn Ihr Schub immer in Richtung des Geschwindigkeitsvektors ist, erhöhen Sie kontinuierlich die Geschwindigkeit des Raumfahrzeugs und erhöhen daher Ihre SMA (zusammen mit der Änderung anderer Elemente). Um eine Umlaufbahn zu kreisförmigisieren, müssen Sie nur Ihre Periapse anheben, bis sie mit Ihrer Apapse übereinstimmt. Um Ihren SMA zu erhöhen, müssen Sie die ganze Zeit stoßen ... aber das wird Ihre Exzentrizität beeinträchtigen. Daher ist der beste Ansatz wahrscheinlich, Ihren SMA bis GEO anzuheben und dann Ihre Umlaufbahn zu kreisen. Um möglichst wenig Treibstoff zu verbrauchen, sollten Sie Ihren Motor nur einschalten, wenn Sie sich in einem sehr kleinen Bereich Ihrer Periapse befinden, so dass Ihre Apapse eine halbe Umlaufbahn später sehr leicht erhöht ist. Wiederholen Sie das, bis Sie Ihren Ziel-SMA erreicht haben. Dann zirkulieren.
F2: Wie würde man den Schub und die Lage modulieren, um einen standardmäßigen elliptischen GTO mit dem 0,2N-Ionenantrieb in kürzester Zeit kreisförmig zu machen?
Man würde die Winkel in der Ebene und außerhalb der Ebene kontinuierlich schieben und variieren, so dass sowohl die Neigung als auch die SMA zu jedem Zeitpunkt während der gesamten Umlaufbahn modifiziert werden, jedoch durch Gewichtung eines der Umlaufbahnelemente mehr als das andere basierend auf ihre Effizienz. Das High-Fidelity Nyx-Astrodynamik-Toolkit bietet die Ruggiero-Kontrollgesetze sofort einsatzbereit.
Bearbeiten: In Bezug auf die Rotation Ihres Raumfahrzeugs möchten Sie die Schubwinkel in der Ebene und außerhalb der Ebene (in Bezug auf den RNC-Rahmen des Raumfahrzeugs) darstellen. Das gibt Ihnen eine Vorstellung davon, wie viel die Motoren kardanisch aufhängen müssen, bevor sie stoßen. Dieser Winkel hängt vollständig davon ab, welche Orbitalparameter Sie ändern (vgl. Steuergesetze von Naasz, Ruggiero und Petropoulos). Ich gehe davon aus, dass sich dieser Winkel während einer Umlaufbahnkorrektur nicht wesentlich ändert, aber ich kann mich irren (hoffentlich habe ich bald eine Antwort ). Diese Erwartung basiert auf den Gleichungen, die die augenblicklich optimale Korrektur jedes Parameters durchführen, vgl. Abbildungen 4 und 5 unten.
Wenn Sie kontinuierlichen Schub verwenden, möchten Sie im Allgemeinen das Problem der optimalen Steuerung lösen. Beim Lösen eines Problems der optimalen Steuerung minimieren Sie eine Funktion, dh Sie suchen nach einer Funktion (der Steuerung), die Ihre Kostenfunktion bei jedem Zeitschritt minimiert (siehe Screenshot der Präsentation meiner Gruppe unten).
Es gibt verschiedene Möglichkeiten, das Problem der optimalen Steuerung für das Design von Trajektorien mit niedrigem Schub zu lösen, und (wie leider oft) ist jede Gruppe von Forschern etwas isoliert.
Aus der (unveröffentlichten) Forschung, die zwei Kollegen und ich durchgeführt haben, gibt es einige Strategien, um dieses Problem zu lösen, die ich im Folgenden zusammenfasse. Alle außer dem ersten lösen ein optimales Steuerungsproblem.
Am einfachsten: Verwenden Sie ein suboptimales Regelungsgesetz (wie das Petropoulos-Q-Gesetz), das einem Optimierer wie einem genetischen Algorithmus zugeführt wird. Dies führt zu einer suboptimalen Lösung für die Trajektorie, liegt aber oft sehr nahe an der optimalen Lösung. Alles, was Sie brauchen, ist das Q-Law und das GA zu codieren und eine Anfangs- und Endumlaufbahn zu definieren. Andere Steuerelemente, die es wert sind, überprüft zu werden, sind Naasz und Ruggiero (beachten Sie jedoch, dass die ursprüngliche Formulierung für das Naasz-Steuerelement nur in Fällen validiert wurde, in denen Sie den Wert eines Orbitalparameters erhöhen möchten und Sie eine geringfügige Änderung an den vorzunehmenden Gleichungen vornehmen müssen es funktioniert anders (ich kann die Informationen bei Bedarf bereitstellen, ich habe die Änderungen in meiner eigenen Forschung validiert)).
Die theoretischste und mathematiklastigste Methode: die indirekten Methoden, die das Zweipunkt-Randwertproblem lösen, indem sie den Hesse-Wert finden. Erfordert die gewünschten Anfangs- und Endbedingungen. Es gibt mehrere solcher Methoden, die größtenteils 1998 von Betts eingeführt wurden, darunter Direct Shooting, Indirect Shooting und in jüngerer Zeit indirekte Kollokation. Eines der Probleme, auf die Sie stoßen werden, ist die Auswahl der anfänglichen Lagrange-Multiplikatoren, da Sie wissen, dass eine schlechte Wahl die Konvergenz verhindern kann. Außerdem führen diese Verfahren zu Open-Loop-Lösungen.
Direkte Methoden: Die Zeit wird diskretisiert und bei jedem Schritt versucht man, die beste Kontrolle zu finden. Auch dies ist ein Open-Loop-Verfahren, und aufgrund der Problemstellung stößt man auf den Fluch der Dimensionalität (vgl. Lantoine 2012). Dennoch wird dies von manchen als Stand der Technik der Trajektorienoptimierung angesehen (vgl. „Spacecraft trajectory optimizer“, Conway 2010).
Ein besserer Weg: dynamisches Programmieren: Die Idee hier ist, das Problem in einfachere unabhängige Probleme aufzuteilen (ein „Teile und herrsche“-ähnlicher Ansatz) und das Prinzip der Optimalität anzuwenden (Bellmans Graphtraversing-Prinzip, bei dem der kürzeste Weg von a nach c entspricht dem kürzesten Weg von a nach b und von b nach c) (vgl. Abbildung 2). Der Hauptnachteil hier ist, dass die Aufteilung des Zustandsraums in unabhängige Unterprobleme bedeutet, dass Sie eine Menge Speicher verwenden werden, um die laufenden Lösungen zu speichern ... und dann müssen Sie diesen Graphen durchlaufen. Der Hauptvorteil besteht jedoch darin, dass Sie immer die global optimale Lösung finden und die zurückgegebene Funktion eine Regelung mit geschlossenem Regelkreis ist.
Differenzielle dynamische Programmierung: Dies ist an sich keine sehr neue Methode, aber sie gewinnt in der jüngeren Geschichte definitiv wieder an Bedeutung. Insbesondere wird es in NASA Mystic verwendet, das die Flugbahnoptimierung für die Dawn-Mission durchführt (die drei Safran PPS-1350 hat, aber jeweils nur eine eingeschaltet ist, es ist eine ziemlich coole Mission). Die Idee dieser Methode besteht darin, eine anfängliche Schätzung für die Steuerung auszuwählen, die (echte) Dynamik vorwärts zu propagieren, die Kosten zu berechnen und eine Korrektur der Steuerung durch Rückwärtspropagation durchzuführen (aber unter Verwendung einer quadratischen Annäherung der Dynamik (d. h. Sie werden brauchen die Zustandsübergangsmatrix und auch die Jacobi-Matrix des STM, die die Hessische der Dynamik ist)), und prüfen Sie schließlich, ob Sie die Kostenfunktion minimieren, indem Sie wieder vorwärts propagieren (vgl. Abbildung 3). Die Referenzen Sie'
Ich hoffe das hilft!
Ich habe diese Antwort ursprünglich hier gepostet . Das ist eine Zahl, die ich von einer Klassenaufgabe von vor ein paar Jahren habe. Obwohl es definitiv keine praktische Flugbahn ist, zeigt es die Eigenschaften, wie man von einer elliptischen auf eine kreisförmige Umlaufbahn übergeht. Diese Lösung wurde mit indirekter Optimierung berechnet. Dieses Problem ging von einer konstanten Schubgröße aus (das Triebwerk feuert also immer), wobei die Steuervariable der Schubwinkel ist. Die Zielfunktion war min(t_f).
Wie die Abbildung zeigt, liegen die Schubvektoren (gelbe Pfeile) ungefähr in Geschwindigkeitsrichtung in der Nähe von Periapsis und Apoapsis, und sie stehen ungefähr senkrecht zwischen den Apsen. Wenn die Schubvektoren im Allgemeinen mit dem Geschwindigkeitsvektor (parallel oder antiparallel) übereinstimmen, passen sie die Orbitalenergie an (und erhöhen/verringern daher die große Halbachse). Wenn die Schubvektoren senkrecht zur Geschwindigkeit sind, passen sie die Exzentrizität (Form) und das Argument der Periapsis (Orientierung) der Umlaufbahn an.
Dieses Problem ist 2D, aber um eine Neigungsänderung zu erreichen, sollten Sie in der Nähe der Apsiden aus der Ebene stoßen. Sie können sich dies so vorstellen, dass es bei der Periapsis "in die Seite" zeigt und sich langsam nach oben dreht, bis es sich in der Mitte in der Ebene befindet, und schließlich bei der Apoapsis "aus der Seite heraus".
Ein realistischerer Transfer von GTO zu GEO würde VIEL mehr Spiralen verwenden als bei diesem Problem (das ein doofer Transfer von einer verrückten elliptischen Umlaufbahn zur Umlaufbahn des Mars ist). Bei einem CubeSat oder Smallsat mit sehr begrenztem Antrieb könnte ein Transfer von etwa 6 Monaten über 250 Spiralen dauern!
Eine weitere bemerkenswerte Unterscheidung besteht darin, dass dieses Problem eine minimale Zeit im Gegensatz zu einer minimalen Brennstoffübertragung löste. Im Allgemeinen sind Probleme mit minimalem Kraftstoffverbrauch bekanntermaßen viel schwieriger mit indirekter Optimierung zu lösen, und es ist üblich, Homotopie zu verwenden, um zuerst das Problem min (u ^ 2) zu lösen (wobei u der Steueraufwand ist, in diesem Fall die Schubgröße ) und dann mit ausgefallener Mathematik Schritt für Schritt näher und näher an min(u) heran. Das min(u^2)-Problem hat einen viel größeren Konvergenzradius, so dass erfolgreiche anfängliche Schätzungen der Küsten viel einfacher zu finden sind. Diese numerischen Schwierigkeiten sind mit ein Grund, warum in der Praxis fast immer direkte Methoden bevorzugt werden. Bei Transfers mit sehr geringem Schub kann ein Transfer in minimaler Zeit oft nahe an einem Transfer mit minimalem Treibmittel liegen.
Wenn Sie einen hohen Schub zur Verfügung haben, würde ein GTO-zu-GEO-Transfer mit impulsiven Manövern an den Apsis abgeschlossen werden. Wenn Ihr maximales Schubniveau abnimmt, müssen Sie entweder über größere Abschnitte der Umlaufbahn schieben, Sie müssen für mehr Umlaufbahnen schieben oder beides. Verfügbare Treibstoff- und Zeitbeschränkungen bestimmen die endgültige Trajektorienauswahl.
Russell Borogove
äh
Russell Borogove
äh
Russell Borogove
HopDavid
Russell Borogove