Verwendung der OpenGoddard 3-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung

https://github.com/istellartech/OpenGoddard https://istellartech.github.io/OpenGoddard/

Verwendung von OpenGoddard 1 Verwendung von OpenGoddard 2 OpenGoddard How to use 3 ← Jetzt hier Öffnen Sie Goddard How to use 4

Optimaler Raketenanstieg (1. Stufe)

Als Kombinationstechnik aus Normalisierung (Skalierung) und Knotenmethode, die wir bisher ausprobiert haben, führen wir eine Schubsteuerungsoptimierung mit einem Wert durch, der dem einer tatsächlichen Rakete nahe kommt.

Als Referenzproblem wird auf das im folgenden Dokument beschriebene Problem des optimalen Raketenanstiegs verwiesen. Dies verwendet auch die gleiche Legendre-Gauss-Lobatto-Pseudospektrum-Methode wie Open Goddard.

Rea, Jeremy Ryan. A legendre pseudospectral method for rapid optimization of launch vehicle trajectories. Diss. Massachusetts Institute of Technology, 2001. http://hdl.handle.net/1721.1/8608

Die kinetische Gleichung ist fast dieselbe wie Verwendung 2. Ändern Sie nur den Wert. Vergessen Sie nicht zu normalisieren, da zum Ändern des Werts eine Zahl für die Normalisierung erforderlich ist.

Danach schreibe es gut SOLVE!

3_Single_.png

Die Grafik ähnelt dem Papier. (Je nachdem, wie der Konvergenzwert eingestellt ist, unterscheidet er sich geringfügig.)

Optimaler Raketenanstieg (2 Stufen)

Die Schubsteuerungsoptimierung der zweistufigen Rakete erfolgt nach der Knotenmethode. Die wichtigsten Änderungen sind wie folgt. Die Standardlösung (Guess-Teil) wurde ebenfalls ein wenig geändert.

time_init = [0.0, 300, 600]
n = [25, 25]
num_states = [3, 3]
num_controls = [1, 1]
max_iteration = 30
prob = Problem(time_init, n, num_states, num_controls, max_iteration)
prob.dynamics = [dynamics, dynamics]
prob.knot_states_smooth = [False]

Die Zustandsvariable (Masse hier) ist als diskontinuierlich definiert. Fügen Sie der Einschränkungsbedingung (Gleichheit) Folgendes hinzu:

# knotting condition
R1 = prob.states(0, 0)
v1 = prob.states(1, 0)
m1 = prob.states(2, 0)
R2 = prob.states(0, 1)
v2 = prob.states(1, 1)
m2 = prob.states(2, 1)
result.add(R1[-1] - R2[0])
result.add(v1[-1] - v2[0])
result.add(m1[-1] - m2[0] - 1200)

Wenn Sie eingeben, sind Höhe und Geschwindigkeit kontinuierlich, und Sie können den Massenverlust (diskontinuierlich) zum Zeitpunkt der Trennung definieren.

3_TwoStage_.png

Zweistufige Rakete in zweidimensionalen Koordinaten

Das Beispiel von OpenGoddard enthält ein Beispiel unter der Annahme, dass die Rakete in zwei Dimensionen in die erdnahe Umlaufbahn gebracht wird (Polarkoordinatensystem).

3_TSTO_-0.png 3_TSTO_-1.png

Das Ergebnis von Open Goddard ist, dass es am besten ist, die obere Rakete in der Mitte anzuhalten und erneut zu entzünden, um sie in die Umlaufbahn zu bringen. Weltraumingenieure auf der ganzen Welt entwickeln Raketen usw. basierend auf den Ergebnissen dieser optimalen Umlaufbahnen.

Apropos

Die Methode, die nicht wieder entzündet wird, wird als Direktverbrennungsmethode bezeichnet, aber das erforderliche technische Niveau ist für die Direktverbrennung niedriger, und in der Realität kann die Direktverbrennung aufgrund der Kommunikation mit dem Boden oder aufgrund technischer Probleme angewendet werden. In der Realität ist es erforderlich, eine Flugbahn mit verschiedenen Rückhaltebedingungen zu erstellen.

Recommended Posts

OpenGoddard Verwendung der 2-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 3-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 4-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 1-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung von Anfragen (Python Library)
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
So installieren und verwenden Sie pandas_datareader [Python]
[Python] Organisieren der Verwendung für Anweisungen
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von "deque" für Python-Daten
Verwendung von Python zip und Aufzählung
Verwendung ist und == in Python
Verwendung der C-Bibliothek in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
[Python] Verwendung von Hash-Funktion und Taple.
Tipps für diejenigen, die verwirrt sind, wie man is und == in Python verwendet
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Python # So überprüfen Sie Typ und Typ für Super-Anfänger
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Python: So verwenden Sie Async mit
So installieren und verwenden Sie Tesseract-OCR
[Python] Verwendung der Pandas-Serie
Verwendung von SQLite in Python
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Verwendung der Zip-Funktion von Python
[Python] Verwendung der Typetalk-API
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
Verwendung von Umgebungsvariablen für Serverless Framework und Python und Verwaltung von Phasen
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Verwendung eines externen Editors für die Python-Entwicklung mit Grasshopper