PTR Pointing module#

PTR pointing module. - extract PTR parameters from a given opporttunity definition. - create a PTR block from these parameters.

Usage:

  • ptr_pointing = JUICE_Jupiter_Ring(fixed_offset_x_angle=12.4)

  • ptr_pointing.get_prm(start_time, stop_time, metadata=’’)

or

  • ptr_pointing = PTR_Pointing(pointing_type=’juice_jupiter_ring’, fixed_offset_x_angle=12.4)

  • ptr_pointing.get_prm(start_time, stop_time, metadata=’’)

or

  • ptr_pointing = PTR_Pointing(opportunition_definition=opportunition_definition)

  • ptr_pointing.get_prm(start_time, stop_time, metadata=’’)

gfinder.ptr_pointing.AGM_NORTH_POLE_DIRS = {'JUPITER': 'JPNorthPole'}#

Mapping between target body name and AGM North Pole direction definition.

gfinder.ptr_pointing.AGM_ORB_POLE_DIRS = {'CALLISTO': 'CA2SC_orbPole', 'EUROPA': 'EU2SC_orbPole', 'GANYMEDE': 'GA2SC_orbPole', 'JUPITER': 'JP2SC_orbPole'}#

Mapping between target body name and AGM SC to orbital pole direction definition.

class gfinder.ptr_pointing.AbstractPTRPointing(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: object

property attitude#
derive_parameters(opportunity_definition)[source]#
get_prm(start_time, stop_time, metadata='')[source]#
property parameters#

PTR pointing required parameters.

set_parameters(parameters, mandatory=True)[source]#
class gfinder.ptr_pointing.JUICE_Jupiter_Ring(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Jupiter_Ring.

DEPRECATED, use JUICE_Target_NPL instead.

<attitude ref=”track”>

<boresight ref=”SC_Zaxis”/> <target ref=”Jupiter”/> <offsetRefAxis ref=”SC_Xaxis”/> <offsetAngles ref=”fixed”>

<xAngle units=”deg”>{{ fixed_offset_x_angle }}</xAngle> <yAngle units=”deg”>0.0</yAngle>

</offsetAngles> <phaseAngle ref=”align”>

<SCAxis frame=”SC”>

<x>0</x> <y>1</y> <z>0</z>

</SCAxis> <inertialAxis ref=”JPNorthPole”/>

</phaseAngle>

</attitude>

property attitude#
derive_parameters(opportunity_definition)[source]#
class gfinder.ptr_pointing.JUICE_Target_Limb(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Target_Limb.

NOT IMPLEMENTED.

Example

<block ref=”OBS”>

<startTime> 2032-01-11T12:31:40 </startTime> <endTime> 2032-01-11T12:56:00 </endTime> <attitude ref=”limb”>

<boresight ref=”SC_Zaxis” /> <targetDir ref=”rotate”>

<axis ref=”CA2Sun” /> <rotationAxis ref=”SC2CA” /> <rotationAngle units=”deg”> 40 </rotationAngle>

</targetDir> <height units=”km”> 0 </height> <surface ref=”Callisto” /> <phaseAngle ref=”align”>

<SCAxis frame=”SC”>

<x> 0 </x> <y> -1 </y> <z> 0 </z>

</SCAxis> <inertialAxis ref=”rotate”>

<axis ref=”CA2Sun” /> <rotationAxis ref=”SC2CA” /> <rotationAngle units=”deg”> 40 </rotationAngle>

</inertialAxis>

</phaseAngle>

</attitude>

</block>

class gfinder.ptr_pointing.JUICE_Target_NOA(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Target_NOA.

Template:

<attitude ref=”track”>

<boresight ref=”SC_Zaxis”/> <target ref=”{{ target }}”/> <offsetRefAxis ref=”SC_Xaxis”/> <offsetAngles ref=”fixed”>

<xAngle units=”deg”>{{ x_offset_angle }} </xAngle> <yAngle units=”deg”>{{ y_offset_angle }}</yAngle>

</offsetAngles> <phaseAngle ref=”align”>

<SCAxis frame=”SC”>

<x>1</x> <y>0</y> <z>0</z>

</SCAxis> <inertialAxis ref=”{{ inertial_axis }}”/>

</phaseAngle>

</attitude>

property attitude#
derive_parameters(opportunity_definition)[source]#
class gfinder.ptr_pointing.JUICE_Target_NPL(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Target_NPL.

Template:

<attitude ref=”track”>

<boresight ref=”SC_Zaxis”/> <target ref=”{{ target }}”/> <offsetRefAxis ref=”SC_Xaxis”/> <offsetAngles ref=”fixed”>

<xAngle units=”deg”>{{ fixed_offset_x_angle }}</xAngle> <yAngle units=”deg”>0.0</yAngle>

</offsetAngles> <phaseAngle ref=”align”>

<SCAxis frame=”SC”>

<x>0</x> <y>1</y> <z>0</z>

</SCAxis> <inertialAxis ref=”JPNorthPole”/>

</phaseAngle>

</attitude>

property attitude#
derive_parameters(opportunity_definition)[source]#
class gfinder.ptr_pointing.JUICE_Target_NPL_Slew(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Target_NPL_Slew.

Note

  • “scan” refers to spacecraft slew.

Hypothesis:
  • The “scan” startTime element indicates the actual requested MAJIS observation start time.

  • A minimum time delay of 120/200s [TBD] is required between “OBS” block and the “scan” start time, as well as between “OBS” block stop time . Therefore, the “OBS” block startTime element

Template:

<block ref=”OBS”>

<startTime> {{ start_time }} </startTime> <endTime> {{ stop_time }} </endTime> <attitude ref=”track”>

<boresight ref=”SC_Zaxis”/> <target ref=”{{ target }}”/> <offsetRefAxis ref=”SC_Xaxis”/> <offsetAngles ref=”scan”>

<startTime>{{ scan_start_time }}</startTime> <numberOfLines>1</numberOfLines> <numberOfScansPerLine>1</numberOfScansPerLine> <xStart units=”deg”>{{ x_start }}</xStart> <yStart units=”deg”>{{ y_start }}</yStart> <scanSpeed units=”deg/sec”>{{ scan_speed }}</scanSpeed> <borderSlewTime units=”sec”>0.0</borderSlewTime> <lineAxis>y</lineAxis>

</offsetAngles> <phaseAngle ref=”align”>

<SCAxis frame=”SC”>

<x>0</x> <y>1</y> <z>0</z>

</SCAxis> <inertialAxis ref=”JPNorthPole”/>

</phaseAngle>

</attitude>

</block>

property attitude#
derive_parameters(opportunity_definition)[source]#

Example of input opportunity definition “offset_rotations”:

“offset_rotations”: {

“name”: “SC_Slew_Angles”, “parameters”: {

“y_start”: 0.0, “x_start”: -4.0, “x_stop”: 4.0, “x_rate”: 0.034482758620689655

}

}

get_prm(start_time, stop_time, metadata='')[source]#

Returns PRM XML for JUICE_Target_NPL_Slew pointing type.

Note: This child method is required to update pointing parameters that can not be retrieved from an opportunity definition object. In this case: the scan_start_time parameter. It also to adjust input start and stop time to accommodate for AGM validation rules, eg: “tranquilisation” time.

class gfinder.ptr_pointing.JUICE_Target_NPO(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Target_NPO.

<attitude ref=”track”>

<boresight ref=”SC_Zaxis”/> <target ref=”{{ target }}”/> <offsetRefAxis ref=”SC_Xaxis”/> <offsetAngles ref=”fixed”>

<xAngle units=”deg”>{{ fixed_offset_x_angle }}</xAngle> <yAngle units=”deg”>{{ fixed_offset_y_angle }}</yAngle>

</offsetAngles> <phaseAngle ref=”powerOptimised”>

<yDir>false</yDir>

</phaseAngle>

</attitude>

property attitude#
derive_parameters(opportunity_definition)[source]#
class gfinder.ptr_pointing.JUICE_Target_NPO_Slew(opportunity_definition=None, mandatory=True, **kwargs)[source]#

Bases: gfinder.ptr_pointing.AbstractPTRPointing

JUICE_Target_NPO_Slew.

Note

  • “scan” refers to spacecraft slew.

Hypothesis:
  • The “scan” startTime element indicates the actual requested MAJIS observation start time.

  • A minimum time delay of 120/200s [TBD] is required between “OBS” block and the “scan” start time, as well as between “OBS” block stop time . Therefore, the “OBS” block startTime element

PTR block template:

<block ref=”OBS”>

<startTime> {{ start_time }} </startTime> <endTime> {{ stop_time }} </endTime> <attitude ref=”track”>

<boresight ref=”SC_Zaxis”/> <target ref=”{{ target }}”/> <offsetRefAxis ref=”SC_Xaxis”/> <offsetAngles ref=”scan”>

<startTime>{{ scan_start_time }}</startTime> <numberOfLines>1</numberOfLines> <numberOfScansPerLine>1</numberOfScansPerLine> <xStart units=”deg”>{{ x_start }}</xStart> <yStart units=”deg”>{{ y_start }}</yStart> <scanSpeed units=”deg/sec”>{{ scan_speed }}</scanSpeed> <borderSlewTime units=”sec”>0.0</borderSlewTime> <lineAxis>y</lineAxis>

</offsetAngles> <phaseAngle ref=”powerOptimised”>

<yDir>false</yDir>

</phaseAngle>

</attitude>

</block>

property attitude#
derive_parameters(opportunity_definition)[source]#

Example of input opportunity definition “offset_rotations”:

“offset_rotations”: {

“name”: “SC_Slew_Angles”, “parameters”: {

“x_start”: -4.0, “x_stop”: 4.0, “x_rate”: 0.034482758620689655

}

}

get_prm(start_time, stop_time, metadata='')[source]#

Returns PRM XML for JUICE_Target_NPL_Slew pointing type.

Note: This child method is required to update pointing parameters that can not be retrieved from an opportunity definition object. In this case: the scan_start_time parameter. It also to adjust input start and stop time to accommodate for AGM validation rules, eg: “tranquilisation” time.

gfinder.ptr_pointing.PTRPointing(ptr_pointing_type='', opportunity_definition=None, **kwargs)[source]#

Function serving as AbstractPTRPointing object factory.

gfinder.ptr_pointing.SLEW_START_DELAY = '3m'#

Delay before spacecraft slew starts.

gfinder.ptr_pointing.SLEW_STOP_DELAY = '3m'#

Delay after spacecraft slew stops.

gfinder.ptr_pointing.list_pointing_types()[source]#