Ephemeridenausgabe von Skyfield

Ist es möglich, Skyfield zu verwenden, um ein TLE vorwärts zu propagieren und dann irgendwann in der Zukunft seine Ephemeriden anstelle von geometrischen x, y, z auszugeben?

Ich habe die Beispiele in der API durchgearbeitet und möglicherweise etwas falsch gelesen, aber es scheint, dass alle verfügbaren Ausgaben für Eclipse-Ereignisse, Anstiegs- und Untergangszeiten, Betrachtungswinkel usw. bestimmt sind. Ich würde gerne die sechs Elemente sehen (SMA, Exzentrizität , Neigung, RAAN, ArgP, mittlere Anomalie), damit ich sehen kann, was zwischen veröffentlichten TLEs passiert.

Ich sehe einen Weg, der funktionieren könnte. Es scheint im Prinzip richtig zu sein, obwohl ich etwas vorsichtig bin, da ich neu bei Skyfield bin:

  • ein TLE auf die neue Zeit propagieren
  • Ausgabe Position.km
  • Ausgangsgeschwindigkeit.km_per_s
  • diese zusammen mit der neuen Epoche zusammenzusetzen, um zu diesem Zeitpunkt einen neuen (von SGP4 abgeleiteten) Zustandsvektor zu erzeugen
  • Orbitalelemente aus dem Pos-Vel ableiten

Dies scheint eher ein Kludge zu sein, wenn die Fähigkeit bereits vorhanden ist.

Position und Geschwindigkeit zu irgendeiner Epochenzeit sind eine Form von Ephemeriden. Meiner Meinung nach ist Position/Geschwindigkeit zu einer Epochenzeit eine bessere Form von Ephemeriden als eine TLE – solange die Position und Geschwindigkeit zu dieser Epochenzeit nicht von einer TLE abgeleitet werden. SGP4 ist kein so guter Propagator (und das ist nett). Das Ziel war es, etwas zu entwickeln, das Umlaufbahnen mithilfe von Technologien aus dem vorigen Jahrhundert (vorherigen Jahrtausend!) ausbreiten kann, und zwar unter Verwendung der Gleitkommatechnologie mit einfacher Genauigkeit.
Eine Ephemeride ist eine Tabelle mit Positionen (und optional Geschwindigkeiten) zu verschiedenen Zeiten. Orbitalelemente sind keine Ephemeriden – sie sind Anweisungen zur Berechnung einer Ephemeride, die manchmal nützlicher ist als die Ephemeride selbst, manchmal nicht. Ein TLE ist eine Anleitung, wie man nur eine bestimmte Software, SGP4, konfiguriert, um eine Ephemeride zu berechnen, und das ist das Einzige, wofür SGP4 jemals verwendet werden sollte: TLEs in Tabellen von pos & vel umwandeln und dann verarbeiten lassen sie weiter mit etwas anderem, mit besserer Physik und weniger verwirrenden Definitionen.

Antworten (2)

Skyfield ist, wie die meisten anderen Tools, die behaupten, TLE-Daten verarbeiten zu können, auf die fundierten, aber alten Vermutungen einiger Leute angewiesen, was SGP4 vor einiger Zeit getan haben könnte, anstatt Zugriff darauf zu gewähren, was SGP4 derzeit tatsächlich tut. Das war lange Zeit sinnvoll, weil es für die meisten Menschen keinen anderen Weg gab, an SGP4 zu kommen, aber das ist glücklicherweise nicht mehr der Fall. Jeder, der sich für ein kostenloses Konto registriert, kann jetzt die offizielle Implementierung von SGP4 durch die US-Regierung und zugehörige Dienstprogramme, von denen einige im November 2020 erheblich aktualisiert wurden, von https://www.space-track.org/documentation#/sgp4 herunterladen .

Um den Code zu sehen, von dem ich unten spreche, müssen Sie den SGP4-Open-Source-Lizenzbeschränkungen zustimmen (die erscheinen, wenn Sie auf den Download-Link klicken, und später als Referenz unter \Sgp4Prop_small\SampleCode\*\SGP4_Open_License .txt), laden Sie diese Datei herunter, entpacken Sie sie und sehen Sie sich den Inhalt von Sgp4Prop_small\SampleCode\Python\wrappers\ und Sgp4Prop_small\SampleCode\Python\DriverExamples\Sgp4Prop\src\ an. Wrapper-Code wird auch in C, C#, Fortran, Java, Matlab und Visual Basic bereitgestellt (die eigentlichen Bibliotheken werden als DLLs für Windows und .so's für Linux bereitgestellt), aber Sie haben nach Python gefragt, also beschreibe ich alles von der Python-Sicht.

