Me he familiarizado con el modelo SGP4. El problema al que me enfrenté es que los resultados están en el marco TEME.
¿Cómo convertir el TEME a J2000?
También me alegraría si sugiere un método en python
o julia
.
El problema se resuelve usando los paquetes Skyfield
y Astropy
en python.
import skyfield.sgp4lib as sgp4lib
from astropy import coordinates as coord, units as u
from astropy.time import Time
# time- J2000 date
# p,v- vectors, result of SGP4 in TEME frame
date= datetime.datetime(2000, 1, 1, 12, 0) + datetime.timedelta(days=time - 2451545)
# Conversion from TEME to ITRS
p,v= sgp4lib.TEME_to_ITRF(time,np.asarray(p),np.asarray(v)*86400)
v=v/86400
# Conversion from ITRS to J2000
now = Time(date)
itrs = coord.ITRS(p[0]*u.km, p[1]*u.km, p[2]*u.km, v[0]*u.km/u.s, v[1]*u.km/u.s, v[2]*u.km/u.s, obstime=now)
gcrs = itrs.transform_to(coord.GCRS(obstime=now))
p,v=gcrs.cartesian.xyz.value,gcrs.velocity.d_xyz.value
days=time - 2451545
parte? Realmente no entiendo lo que está pasando aquí. ¿Es time
la fecha y hora en la que desea convertir de TEME a J2000? ¿Se supone que debe expresarse en días?time
se usa pero nunca se define. Están imports
equivocados. Esto no habría funcionado en Python 2.7, y mucho menos en Python 3.He publicado un paquete de julia llamado SatelliteToolbox.jl que tiene todas las conversiones relacionadas con el modelo IAU-76/FK5 (ITRF, MOD, TOD, GCRF, PEF, etc.) y ahora también agregué el soporte para TEME. Sin embargo, debe usar la master
rama porque aún no se ha lanzado.
Para instalar el paquete desde master
, puede hacer esto:
Pkg.add("SatelliteToolbox")
Pkg.checkout("SatelliteToolbox")
Si tiene un vector representado en TEME r_teme
, puede convertirlo a J2000 usando:
D_J2000_TEME = rTEMEtoGCRF(JD_TT)
r_j2000 = D_J2000_TEME*r_teme
donde JD_TT
está el Día Juliano en el Tiempo Terrestre. Si solo tiene el día juliano en UTC, puede usar JD_TT = JD_UTCtoTT(JD_UTC)
.
Este paquete también tiene una implementación nativa de SGP4 ( sin bits SDP4 todavía ). Los vectores calculados del propagador de órbita (posición y velocidad) se representan en TEME y se pueden convertir a J2000 utilizando el procedimiento anterior.
Tenga en cuenta que la definición de TEME en este paquete es la misma que la utilizada por Vallado, ya que no tenemos una definición de TEME "oficial". Además, todas esas funciones de transformación se probaron intensamente con los ejemplos en la carpeta del libro de Vallado (como puede ver en ./test/
).
Con la confirmación más reciente, es aún más fácil:
using SatelliteToolbox
# Julian day at 2018-Feb-12 15:35:22 UTC
JD_UTC = DatetoJD(2018,2,12,15,35,22)
# DCM that rotates the TEME frame of Date `JD_UTC` into J2000.
D_J2000_TEME = rECItoECI(TEME(), J2000(), JD_UTC)
# Quaternion that rotates the TEME frame of Date `JD_UTC` into J2000.
q_J2000_TEME = rECItoECI(Quaternion, TEME(), J2000(), JD_UTC)
Tarlan da en el clavo con su respuesta, pero quería unirme a aquellos que no usan python o usan algún otro software que no se discute aquí.
El consenso general es que la conversión directa entre marcos inerciales se vuelve complicada y no trivial. Como resultado, sería mejor colocar TEME en un marco fijo/pseudofijo antes de convertirlo en el marco inercial de su elección.
Esto funciona no solo para J2000, sino para cualquier marco. Las transformaciones de coordenadas de TEME a ECF son bastante comunes, especialmente con las empresas de telecomunicaciones que desean saber qué tipo de cobertura proporcionarán sus satélites. Desde allí, ir a ECF a cualquier marco inercial en el que esté trabajando será trivial si comprende la relación entre sus sistemas de coordenadas fijas e inerciales.
¿Cómo convertir el TEME a J2000? [usando Python]
Ver: " astropysics/astropysics/coords/coordsys.py ", que es del paquete de Astrofísica .
Ver también:
" Seguimiento de huellas de satélites en la superficie de la Tierra " o
" Revisión del Informe de Spacetrack #3: Rev 2 ", Apéndice C - Sistema de coordenadas TEME.
Código fuente (C++, FORTRAN, Java, MATLAB, Pascal. Total: 1.229.282 bytes, archivo .ZIP).
usuario7073
Tarlan Mammadzada