Python SGP4 1.1 Расчет неверной орбиты

Я использую модуль python SGP4 1.1 для расчета положения и скорости спутника MEO. При сравнении с STK и JSatTrak я замечаю, что возвращаемые значения для позиции и скорости неверны. У спутника должна быть дорожка повторения на земле примерно 6 часов, но эта программа показывает наземное повторение 4:47:51. Есть ли что-то, что я делаю неправильно?

from sgp4.earth_gravity import wgs72
from sgp4.io import twoline2rv
from math import atan2, cos, pi, sin, sqrt, tan
from datetime import datetime

def calculate(options):
    x = options[0]
    y = options[1]
    z = options[2]

    # Constants (WGS ellipsoid)
    a = 6378.137
    e = 8.1819190842622e-2
    # Calculation
    b = sqrt(pow(a,2) * (1-pow(e,2)))
    ep = sqrt((pow(a,2)-pow(b,2))/pow(b,2))
    p = sqrt(pow(x,2)+pow(y,2))
    th = atan2(a*z, b*p)
    lon = atan2(y, x)
    lat = atan2((z+ep*ep*b*pow(sin(th),3)), (p-e*e*a*pow(cos(th),3)))
    n = a/sqrt(1-e*e*pow(sin(lat),2))
    alt = str(p/cos(lat)-n)
    lat = str((lat*180)/pi)
    lon = str((lon*180)/pi)
    #print "%s %s %s" % (lat, lon, alt)
    return (lat, lon, alt)

line1 = '1     1U 001001   14001.00000000  .00000000  00000+0  00000+0 0 00022'           
line2 = '2     1   0.0891 294.8098 0002843  64.8653   0.5014  5.00115502    09'

satellite = twoline2rv(line1, line2, wgs72)
position1, velocity1 = satellite.propagate(2013, 3, 1, 0, 0, 1)
position2, velocity2 = satellite.propagate(2013, 3, 1, 4, 47, 52)
lat1,lon1,alt1 = calculate(position1)
lat2,lon2,alt2 = calculate(position2)

print lat1 + " " + lon1  + " " + alt1
print lat2 + " " + lon2  + " " + alt2
print "\n\n"
print position1
print position2   

4 ответа

Прошло три недели с тех пор, как вы задавали этот вопрос, так что я полагаю, что это вам не поможет, но в любом случае для архивов...

У меня нет подпрограмм Python SGP4, и я не могу их протестировать, но обычно подпрограммы SGP4 возвращают позицию и скорость в инерциальной (не вращающейся) системе отсчета, называемой TEME (True Equator, Mean Equinox: https://en.wikipedia.org/wiki/Earth-centered_inertial). Вы рассчитываете широту / долготу Земли в этой системе отсчета, и она даст вам неверные результаты. Сначала вы должны преобразовать систему TEME во вращающуюся систему, которая вращается вместе с Землей (например, ECEF: https://en.wikipedia.org/wiki/ECEF), а затем вы можете вычислить широту / долготу.

Я надеюсь, что есть библиотеки для этого преобразования, поскольку это не тривиальное.

С уважением.

Вы должны учесть вращение Земли в своих расчетах. Вместо долготы вы рассчитали геоцентрическое прямое восхождение. Начните с прочтения статьи о часовом угле в Википедии.

Упрощенные модели возмущений дальнего космоса (SDP) применяются к объектам с периодом обращения более 225 минут, что соответствует высоте 5877,5 км при круговой орбите. В результате вы должны использовать SDP4 или SDP8 для спутников MEO.

Упрощенные модели возмущений представляют собой набор из пяти математических моделей (SGP, SGP4, SDP4, SGP8 и SDP8), используемых для расчета векторов состояния орбит спутников и космического мусора относительно земно-центрированной инерциальной системы координат. Этот набор моделей часто вместе называют SGP4 из-за частоты использования этой модели, особенно с наборами двухлинейных элементов, производимыми NORAD и NASA. Эти модели предсказывают влияние возмущений, вызванных формой Земли, сопротивлением, излучением и гравитационными эффектами других тел, таких как Солнце и Луна. Упрощенные модели общих возмущений (SGP) применяются к околоземным объектам с периодом обращения менее 225 минут. Модели Simplified Deep Space Perturbations (SDP) применяются к объектам с периодом обращения более 225 минут, что соответствует высоте 5877,5 км. предполагая круговую орбиту. Модель SGP4 была разработана Кеном Крэнфордом в 1970 году. Эта модель была получена путем упрощения более обширной аналитической теории Лейна и Крэнфорда, которая использует решение Брауэра для своей гравитационной модели и функцию плотности мощности для своей атмосферной модели. По следующей ссылке вы можете использовать версию SGP4 Python, которая возвращает вектор состояния спутника в трех системах координат, т. е. TEME, ITRS и GCRS. Пожалуйста, используйте мой SGP4, а затем сравните вывод с STK. Я предполагаю, что вы сравниваете выход TEME SGP4 с STK. Эта модель была получена путем упрощения более обширной аналитической теории Лейна и Крэнфорда, которая использует решение Брауэра для своей гравитационной модели и функцию плотности мощности для своей атмосферной модели. По следующей ссылке вы можете использовать версию SGP4 Python, которая возвращает вектор состояния спутника в трех системах координат, т. е. TEME, ITRS и GCRS. Пожалуйста, используйте мой SGP4, а затем сравните вывод с STK. Я предполагаю, что вы сравниваете выход TEME SGP4 с STK. Эта модель была получена путем упрощения более обширной аналитической теории Лейна и Крэнфорда, которая использует решение Брауэра для своей гравитационной модели и функцию плотности мощности для своей атмосферной модели. По следующей ссылке вы можете использовать версию SGP4 Python, которая возвращает вектор состояния спутника в трех системах координат, т. е. TEME, ITRS и GCRS. Пожалуйста, используйте мой SGP4, а затем сравните вывод с STK. Я предполагаю, что вы сравниваете выход TEME SGP4 с STK.https://www.researchgate.net/publication/358351066_SGP4_Python_code

Другие вопросы по тегам