Brouwer-Lyddane-Mean-Semi-Major-Axis-Bias

Ich verwende die Software GMAT (General Mission Analysis Tool) ( Website , YouTube ), um Raumfahrzeuge zu verbreiten und ihre mittlere mittlere Halbachse (SMA) Brouwer-Lyddane (BL) zu berechnen . Ich habe etwas Interessantes herausgefunden, das ich nicht verstehe.

Ich propagiere ein Raumschiff mit dem anfänglichen Orbitalelement:

  • BL bedeutet: [a,e,i,RAAN,AOP,MA] = [7000 km,0,45 Grad,0,0,0]
  • schmiegende Elemente: [a,e,i,RAAN,AOP,MA] = [7004,718 km , 0,000898, 45,019 Grad, 0, 0, 0]
  • und die Epoche: 01 Jan 2000 12:00:00.000

Wo die vorgenannten Schmiegeelemente und die BL-Mittelwertelemente einander entsprechen, unter Verwendung der Brouwer-Lyddane-Short-Transformation.

Der Propagator verwendet einen Runge-Kutta-Integrator 8. Ordnung mit einem Kraftmodell des Gravitationsfeldes der Erde JGM-2 mit zonalen und tesseralen Harmonischen bis zu Grad 21 und Ordnung 21. Ich verwende keinen Luftwiderstand, Sonnenstrahlungsdruck oder dritten Körper Schwere.

Der produzierte BL-Mittelwert SMA ist:Geben Sie hier die Bildbeschreibung ein

Dabei ist die y-Achse der BL SMA in [km] und die x-Achse die ElapsedDays

Wenn ich dasselbe Raumschiff mit denselben anfänglichen Orbitalelementen, demselben Propagator, aber mit einer anderen Epoche propagiere: 01. Januar 2000 00:00:00.000, erhalte ich die folgende BL SMA:Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass die erste Epoche zwar einen signifikanten Bias-Wert von etwa 130 Metern erzeugt, die zweite Epoche dies jedoch nicht.

Hat jemand eine Erklärung für diese Voreingenommenheit? Warum ist es epochenabhängig? Warum ist es zeitlich konstant?

Geben Sie jeweils die BL-Mittelwertelemente oder die Oskulation an?
Beide. Die oskulierenden Elemente [7000 km, 0,45 Grad, 0,0,0] entsprechen den mittleren Orbitalelementen [7004,718 km, 0,000898, 45,019 Grad, 0, 0, 0] über die Brouwer-Lyddane-Short-Transformation. Beide Fälle werden mit den gleichen Orbitalelementen initialisiert.
Ich bin mit der Software nicht vertraut, aber wenn Sie den Satelliten mit Ausnahme der Zeit (12 Stunden Unterschied) zum gleichen Zeitpunkt starten, startet der Satellit in beiden Fällen mit unterschiedlichen Gravitationspotentialen. Ich vermute, wenn Sie es 100 Mal mit gleichmäßigen Abständen zwischen Ihren Startepochen über 24 Stunden ausführen würden, würden Sie sehen, dass sich ihre "Höhenverzerrungen" nach oben und unten verteilen würden, je nachdem, ob Sie in einem Gravitationsgipfel oder -tal begonnen haben. Es sollte nicht erwartet werden, dass der Mittelwert gleich dem momentanen Startwert sein sollte, Sie beginnen zufällig.
Das ist, was ich auch dachte, passiert ist. Es erklärt immer noch nicht, warum diese Verzerrung konstant (und für jede Epoche unterschiedlich) ist. Ich bin davon ausgegangen, dass der BL-SMA über lange Zeiträume mal über und mal unter dem wahren Wert liegen sollte. Aber wie Sie sehen können, ist es das nicht. Je nachdem, welche Epoche ich wähle, ist der BL-SMA ständig über- oder unterbewertet.
Ziehen Sie die Möglichkeit in Betracht, dass die Vorstellung von „einem wahren Wert“ nicht zutrifft. Wie ich in der anderen Frage erwähnt habe, gibt es wirklich keine "wahre" große Halbachse für eine Umlaufbahn in einem zufällig klumpigen Gravitationspotential. Die Umlaufbahn ist weder ein Kegelschnitt noch ein einfacher präzedierender Kegelschnitt. Es ist nur ein bisschen zufällig in diesem rotierenden, holprigen Feld.
(Übrigens, ich habe deinen Kommentar zuerst nicht bemerkt, vergiss nicht, die Person direkt anzusprechen, zum Beispiel "@uhoh", damit sie eine Benachrichtigung über deine Nachricht erhält. Manchmal ist es nicht nötig (zum Beispiel du werde hier benachrichtigt, weil es deine Frage ist), aber es kann nicht schaden.)

Antworten (1)

Ich ergänze meinen Kommentar :

