Discrepancia entre HORIZONTES y ESPECIAS

Estoy tratando de reproducir la salida del sistema HORIZONTES utilizando el juego de herramientas SPICE de la NASA, pero no obtengo exactamente los mismos resultados. Estoy usando este script para calcular la posición y la velocidad del baricentro de Venus en el marco J2000 , usando la función spkez ( documentos de Python ).

import spiceypy as spice

SSB_ID = 0
VENUS_ID = 299

FRAME = 'J2000'  # Earth mean equator and equinox of J2000
#FRAME = 'ECLIPJ2000'  # Mean ecliptic and equinox of J2000

print(spice.tkvrsn("TOOLKIT"))

spice.furnsh("./cassMetaK.txt")

utc = '2017-09-01 12:05:50'
et = spice.str2et(utc)

state, lightTimes = spice.spkez(VENUS_ID, et, 'J2000', 'NONE', SSB_ID)

position = state[:3]
velocity = state[3:]

print(position)
print(velocity)

Mis núcleos:

$ cat cassMetaK.txt 
\begindata
KERNELS_TO_LOAD=(
   'naif0009.tls',
   'de431.bsp',
)
\begintext

Estos son los valores de posición y velocidad que estoy obteniendo:

CSPICE_N0066
[ 19217297.26117753  97944611.05090818  42842518.49871409]
[-34.60894367   4.64339943   4.27861046]

Y observe las ligeras diferencias con la salida HORIZONTES:

*******************************************************************************
Ephemeris / WWW_USER Mon Sep  4 00:46:19 2017 Pasadena, USA      / Horizons    
*******************************************************************************
Target body name: Venus (299)                     {source: DE431mx}
Center body name: Solar System Barycenter (0)     {source: DE431mx}
Center-site name: BODY CENTER
*******************************************************************************
Start time      : A.D. 2017-Sep-01 12:05:50.0000 TDB
Stop  time      : A.D. 2017-Sep-02 00:00:00.0000 TDB
Step-size       : 1440 minutes
*******************************************************************************
Center geodetic : 0.00000000,0.00000000,0.0000000 {E-lon(deg),Lat(deg),Alt(km)}
Center cylindric: 0.00000000,0.00000000,0.0000000 {E-lon(deg),Dxy(km),Dz(km)}
Center radii    : (undefined)                                                  
Output units    : KM-S                                                         
Output type     : GEOMETRIC cartesian states
Output format   : 3 (position, velocity, LT, range, range-rate)
Reference frame : ICRF/J2000.0                                                 
Coordinate systm: Earth Mean Equator and Equinox of Reference Epoch            
*******************************************************************************
JDTDB
   X     Y     Z
   VX    VY    VZ
   LT    RG    RR
*******************************************************************************
$$SOE
2457998.004050926 = A.D. 2017-Sep-01 12:05:50.0000 TDB 
 X = 1.921958776713952E+07 Y = 9.794430371601710E+07 Z = 4.284223531920820E+07
 VX=-3.460881129595693E+01 VY= 4.644081825248464E+00 VZ= 4.278909130085439E+00
 LT= 3.623116682955181E+02 RG= 1.086183056003940E+08 RR=-2.484635847985155E-01
$$EOE

Sé que los errores están por debajo del 0,1 %, pero es muy importante para mí saber cómo HORIZONTES calcula exactamente esos valores, si no con el código que estoy usando. ¿Cuál puede ser la fuente de esas discrepancias?

Respuestas (1)

Basado en esta respuesta en la discusión de especias , uno debe ingresar el tiempo explícitamente como TDB, así:

tdb = '2017-09-01 12:05:50 TDB'
et = spice.str2et(tdb)

Entonces los resultados coinciden exactamente:

CSPICE_N0066
[ 19219587.76713952  97944303.7160171   42842235.3192082 ]
[-34.6088113    4.64408183   4.27890913]
¡Bravo! Es genial ver Python publicado. También puede explorar diferentes escalas de tiempo en python usando la clase de SkyfieldTimescale .
Usualmente uso astropy.timepara eso. Si quieres ver más Python, asegúrate de revisar esto;) docs.poliastro.space
Wow, hay un montón de golosinas allí! ok voy a echar un vistazo, gracias!