ostk.astrodynamics.guidance_law.HeterogeneousGuidanceLaw

class HeterogeneousGuidanceLaw(
self: ostk.astrodynamics.guidance_law.HeterogeneousGuidanceLaw,
guidance_laws_with_intervals: list[tuple[ostk.astrodynamics.GuidanceLaw, ostk.physics.time.Interval]] = [],
)

Bases: GuidanceLaw

A guidance law that sequences multiple guidance laws over specific time intervals.

At each point in time, the applicable guidance law is selected and used to calculate the thrust acceleration. Guidance laws don't need to be contiguous, and can be added in any order. If the instant does not fall within any of the intervals, the thrust acceleration is zero. The guidance law intervals must not intersect each other.

Constructor.

Parameters:

guidance_laws_with_intervals (list[tuple[GuidanceLaw, Interval]], optional) -- Array of tuples containing the guidance laws and their corresponding intervals. Defaults to empty array.

Raises:

RuntimeError -- If any interval is undefined, if the guidance law is null or if the interval intersects with an existing interval.

Methods

add_guidance_law

Add a guidance law with its corresponding interval.

calculate_thrust_acceleration_at

Calculate thrust acceleration at a given instant and state.

get_guidance_laws_with_intervals

Get the guidance laws with their corresponding intervals.

get_name

Get the name of the guidance law.

add_guidance_law(
self: ostk.astrodynamics.guidance_law.HeterogeneousGuidanceLaw,
guidance_law: ostk.astrodynamics.GuidanceLaw,
interval: ostk.physics.time.Interval,
) None

Add a guidance law with its corresponding interval.

Parameters:
  • guidance_law (GuidanceLaw) -- The guidance law to add.

  • interval (Interval) -- The interval during which the guidance law is active.

Raises:

RuntimeError -- If the interval is undefined, if the guidance law is null or if the interval intersects with an existing interval.

calculate_thrust_acceleration_at(
self: ostk.astrodynamics.guidance_law.HeterogeneousGuidanceLaw,
instant: ostk.physics.time.Instant,
position_coordinates: numpy.ndarray[numpy.float64[3, 1]],
velocity_coordinates: numpy.ndarray[numpy.float64[3, 1]],
thrust_acceleration: ostk.core.type.Real,
output_frame: ostk.physics.coordinate.Frame,
) numpy.ndarray[numpy.float64[3, 1]]

Calculate thrust acceleration at a given instant and state.

Parameters:
  • instant (Instant) -- The instant.

  • position_coordinates (numpy.ndarray) -- The position coordinates.

  • velocity_coordinates (numpy.ndarray) -- The velocity coordinates.

  • thrust_acceleration (float) -- The thrust acceleration magnitude.

  • output_frame (Frame) -- The frame in which the acceleration is expressed.

Returns:

The acceleration vector at the provided coordinates.

Return type:

numpy.ndarray

get_guidance_laws_with_intervals(
self: ostk.astrodynamics.guidance_law.HeterogeneousGuidanceLaw,
) list[tuple[ostk.astrodynamics.GuidanceLaw, ostk.physics.time.Interval]]

Get the guidance laws with their corresponding intervals.

Returns:

Array of tuples containing the guidance laws and their corresponding intervals.

Return type:

list[tuple[GuidanceLaw, Interval]]

get_name(
self: ostk.astrodynamics.GuidanceLaw,
) ostk.core.type.String

Get the name of the guidance law.

Returns:

The name of the guidance law.

Return type:

str