pylupnt.GroundStationManagerApp

class pylupnt.GroundStationManagerApp

Centralized ground-segment orbit-determination app: aggregates all stations’ range/range-rate observations and runs a weighted-least-squares batch filter plus an SRIF forward filter and smoother over the arc

converged(self: pylupnt._pylupnt.GroundStationManagerApp) bool

True if the batch filter converged

covariance(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[6, 6]']

6x6 formal covariance of the epoch-state estimate

estimated_covariance(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 36] row-major 6x6 covariance Phi P0 Phi^T at each epoch

estimated_state(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 6] batch estimate

get_agent(self: pylupnt._pylupnt.Application) lupnt::Agent

The Agent that hosts this application (set by the simulation before Setup()).

get_frequency(self: pylupnt._pylupnt.Application) float

Step() call frequency [Hz]

get_name(self: pylupnt._pylupnt.Application) str

This application’s name

has_solved(self: pylupnt._pylupnt.GroundStationManagerApp) bool

True once the end-of-arc Solve has run

iteration_correction_norm(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

[K] state-correction norm per iteration

iteration_pos_error(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

[K] epoch-state position error [m] per iteration

iteration_rms_range(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

[K] RMS range residual [m] per iteration

iteration_rms_range_rate(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

[K] RMS range-rate residual [m/s] per iteration

iteration_state(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[K x 6] epoch-state estimate at each batch iteration

iteration_vel_error(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

[K] epoch-state velocity error [m/s] per iteration

iteration_weighted_rms(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

[K] weighted RMS of measurement residuals per iteration

log(self: pylupnt._pylupnt.Application, t: Real) None

Base Log at simulation time t [s] (emits a debug message; override in a subclass).

num_iterations(self: pylupnt._pylupnt.GroundStationManagerApp) int

Batch filter iteration count

num_measurements(self: pylupnt._pylupnt.GroundStationManagerApp) int

Total aggregated observations across all stations

set_frequency(self: pylupnt._pylupnt.Application, frequency: SupportsFloat | SupportsIndex) None

Set the Step() call frequency [Hz] used by setup() to schedule steps

set_name(self: pylupnt._pylupnt.Application, name: str) None

Set this application’s name

setup(self: pylupnt._pylupnt.Application) None

Base Setup: schedules Step() at get_frequency() Hz. Call via super().setup() from a Python subclass to keep that scheduling.

srif_filtered_covariance(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 36] row-major 6x6 SRIF forward-filtered covariance at each epoch

srif_filtered_state(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 6] SRIF forward-filtered trajectory

srif_smoothed_covariance(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 36] row-major 6x6 smoothed covariance at each epoch

srif_smoothed_state(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 6] SRIF/Dyer-McReynolds smoothed trajectory

station_names(self: pylupnt._pylupnt.GroundStationManagerApp) list[str]

Registered tracking-station names

time_grid(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

Sim-relative epoch grid [s], size N

truth_state(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']

[N x 6] truth trajectory

x0_estimated(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[6, 1]']

Batch-estimated epoch state [r,v]

x0_initial_guess(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[6, 1]']

Perturbed a-priori epoch-state guess

x0_true(self: pylupnt._pylupnt.GroundStationManagerApp) Annotated[numpy.typing.NDArray[numpy.float64], '[6, 1]']

Epoch-state truth [r,v] (world frame)