passes¶
Encapsulates a fundamental component of tracking space objects: a pass over a geographic location. Also provides convenience functions for finding passes given states and stations and sorting structures of passes in particular ways.
Module summary¶
Classes
|
Saves the local coordinate data for a single pass. |
Functions
|
Find the temporal sampling of an orbit which is sufficient to achieve a maximum spatial separation. |
|
Find passes inside the FOV of a radar station given a series of times for a space object. |
|
Finds all passes that are simultaneously inside a multiple stations FOV’s. |
|
Takes a list of passes structured as [tx][rx][pass] and find all simultaneous passes and groups them according to [tx], resulting in a [tx][pass][rx] structure. |
Contents¶
Pass
-
class
sorts.passes.
Pass
(t, enu, inds=None, cache=True, station_id=None)[source] Bases:
object
Saves the local coordinate data for a single pass. Optionally also indicates the location of that pass in a bigger dataset.
-
static
calculate_range
(enu)[source] Norm of the ENU coordinates.
-
static
calculate_range_rate
(enu)[source] Projected ENU velocity along the ENU range.
-
calculate_snr
(tx, rx, diameter)[source] Uses the
signals.hard_target_snr
function to calculate the optimal SNR curve of a target during the pass if the TX and RX stations are pointing at the object. The SNR’s are returned from the function but also stored in the propertyself.snr
.- Parameters
- Returns
(n,) Vector with the SNR’s during the pass.
- Return type
-
static
calculate_zenith_angle
(enu, radians=False)[source] Zenith angle of the ENU coordinates.
-
end
()[source] The ending time of the pass (uses cached value after first call if
self.cache=True
).
-
get_range
()[source] Get ranges from all stations involved in the pass.
- Return type
list of numpy.ndarray or numpy.ndarray
- Returns
If there is one station observing the pass, return a vector of ranges, otherwise return a list of vectors with ranges.
-
get_range_rate
()[source] Get range rates from all stations involved in the pass.
- Return type
list of numpy.ndarray or numpy.ndarray
- Returns
If there is one station observing the pass, return a vector of range rates, otherwise return a list of vectors with range rates.
-
get_zenith_angle
(radians=False)[source] Get zenith angles for all stations involved in the pass.
- Return type
list of numpy.ndarray or numpy.ndarray
- Returns
If there is one station observing the pass, return a vector of zenith angles, otherwise return a list of vectors with zenith angles.
-
range
()[source] Get ranges from all stations involved in the pass (uses cached value after first call if
self.cache=True
). The cache is stored inself._r
.- Return type
list of numpy.ndarray or numpy.ndarray
- Returns
If there is one station observing the pass, return a vector of ranges, otherwise return a list of vectors with ranges.
-
range_rate
()[source] Get range rates from all stations involved in the pass (uses cached value after first call if
self.cache=True
). The cache is stored inself._v
.- Return type
list of numpy.ndarray or numpy.ndarray
- Returns
If there is one station observing the pass, return a vector of range rates, otherwise return a list of vectors with range rates.
-
start
()[source] The Start time of the pass (uses cached value after first call if
self.cache=True
).
-
property
stations
The number of stations that can observe the pass.
-
zenith_angle
(radians=False)[source] Get zenith angles from all stations involved in the pass (uses cached value after first call if
self.cache=True
). The cache is stored inself._v
.- Return type
list of numpy.ndarray or numpy.ndarray
- Returns
If there is one station observing the pass, return a vector of zenith angles, otherwise return a list of vectors with zenith angles.
-
static
Functions
-
sorts.passes.
equidistant_sampling
(orbit, start_t, end_t, max_dpos=1000.0, eccentricity_tol=0.3)[source] Find the temporal sampling of an orbit which is sufficient to achieve a maximum spatial separation. Assume elliptic orbit and uses Keplerian propagation to find sampling, does not take perturbation patterns into account. If eccentricity is small, uses periapsis speed and uniform sampling in time.
- Parameters
orbit (pyorb.Orbit) – Orbit to find temporal sampling of.
start_t (float) – Start time in seconds
end_t (float) – End time in seconds
max_dpos (float) – Maximum separation between evaluation points in meters.
eccentricity_tol (float) – Minimum eccentricity below which the orbit is approximated as a circle and temporal samples are uniform in time.
- Returns
Vector of sample times in seconds.
- Return type
-
sorts.passes.
find_passes
(t, states, station, cache_data=True)[source] Find passes inside the FOV of a radar station given a series of times for a space object.
- Parameters
t (numpy.ndarray) – Vector of times in seconds to use as a base to find passes.
states (numpy.ndarray) – ECEF states of the object to find passes for.
station (sorts.Station) – Radar station that defines the FOV.
- Returns
list of passes
- Return type
sorts.Pass
-
sorts.passes.
find_simultaneous_passes
(t, states, stations, cache_data=True)[source] Finds all passes that are simultaneously inside a multiple stations FOV’s.
- Parameters
t (numpy.ndarray) – Vector of times in seconds to use as a base to find passes.
states (numpy.ndarray) – ECEF states of the object to find passes for.
of sorts.Station stations (list) – Radar stations that defines the FOV’s.
- Returns
list of passes
- Return type
list of sorts.Pass
-
sorts.passes.
group_passes
(passes)[source] Takes a list of passes structured as [tx][rx][pass] and find all simultaneous passes and groups them according to [tx], resulting in a [tx][pass][rx] structure.