Hilfe beim Konvertieren vom ECEF-Rahmen zum ICRF-Rahmen für das Design interplanetarer Missionen

Ich schreibe eine Software, die die Umlaufbahn eines Raumfahrzeugs von einer anfänglichen Erdumlaufbahn auf eine interplanetare Umlaufbahn überträgt. Meine einfache Zwei-Körper-Ausbreitung funktioniert sowohl in einer geozentrischen als auch in einer heliozentrischen Umlaufbahn. Allerdings kann ich den Übergang nicht richtig handhaben.

Hier sind die Schritte dieses Übergangs (ich kann relevanten Code teilen, falls nützlich):

  1. Holen Sie sich die ekliptische J200-Position der Erde (über https://github.com/soniakeys/meeus/blob/master/planetposition/planetposition.go#L195 ) und berechnen Sie die Geschwindigkeit der Erde (über Gleichungen auf den ersten Seiten von Vallado - Fundamentals in Astrodynamik). Beachten Sie, dass die Bibliothek "meeus/planetposition" die Ekliptikpositionen in L, B, R zurückgibt, die ich in kartesische Koordinaten umwandle (über https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Rectangular_coordinates )

  2. Drehen Sie die Radius- und Geschwindigkeitsvektoren meiner geozentrischen Umlaufbahn um die erste Achse und um die axiale Neigung der Erde (gemäß https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Converting_Cartesian_vectors )

  3. Addieren Sie die in Schritt 2 berechneten R- und V-Vektoren des Raumfahrzeugs zu den in Schritt 1 berechneten Radius- und Geschwindigkeitsvektoren des Planeten (seit r sc helio = r sc Erde + r Erde helio )

Bei der Visualisierung beider Trajektorien in Cosmographia kann ich definitiv feststellen, dass die Berechnung falsch ist (vgl. die beiden Screenshots unten). Ich stecke jetzt seit ein paar Stunden in diesem Thema fest (etwa zwölf, würde ich sagen), also wäre jede Hilfe sehr dankbar.

Erde von der erwarteten Position aus gesehen (geozentrische Vektoren) Erde von der falsch berechneten heliozentrischen Position aus gesehen

Dies ist ein guter Ort, um zu fragen, aber Sie können auch in Astronomy SE und Math SE nach potenziell hilfreichen, bereits vorhandenen Antworten suchen.
Ich empfehle dringend die Verwendung des SPICE-Toolkits von JPL für die Konvertierung von Koordinatenrahmen sowie für viele andere Dinge, wie z. B. den Zugriff auf Ephemeriden von natürlichen Körpern und Raumfahrzeugen.
Ich kenne SPICE, aber es ist für mich derzeit nicht möglich, es zu verwenden (ich hatte ursprünglich gehofft, es zu verwenden). Meine Software ist vollständig in Go geschrieben, ohne Bindungen an andere Sprachen.

Antworten (1)

Sie könnten natürlich eine grobe Z-Achsen-Rotationsmatrix (relativ zur Erde) erstellen und die Erdrotation als zeitlich konstant schätzen, aber das ist nicht ganz genau. Sie können die computeFixedToICRF-Methode von CäsiumJS neu erstellen. Es ist sehr Reverse-Engineering-y und keine vollständige Lösung, aber der Versuch, diese Transformationen durchzuführen, ist gelinde gesagt nicht trivial.

Link zur Dokumentation der ComputeFixedToICRF-Methode in Cäsium: https://cesiumjs.org/Cesium/Build/Documentation/Transforms.html?classFilter=transf#.computeFixedToIcrfMatrix

Es gibt ein Paket namens satellite.js, das hier auch eine Umwandlung von ECF zu ECI durchführt: https://github.com/shashwatak/satellite-js/blob/develop/src/transforms.js