Comment utiliser la bibliothèque OpenGoddard 3-python pour un contrôle optimal non linéaire et la génération de trajectoires

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

Comment utiliser OpenGoddard 1 Comment utiliser OpenGoddard 2 OpenGoddard Comment utiliser 3 ← Maintenant ici Ouvrir Goddard Comment utiliser 4

Montée optimale de la fusée (1ère étape)

En tant que technique combinée de normalisation (mise à l'échelle) et de méthode de nouage que nous avons essayée jusqu'à présent, nous effectuons une optimisation du contrôle de poussée avec une valeur proche de celle d'une fusée réelle.

Comme problème de référence, référez-vous au problème de montée de fusée optimal décrit dans l'article suivant. Cela utilise également la même méthode de pseudo-spectre Legendre-Gauss-Lobatto qu'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

L'équation cinétique est presque la même que Utilisation 2. Changez uniquement la valeur. N'oubliez pas de normaliser, car la modification de la valeur nécessitera un nombre pour la normalisation.

Après cela, écrivez-le dans le bon sens SOLVE!

3_Single_.png

Le graphique est similaire au papier. (Il diffère légèrement selon la façon dont la valeur de convergence est définie)

Montée optimale de la fusée (2 étapes)

L'optimisation du contrôle de la poussée de la fusée à deux étages est réalisée en utilisant la méthode de nouage. Les principaux changements sont les suivants. La solution par défaut (partie Guess) a également été légèrement modifiée.

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]

La variable d'état (masse ici) est définie comme discontinue. Ajoutez ce qui suit à la condition de contrainte (égalité):

# 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)

Si vous entrez, l'altitude et la vitesse sont continues et vous pouvez définir la perte de masse (discontinue) au moment de la séparation.

3_TwoStage_.png

Fusée à deux étages en coordonnées bidimensionnelles

L'exemple d'OpenGoddard contient un exemple supposant que la fusée sera placée sur l'orbite terrestre basse en deux dimensions (système de coordonnées polaires).

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

Le résultat d'Open Goddard est qu'il est préférable d'arrêter la fusée supérieure au milieu et de la rallumer afin de la mettre en orbite. Les ingénieurs spatiaux du monde entier développent des fusées, etc. sur la base des résultats de ces orbites optimales.

Au fait

La méthode qui ne rallume pas est appelée méthode de combustion directe, mais le niveau technique requis est inférieur pour la combustion directe et, en réalité, la combustion directe peut être adoptée en raison de la communication avec le sol ou de problèmes techniques. En réalité, il est nécessaire de créer une trajectoire avec diverses conditions de contrainte.

Recommended Posts

OpenGoddard Comment utiliser la bibliothèque 2-python pour un contrôle optimal non linéaire et la génération de trajectoires
Comment utiliser la bibliothèque OpenGoddard 3-python pour un contrôle optimal non linéaire et la génération de trajectoires
Comment utiliser la bibliothèque OpenGoddard 4-python pour un contrôle optimal non linéaire et la génération de trajectoires
Comment utiliser la bibliothèque OpenGoddard 1-python pour un contrôle optimal non linéaire et la génération de trajectoires
Comment utiliser les requêtes (bibliothèque Python)
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Comment installer et utiliser pandas_datareader [Python]
[Python] Organisation de l'utilisation des instructions
python: Comment utiliser les locals () et globals ()
Comment utiliser "deque" pour les données Python
Comment utiliser le zip Python et énumérer
Comment utiliser is et == en Python
Comment utiliser la bibliothèque C en Python
Comment utiliser la bibliothèque d'images Python dans la série python3
[Python] Comment utiliser la fonction de hachage et taple.
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Comment utiliser OAuth et API de compte de service avec le client API Google pour python
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
[Pour les débutants] Comment utiliser la commande say avec python!
[Python] [Django] Comment utiliser le champ de choix et comment ajouter des options
[Python] Comment utiliser la bibliothèque de création de graphes Altair
Python # Comment vérifier le type et le type pour les super débutants
python3: Comment utiliser la bouteille (2)
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Méthode d'apprentissage TensorFlow pour les professionnels des arts libéraux et les débutants en Python
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Comment utiliser l'apprentissage automatique pour le travail? 03_Procédure de codage Python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Je ne savais pas comment utiliser l'instruction [python] for
Python: comment utiliser async avec
Comment installer et utiliser Tesseract-OCR
[Python] Comment utiliser la série Pandas
Comment utiliser SQLite en Python
Comment utiliser .bash_profile et .bashrc
Comment installer et utiliser Graphviz
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser l'API Python d'OpenPose
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Comment utiliser la fonction zip de python
[Python] Comment utiliser l'API Typetalk
Comment utiliser les fonctions dans des fichiers séparés version Perl et version Python
Comment utiliser les variables d'environnement Serverless Framework et Python et gérer les étapes
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Comment utiliser un éditeur externe pour le développement Python avec Grasshopper