Source code for RCAIDE.Library.Mission.Common.Initialize.planet_position
# RCAIDE/Library/Missions/Segments/Common/Initialize/Frames.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# Initialize Planet Position
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def planet_position(segment):
"""
Initializes the vehicle's planetary position coordinates for mission segment
Parameters
----------
segment : Segment
The mission segment being analyzed
Notes
-----
This function sets up the initial latitude and longitude coordinates
of the vehicle relative to the planet. It handles position initialization
from either previous segment conditions or explicit segment parameters.
The function follows this priority for position initialization:
1. Previous segment final position (if initials exist)
2. Explicit segment coordinates (if specified)
3. Default coordinates (0,0)
**Required Segment State Variables**
If segment.state.initials exists:
state.initials.conditions.frames.planet:
- longitude : array
Previous segment final longitude [rad]
- latitude : array
Previous segment final latitude [rad]
state.conditions.frames.planet:
- longitude : array
Current segment longitude array [rad]
- latitude : array
Current segment latitude array [rad]
**Optional Segment Parameters**
segment:
- longitude : float
Initial longitude [rad]
- latitude : float
Initial latitude [rad]
**Major Assumptions**
* Spherical planet model
* Continuous position tracking when using initials
* Valid coordinate values
* Radians for angular measurements
Returns
-------
None
Updates segment conditions directly
See Also
--------
RCAIDE.Framework.Mission.Segments
RCAIDE.Library.Mission.Common.Initialize.inertial_position
"""
if segment.state.initials:
longitude_initial = segment.state.initials.conditions.frames.planet.longitude[-1,0]
latitude_initial = segment.state.initials.conditions.frames.planet.latitude[-1,0]
elif 'latitude' in segment:
longitude_initial = segment.longitude
latitude_initial = segment.latitude
else:
longitude_initial = 0.0
latitude_initial = 0.0
segment.state.conditions.frames.planet.longitude[:,0] = longitude_initial
segment.state.conditions.frames.planet.latitude[:,0] = latitude_initial
return