¿Obtener fechas en las que un satélite ha realizado maniobras a partir de datos históricos de TLE (python)?

Recientemente me he familiarizado con la mecánica orbital y estoy tratando de hacer un análisis sobre el tema. Dado que no tengo experiencia en la materia, estoy en una encrucijada tratando de decidir cómo se determinaría si un satélite ha realizado una operación de maniobra/reunión dados los datos históricos de TLE de ese satélite de los que podemos extraer los elementos orbitales.

Básicamente, como entrada tengo datos históricos de TLE para un satélite desde su lanzamiento. Puedo extraer y/o calcular cualquier parámetro orbital si es necesario. Como resultado, quiero que escupa las fechas en que el satélite realizó maniobras. La forma en que he estado abordando este problema es: tomo un subconjunto de parámetros extraídos de los datos TLE (como datos de series temporales) y calculo anomalías estandarizadas a largo plazo para cada uno de esos parámetros. Y luego filtre las fechas en las que cualquiera de esos parámetros tuvo valores superiores a 1,5 o inferiores a -1,5.

Pero hay dos problemas a los que me enfrento: en primer lugar, no estoy muy seguro del subconjunto de parámetros que he elegido. Y en segundo lugar, no estoy seguro de si esta es la forma correcta de abordar este problema. ¿Hay alguna forma sofisticada que la gente use para resolver mi problema?

Lo que me interesa es saber los días en que un satélite ha realizado maniobras.

Respuestas (1)

Para la propagación de Python y TLE usando SGP4, una opción muy útil es https://rhodesmill.org/skyfield/

Como probablemente ya sepas, un TLE es un animal extraño. En realidad, no contiene elementos orbitales adecuados, sino que está diseñado con un propósito; para ser ingresado en SGP4 para que genere información de posición razonable durante al menos unos días alrededor de la época de TLE. Consulte la respuesta de @ Tristan a ¿La propagación de SGP4 es necesariamente más precisa cerca de la época elegida para la generación de TLE? y responde a ¿Cómo obtener el UTC de la hora de época en un satélite TLE (elemento de dos líneas)? y ¿Cómo funciona SGP4? para más sobre eso.

SGP4 incluye aproximaciones para varios efectos más allá de las órbitas keplerianas, incluido un modelo modesto de "gravedad grumosa" para la Tierra, arrastre atmosférico continuo y perturbaciones gravitacionales del Sol y la Luna. Para obtener más información sobre este último, consulte las respuestas a SGP 4 para satélite geoestacionario y ¿Cómo las correcciones de "espacio profundo" en SGP4 explican la gravedad del Sol y la Luna? y SGP4 en el kit de herramientas de sistemas (STK); ¿Cómo verificar si se implementa la corrección del espacio profundo SDP4? y tal vez ¿Diferencias entre SGP8 y el estándar SGP4? ¿Se utiliza alguna vez en la práctica?

A partir de estos, me gustaría convencerlo de que una interpretación directa de los valores numéricos en los TLE debe tomarse con varios granos de sal. Los cambios grandes y repentinos en la anomalía media (especialmente en órbitas más altas) o en la inclinación de un TLE al siguiente podrían indicar una maniobra de propulsión, pero cambios más pequeños podrían indicar un cambio en la temperatura atmosférica y la densidad en LEO debido a la actividad solar o incluso un mezcla de ruidosas mediciones individuales de posición y velocidad del rastreo satelital (radar, visual/telescopio).

Por lo tanto, creo que será muy difícil señalar una maniobra de propulsión con certeza y distinguirla del ruido cotidiano en los TLE, a menos que sea grande o que un grupo de TLE no sea coherente con el siguiente grupo de TLE.

Con ese fin, lo que puede hacer es que cada TLE use SGP4 para predecir una posición y velocidad en las fechas y horas de época de varios TLE antes y después, digamos dentro de un intervalo de unos pocos días o una semana alrededor de la época del TLE dado. Si ve una clara inconsistencia en varios TLE, podría justificar una mayor investigación.

Para obtener más antecedentes antes de comenzar, consulte

¡Gracias por el grito! Podría agregar: hay algunas cosas que puede ver, si grafica TLE progresivos y busca cambios de paso por encima de la variación normal. En primer lugar: no se moleste con la anomalía media en la época. Es una función del tiempo en el que se basa el TLE. Si la excentricidad es muy baja, tampoco me molestaría con el argumento del perigeo, ya que oscilará violentamente con las perturbaciones. Busque cambios en la inclinación, RAAN (para inclinación distinta de cero), excentricidad y movimiento medio. Tenga en cuenta que habrá una variación natural en la mayoría de estos, así que esté atento a los cambios de paso.
Para agregar un poco de aclaración: RAAN es a la inclinación lo que el argumento del perigeo es a la excentricidad. Cuando la inclinación y la excentricidad son pequeñas, la RAAN y el argumento del perigeo, respectivamente, se vuelven muy inestables y oscilarán violentamente con cambios muy pequeños en el vector de estado.
Gracias por la respuesta detallada. ¡Lo aprecio mucho! @Tristan Pero todavía no tengo una visión clara de algunos aspectos de la respuesta. Básicamente, mi objetivo final es automatizar este proceso. Dado cualquier satélite de interés y todos sus TLE históricos, quiero saber las fechas en que ha realizado maniobras. Ahora el satélite de consulta puede estar en cualquier órbita que tenga cualquier excentricidad o inclinación. ¿Existe una forma automatizada estandarizada en la que pueda calcular dinámicamente estas anomalías en Python?
Gracias por la respuesta detallada. ¡Lo aprecio mucho! @uhoh Ciertamente no es una opción viable para mí observar un gráfico y buscar cambios de paso por encima de la variación normal manualmente, ya que esta tiene que ser una función dinámica para mi proyecto. Sería útil si pudiera conocer un cierto subconjunto de parámetros orbitales que pueda monitorear, lo que casi garantiza un cambio en la órbita (o como yo lo llamo, una "maniobra"). Sé que es una declaración de problema muy vaga y generalizada, pero me vendría bien un poco de experiencia en la materia.
@aashayshah Así que obtuviste información sobre qué valores observar. Lo que está buscando ahora es cómo determinar programáticamente, dada una serie de valores que varían en el tiempo, cómo detectar la ubicación de una variación anómala. Es más de medianoche aquí, así que en lugar de escribir una respuesta, te daré una pista -> En ese momento, ya no es una pregunta de exploración espacial, solo una pregunta de programación: ¿cómo escribes un programa para encontrar un bache en un lugar de otra manera? gráfica de serie de tiempo uniforme, dados los datos tabulados?
@aashayshah mira mi comentario arriba