Ich bin mit der Software nicht vertraut, aber wenn Sie den Satelliten mit Ausnahme der Zeit (12 Stunden Unterschied) zum gleichen Zeitpunkt starten, startet der Satellit in beiden Fällen mit unterschiedlichen Gravitationspotentialen. Ich vermute, wenn Sie es 100 Mal mit gleichmäßigen Abständen zwischen Ihren Startepochen über 24 Stunden ausführen würden, würden Sie sehen, dass sich ihre "Höhenverzerrungen" nach oben und unten verteilen würden, je nachdem, ob Sie in einem Gravitationsgipfel oder -tal begonnen haben. Es sollte nicht erwartet werden, dass der Mittelwert gleich dem momentanen Startwert sein sollte, Sie beginnen zufällig.

Um es einfach zu halten, verwende ich nur die J 2 Multipolkomponente des Gravitationspotentials der Erde zusätzlich zum Monopolterm G M E . Ich habe ein kurzes Python-Skript geschrieben, das Zahlen und Gleichungen aus Wikipedia verwendet (Links werden im Skript angezeigt).

Ich habe eine um 90 Grad geneigte Umlaufbahn in einer Höhe von etwa 901 Kilometern konstruiert und für 14 Umlaufbahnen oder etwa 1 Tag propagiert. (Ich habe diese Höhe gewählt, damit ich die Neigung auf 99 Grad einstellen und bestätigen konnte, dass sie sonnensynchron war, indem ich 91 Tage lang propagierte und beobachtete, wie sich der aufsteigende Knoten von der x-Achse zur y-Achse bewegte, wodurch überprüft wurde, dass der Gradient von das J 2 potenzielle Laufzeit ist in Ordnung.)

Ich habe eine große Halbachse und die Umlaufgeschwindigkeit berechnet a 0 und v 0 für eine Kreisbahn im Monopolfeld G M E / r und diese für Startbedingungen verwendet.

Die erste Handlung zeigt x ( t ) , j ( t ) , z ( t ) und r ( t ) a 0 für 24 Stunden (14 Umläufe), beginnend am Äquator mit phase = 0. Die Berechnung wurde für Grad wiederholt phase = 30, 60, 90, so dass der letzte über dem Pol begann, ebenfalls in der gleichen Höhe von 901 Kilometern.

Im zweiten Plot zeige ich die vier Plots von r ( t ) a 0 die auf der gleichen Höhe beginnen, aber an unterschiedlichen Orten über der Erde. Sie können sofort sehen, dass die "Vorspannung", von der Sie sprechen, vom Startort und dem dort vorhandenen besonderen Gravitationspotential abhängt.

Beginnend über dem Äquator mit phase = 0Grad, wo man tiefer in der Schwerkraft der Erde sitzt, ist die Geschwindigkeit für eine kreisförmige Umlaufbahn etwas niedrig, und so befindet sich der Satellit tatsächlich in der Apoapsis und fällt eine halbe Periode später auf eine etwas niedrigere Höhe ab.

Beginnt man jedoch über dem Pol mit phase = 90Graden, die höher in der Schwerkraft der Erde sind, ist die Geschwindigkeit für eine kreisförmige Umlaufbahn etwas hoch, und daher ist dies jetzt Periapsis, und die Höhe steigt eine halbe Periode später an.

Zusammenfassung: Durch die Wahl eines leichter verständlichen Gravitationsfeldes ist das Verhalten der „Bias“ hier systematischer. In Ihrer Frage verwenden Sie ein sehr komplexes, uneben aussehendes Gravitationsfeld, das sich ständig dreht. Indem Sie am selben Ort im Weltraum, aber in verschiedenen Epochen, begannen, drehten Sie tatsächlich die Erde und bewegten unterschiedliche Gravitationspotentiale zum Startort Ihres Satelliten .

Ich sage jetzt voraus , dass, wenn Sie das Multipolfeld in JGM-2 ausschalten und ein kugelsymmetrisches Potential verwenden, Ihre Berechnungen eine flache Höhe, keine Variationen und keine Verzerrungen zeigen werden.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein


Schlussgedanke: Realistische Bahnen sind keine perfekten Kegelschnitte, und daher repräsentieren sie und ihre Keplerschen Elemente keine realistischen Bahnen . Sie sind nur Annäherungen an die Realität und stimmen daher nicht, obwohl sie nah dran sind.

Keplerische Elemente wurden verwendet, als Menschen mit Federn schrieben, indem sie Licht aus der Verbrennung von Tierfett verwendeten (wenn sie nicht damit beschäftigt waren, selbst auf dem Scheiterhaufen verbrannt zu werden). Sie sind ein gemischter Segen im 21. Jahrhundert, wo alles so viel mehr Ziffern hat.

def deriv(X, t):

    rr, vel = X.reshape(2, -1)

    acc0, acc2 = accs(rr)

    return np.hstack([vel, acc0 + acc2])