Als Teil dieses Updates wurde der bereitgestellte Python-Wrapper schließlich von Python 2 auf Python 3 geändert (Sgp4Prop.py, wie in Bibliotheksversionen bis 7.9 enthalten, seit Januar 2013 unverändert, aber noch im Oktober 2020 verteilt, stürzte unter Python 3 ab, weil es verwendete keine Klammern in Druckanweisungen, neben anderen grundlegenden Fehlern). Persönlich stecke ich ein paar eigene Optimierungen ein, von denen ich denke, dass sie die Verwendung der Bibliotheken einfacher machen, wie das Hinzufügen einer leeren __init__.py zum Verzeichnis und das Voranstellen von Punkten, um die Aufrufe der Bibliotheks-Wrapper von absoluten zu relativen Importen ineinander umzuwandeln. aber das ist völlig optional und nicht Teil der offiziellen Distribution, worauf ich im Moment nur eingehen werde.

Die einzige eindeutig nicht-Pythonic-Sache ist, dass die von den Standard-Wrappern bereitgestellte Schnittstelle genau dem alten C- und Fortran-Stil folgt, sodass alle Funktionen nur einen ganzzahligen Statuscode zurückgeben. Die Daten kommen so zurück, wie sie in Strukturen geschrieben sind, die Sie vorab mit ctypes deklarieren und als Eingabeargumente bereitstellen müssen, was nicht schwer ist, aber sehr viel nicht der Art und Weise entspricht, wie Python normalerweise verwendet wird. Es ist durchaus möglich, all das zu verbergen, indem Sie Ihre eigenen Wrapper schreiben, was ich für mich selbst getan, aber noch niemandem außerhalb der Arbeit zur Verfügung gestellt habe.

Die Aufgabe, eine TLE auf die bestmögliche Art und Weise unter Verwendung aller SGP4-Modelle so korrekt wie möglich in eine Tabelle mit oszillierenden Kepler-Elementen umzuwandeln, ist eines der grundlegenden Dinge, die als Beispiel im Demonstrationsskript Sgp4Prop_small\SampleCode\Python\DriverExamples gezeigt werden \Sgp4Prop\src\Sgp4Prop.py . Dieses Skript trifft die unglückliche Wahl (Zeile 129 ruft TimeFunc.TConLoadFile auf), um zu verlangen, dass Sie die Start-, Stopp- und Schrittzeiten für die Datei im schmerzhaft archaischen und unnötig verwirrenden „6P-Karten“-Format (z. B. wie auf Seite 7 beschrieben) bereitstellen –9 von Sgp4Prop_small\Documents\librarydocuments\TimeFunc.doc), aber die TimeFunc-Bibliothek bietet alle notwendigen Konvertierungsfunktionen, um das Zeitformat zu generieren, das der Propagator erhalten möchte (Dezimaltage seit 1950, UTC) aus allen anderen Zeitdaten, die Sie möglicherweise haben .

... damit ich sehen kann, was zwischen veröffentlichten TLEs passiert.

Dies ist ein guter Grund , sich eine solche Funktion zu wünschen. Die Beobachtung der Entwicklung von Orbitalelementen im Laufe der Zeit kann einen intuitiven Einblick darüber geben, was vor sich geht. (Beispiele: 1 , 2 ). Es sagt Ihnen nicht sofort, wo sich das Raumschiff an einem bestimmten Punkt befindet oder wie schnell es fährt (das ist es, was State-Vector-Kunden normalerweise wollen), aber es wäre eine großartige Option!

Ich weiß nicht, ob es schon in Skyfield ist oder nicht (aber ich bin mir ziemlich sicher, dass es nicht so ist), aber die Github-Site ist ziemlich aktiv und lebendig und es gibt sogar eine Diskussionsseite zusätzlich zu der Issues- Seite.

Aus meiner Sicht gibt es mehrere Wege:

  1. Berechnen Sie einen oskulierenden keplerschen Elementkonverter von einem einzelnen oder Array von Zustandsvektoren zu einem einzelnen oder Array von oskulierenden Orbitelementen, was Horizons hat. (aber siehe Probleme mit keplerschen Elementen unten)
  2. Berechnen Sie ein SGP-ähnliches ungefähres mittleres Orbitalelement (würde es die Widerstandsterme von SGP enthalten?)
  3. Berechnen Sie etwas Besseres oder Standardmäßigeres als SGP, vielleicht bedeuten Brouwer-Lyddane-Orbitalelemente.
  4. Alles das oben Genannte!

Space SE verfügt sicherlich über alle Gleichungen, um einen Zustandsvektor basierend auf der Zentralkraft der Erde in eine Kepler-Umlaufbahn umzuwandeln G M , aber diese sind garantiert falsch, wenn sie ein Promille bestellen, weil sie nicht einmal die Abflachung der Erde enthalten, wie sie durch ausgedrückt wird J 2 noch irgendein anderer Effekt, also glaube ich nicht, dass dies im Rennen um das ist, was Sie wollen.

Das ist leicht zu sehen; Holen Sie sich die oskulierenden Elemente für einige Objekte in Horizons etwa zehnmal verteilt über eine Periode und sehen Sie, wie stark jedes Orbitalelement tatsächlich innerhalb einer einzelnen Umlaufbahn variiert.


Weiterlesen hier:

Weiterlesen Offsite: