Encounter

Encounter Overview

One of the primary goals of Celest is mission planning of encounter based tasks such as ground imaging or data transfer; this requires knowledge of when the satellite is in a line of sight of the ground location. Windows are the definition of viable encounter times and can take different forms. The following sections will look more into the concept of windows, demonstrate how to determine them using Celest, and then show the structures to handle and interface with them.

More About Windows

An encounter is any position dependent interaction between a satellite and some ground location. One type of encounter may be an imaging encounter where a satellite wishes to image a ground location. Another instance may be downlinking said imaging data to a ground station. In either case, a line of sight between the satellite and ground location is required. Windows are the way of defining when this line of sight is viable.

Windows in Celest come in two flavours: visible time windows and observation windows.

Visible Time Windows

A visible time window defines the period of time when the satellite is in direct line of sight with the ground location and is characterized by two values: the satellite rise and set times as seen from the ground location. Between these times, the satellite is in view of the ground location and data transmission or ground imaging is theoretically possible.

Observation Windows

Visible time windows can be imagined as generalized to any satellite-ground encounter and define the period of time where a line of sight exists. However, the entire visible time window is more than sufficient for imaging encounters; additionally, imaging encounters will provide other constraints such as image quality (influencing the maximum look-angle) or a fixed look-angle. An observation window is catered to imaging tasks and is a subset of a visible time window which meets the addition constraints of image quality and a fixed look-angle.

Observation windows are generated using the Scheduler class.

Generating Visible Time Windows

All possible visible time windows for a satellite-ground encounter can be determined using the generate_vtws() function. For more information on generating visible time windows, see the window generation tutorial.

The generate_vtws() function can be imported via the following:

from celest.encounter import generate_vtws
generate_vtws(satellite, location, vis_threshold, lighting=Lighting.ANYTIME)

Return visible time windows for a satellite-ground encounter.

This function determines the time windows where the satellite has an elevation angle greater than vis_threshold and where lighting conditions are met.

Parameters
  • satellite (Satellite) –

  • location (GroundLocation) – Location of ground station.

  • vis_threshold (float) –

    Visibility threshold in degrees.

    The visibility threshold is the minimum elevation angle of the satellite as seen from location where the satellite will be in visual range of location.

  • lighting (Lighting, optional) –

    Lighting condition specifier, defaults to anytime lighting conditions.

    Lighting conditions can be specified using the Lighting enum. The different options are Lighting.NIGHTTIME, Lighting.ANYTIME, and Lighting.DAYTIME.

Returns

The visible time windows.

Return type

WindowCollection

The Lighting enumeration is used to specify the lighting conditions for the visible time windows and can be imported via the following:

from celest.encounter import Lighting
class Lighting(value)

Bases: Enum

Enum for different lighting conditions.

NIGHTTIME

Night time lighting condition.

Type

int

ANYTTIME

No lighting condition.

Type

int

DAYTIME

Day time lighting condition.

Type

int

Window Data Structures

Celest contains various data structures to hold individual windows and collections of windows. The VisibleTimeWindow class holds information regarding a single visible time window. Similarly, the ObservationWindow class holds information regarding a single observation window. The WindowCollection class is used to hold collections of either visible time windows or observation windows.

class VisibleTimeWindow(rise_time, set_time, attitude)

Bases: object

A visible time window is the time at which a satellite is visible from a ground location. It is characterized by the time at which the satellite first becomes visible to when it is last visible.

Parameters
  • rise_time (float) – The time at which the satellite is first visible in the jd2000 epoch.

  • set_time (float) – The time at which the satellite is no longer visible in the jd2000 epoch.

  • attitude (Attitude) – The attitude of the satellite.

rise_time

The time at which the satellite is visible in the JD2000 frame.

Type

Quantity

set_time

The time at which the satellite is no longer visible in the JD2000 frame.

Type

Quantity

attitude

The attitude of the satellite.

Type

Attitude

class ObservationWindow(start_time, duration, deadline, location, attitude)

Bases: object

An observation window is a subset of a visible time window and represents the actual encounter to fulfill some mission request.

Parameters
  • start_time (Quantity) – The start time of the encounter.

  • duration (Quantity) – The duration of the encounter.

  • location (GroundLocation) – The ground location involved in the encounter.

  • attitude (Attitude) – The attitude of the satellite during the encounter.

start_time

The start time of the encounter in the JD2000 frame.

Type

Quantity

duration

The duration of the encounter in seconds.

Type

Quantity

location

The ground location involved in the encounter.

Type

GroundLocation

attitude

The attitude of the satellite during the encounter.

Type

Attitude

class WindowCollection

Bases: object

Container to hold window data.

The WindowCollection class can only hold one type of window data (i.e. either visible time windows or observation windows) at a time due to their differing attributes and physical significance.

add_window(window)

Add a window to the container.

save_text_file(filename)

Save the window data to a text file.

Raises

TypeError – If attempting to add both VisibleTimeWindow and ObservationWindow objects.