Using SPICE for JUICE and Jupiter sysmtem¶
Important notes¶
This document replaces PEP dedicated SPICE information (Deprecated 121022).
Kernels¶
Kernel files are either provided from the project
or obtained from anomymous ftp site,
ftp://naif.jpl.nasa.gov/pub/naif/generic_kernels
Some files are personally generated (Private kernels)
As of on 2012-10-23, two files are privately generated (jse_111130.tf
and jeqs_121023_v0.1.tf
.
The preparation of SPICE kernels is the user’s responsibility.
The latest JUICE kernels are the one during the proposal AO.
Contact Futaana for kernels needed.
Private kernels¶
In addition to the publically available kernels, private spice kernels are added.
So far, I made two frame definitions (at time time of the version of v0.6beta on 121023).
JSE frame definition (as same definition as GSE) in
jse_111130.tf
and jeqs_121023_v0.1.tf
.
In the future, official definition of these frames (or equivalent) will be provided from mission team. In such a case, we should remove this functionality from the module.
Definition of private frames¶
JSE frame is defined similar to GSE frame.
- x-axis
Sun vector
- y0-axis
Velocity vector of Jupiter relative to Sun
- z-axis
Outer product of x and y0
- y-axis
Outer product of z and x (completing right hand system)
JEqS frame is defined refering to the Jupiter equator.
- z-axis
North pole (perpendicular to the equator) of Jupiter
- x0-axis
Sun vector
- y-axis
Outer product of z and x0
- x-axis
Outer product of y and z (completing right hand system)
Loading kernels¶
Needed kernel files are saved to a local disk.
Multiple files can be loaded via a single MK file,
say /Volumes/scidata/data/jupiter/kernels/setup1205.mk
KPL/MK
\begindata
PATH_VALUES = ( '/Volumes/scidata/data/jupiter/kernels' )
PATH_SYMBOLS = ( 'KERNELS' )
KERNELS_TO_LOAD = (
'$KERNELS/1205-kernels/spk/mantra.jgo_2022_ipc_eur_inc_gan_003.bsp'
'$KERNELS/1111-kernels/lsk/naif0010.tls'
'$KERNELS/1111-kernels/pck/pck00009.tpc'
'$KERNELS/1111-kernels/spk/de405.bsp'
'$KERNELS/1111-kernels/spk/jup230.bsp'
'$KERNELS/1205-kernels/fk/jse_111130.tf'
'$KERNELS/1205-kernels/fk/jeqs_121023_v0.1.tf'
)
To load the MK file, you have to set up .pyanarc file. This file can be placed in the ${HOME} directory or current directory.
[pep]
juicemkkernel = /Volumes/scidata/data/jupiter/kernels/setup1205.mk
Note
Entries spicekernels and juice1205kernels are only used from deprecated modules.
Orbit data retrieval¶
Sample script¶
See apps120712_spice1205.mission_summary_monthly
.
See apps121023_jesframe.xz_moons
.
Tutorial¶
Import pyana.juice.jspice
module and run a function
pyana.juice.jspice.init()
.
All the needed kernels (specified in MK file given in .pyanarc) is
loaded.
import pyana.juice.jspice
pyana.juice.jspice.init()
Instead of using those defalut files, you may load
all the needd kernels by hand using pyana.juice.jspice.furnsh()
function.
In this case, you have to connect the name “JGO” to -907 by hand.
It can be done pyana.juice.jspice.define_jgo()
function.
(By historical reason, the JUICE spacecraft name on SPICE is “JGO”
at the time of AO. It will be modified probably later from project.)
import pyana.juice.jspice
pyana.juice.jspice.furnsh('./lsk0009.tls')
...
pyana.juice.jspice.define_jgo()
JUICE/Jupiter/moons orbit¶
Those informations are obtained from pyana.juice.jspice.get_position()
and pyana.juice.jspice.get_velocity()
functions.
>>> import datetime
>>> t= datetime.datetime(datetime.datetime(2031, 6, 5, 12, 55, 15))
>>> pos = pyana.juice.jspice.get_position(t)
>>> print '%.2f %.2f %.2f' % (pos[0], pos[1], pos[2])
97514.29 -1409055.30 550473.59
>>> vel = pyana.juice.jspice.get_velocity(t)
>>> print '%.2f %.2f %.2f' % (vel[0], vel[1], vel[2])
8.98 3.59 2.44
You may also get whatever the objects you like by argument in get_position (if you have loaded correct kernels). The default is the “JUICE” position/velocity seen from “JUPITER” in the “JSE” coordinates. For example, you can get the Io position compread to Jupiter in the “J2000” frame.
>>> posvel = pyana.juice.jspice.get_posvel(t, target='IO', origin='JUPITER', frame='J2000')
>>> print posvel
(419739.997, -51695.912, -17851.201, 2.249, 15.451, 7.387)
Attitude Data¶
In general, attitude information/calculation can also be handled by the SPICE kernels.
However, there are no instrument kernels or spacecraft kernels.
So that attitude calculations are not yet supported via pyana.juice.jspice
module.
You may refer to my implementation of attitude calculation in Frames.