def accs(rr):

    x,   y,   z   = rr
    xsq, ysq, zsq = rr**2

    rsq = (rr**2).sum()
    rm3 = rsq**-1.5
    rm7 = rsq**-3.5

    acc0  = -GM_earth * rr * rm3

    # https://en.wikipedia.org/wiki/Geopotential_model#The_deviations_of_Earth.27s_gravitational_field_from_that_of_a_homogeneous_sphere
    acc2x = x * rm7 * (6*zsq - 1.5*(xsq + ysq))
    acc2y = y * rm7 * (6*zsq - 1.5*(xsq + ysq))
    acc2z = z * rm7 * (3*zsq - 4.5*(xsq + ysq))

    acc2  = J2_earth * np.hstack((acc2x, acc2y, acc2z))

    return acc0, acc2


import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

halfpi, pi, twopi = [f*np.pi for f in [0.5, 1, 2]]
degs, rads        = 180./pi, pi/180.

GM_earth = 3.986004418E+14 #  m^3/s^2  https://en.wikipedia.org/wiki/Standard_gravitational_parameter
J2_earth = 1.7555E+25      #  m^5/s^2  https://en.wikipedia.org/wiki/Geopotential_model

a0  = (901 + 6378) * 1E+03 # meters (roughly) for a n=14 sun-synchronous orbit

v0  = np.sqrt(GM_earth/a0)  # m/s  (vis-viva)
T   = twopi * a0 / v0       # sec

print T/60, ' minutes'

phases = [rads*d for d in [0, 30, 60, 90]]

X0s = []
for phase in phases:
    sp, cp = np.sin(phase), np.cos(phase)

    X0 = np.hstack(( [ a0*cp, 0, a0*sp],   # initial positions
                     [-v0*sp, 0, v0*cp] )) # initial velocitys
    X0s.append(X0)


n, days = 14, 1.  # orbits/day, days

time = np.linspace(0, n*days*T, int(n*days*100)+1)  

answers = []
for X0 in X0s:

    answer, info = ODEint(deriv, X0, time, full_output=True)

    answers.append(answer)

if 1 == 1:

    names  = 'x(t)', 'y(t)', 'z(t)', 'r(t)-a0'
    answer = answers[1]   # just choose one for the plot
    posn   = answer.T[:3]
    rdiff  = np.sqrt((posn**2).sum(axis=0)) - a0
    things = [thing for thing in posn] + [rdiff]

    plt.figure()
    for i, (thing, name) in enumerate(zip(things, names)):
        plt.subplot(4, 1, i+1)
        plt.plot(time/(24.*3600), thing)   # x-axis in days, not seconds
        plt.title(name, fontsize=16)
        plt.xlim(0, days+0.01)  # a little more than n days
    plt.show()

if 1 == 1:

    plt.figure()

    for answer in answers:

        posn   = answer.T[:3]
        rdif   = np.sqrt((posn**2).sum(axis=0)) - a0

        plt.plot(time/(24.*3600), rdif)   # x-axis in days, not seconds

    plt.xlim(0, days+0.1)  # a little more than n days
    plt.text(1.01, -6000, u' 0\u00B0', fontsize=15 )
    plt.text(1.01,  2000, u'30\u00B0', fontsize=15 )
    plt.text(1.01, 16000, u'60\u00B0', fontsize=15 )
    plt.text(1.01, 22000, u'90\u00B0', fontsize=15 )
    plt.title('r(t)-a0', fontsize=16)
    plt.show()

Unten: eine schnelle Überprüfung, die 91 Tage lang mit einer Neigung von 99 Grad läuft, um zu bestätigen, dass die Umlaufbahn ungefähr sonnensynchron ist, um sicherzustellen, dass es zumindest keine groben Fehler bei der Art gibt, wie ich die Gleichungen für die Steigung der eingetippt habe J 2 Komponente oder die numerischen Werte. Das obige Skript lässt keine Neigung zu, aber Sie würden es durch Mischen von einbeziehen v j und v z Werte, wenn X0berechnet wird.

Geben Sie hier die Bildbeschreibung ein

Vielen Dank für die informative Antwort. Nachdem ich Ihre Antwort gelesen und mich auch mit anderen Weltraumenthusiasten beraten habe, glaube ich, dass ich es jetzt verstehe. Aber lassen Sie es mich dennoch in meinen eigenen Worten umformulieren: Bei komplexen Gravitationsproblemen sind die BL-Mean-Elemente ebenso wie die oskulierenden Elemente Funktionen und keine Konstanten. Indem wir also verschiedene Epochen oder verschiedene anfängliche wahre Anomalien auswählen, ändern wir die Schwerkraft oder die Anfangsphase in Bezug auf den Beginn der Periode. Der anfängliche BL SMA entspricht also nicht unbedingt dem wahren Mittelwert. sondern eher zu einem gewissen Wert in der Periode.
@OrbitalFun das ist eine wirklich gute Frage und hat mir (offensichtlich) viel zu denken gegeben! Vielen Dank auch für Ihre Antworten ( 1 , 2 ) auf die andere Frage ... Sie haben mehr zum Nachdenken gegeben und ich muss mich als nächstes damit befassen.