PTR Pointing module
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#
- property parameters#
PTR pointing required parameters.
- 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#
- 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#
- 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#
- 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#
- 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.