SGP4: инициализация распространения по вектору состояния

Я использую модель SGP4 для распространения по орбите, инициализированную TLE с сайта celestrak.com.

noradId = '40053'
date="2018/3/10 07:48:00"

from sgp4.earth_gravity import wgs84
from sgp4.io import twoline2rv
import requests
import datetime

date = datetime.datetime.strptime(date, "%Y/%m/%d %H:%M:%S")

response = requests.get("https://www.celestrak.com/cgi-bin/TLE.pl?CATNR="+noradId)

tle_data = response.text.split("<PRE>\n")[1].split("\n")
t1=tle_data[1]
t2=tle_data[2]

tle = twoline2rv(t1, t2, wgs84)
print (tle.propagate(date.year,date.month, date.day, date.hour, date.minute, date.second)[0])
  1. Есть ли способ инициализировать распространение по вектору состояния (X, Y, Z, Vx, Vy, Vz) или кеплеровским элементам?
  2. Есть ли способ создать соответствующий файл TLE из указанных данных?
  3. Существует ли какая-либо другая подходящая и точная модель для распространения с использованием упомянутых данных?

Что мне нужно, так это уметь применять маневры. Однако SGP4 с TLE этого не позволяет.

Ответы (1)

Действительно, SGP4 не позволяет вам вычислять маневры. Вы можете получить TLE, распространиться до времени маневра, чтобы получить распространяемое положение и скорость, затем предположить, что этот момент является новой эпохой, и повторно сгенерировать новый TLE, чтобы сделать это:

1-Вычислить новую эпоху в формате TLE во время окончания маневра

2-Вычислите положение и скорость после маневра (возможно, просто добавьте желаемую дельту-V).

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

Насколько мне известно, простого способа выполнить шаг 3 не существует. Но вы можете использовать любой метод решения численных задач, который вам нравится.

Есть ли другой аналитический метод, инициализированный вектором состояния?
Если под «вектором состояния» вы подразумеваете положение и скорость, то я не знаю ни одного широко распространенного популярного метода. Кроме того, я не уверен, что понимаю, что вы пытаетесь разработать и каковы ваши ограничения. Могу ли я предложить вам взглянуть на OREkit ? Это библиотека Java, в которой может быть то, что вам нужно, хотя я никогда не использовал ее сам.
Как насчет генерации TLE из вектора состояния? Есть ли какая-нибудь библиотека/пакет?