pylupnt.SurfaceRoverNavApp¶
- class pylupnt.SurfaceRoverNavApp¶
Strapdown-INS error-state EKF for a lunar surface rover, fusing a full IMU, LCRNS (LANS) pseudoranges, and a DEM altitude constraint, with the IMU biases estimated online. Hosted on a Rover agent as its Application.
- accel_bias_err(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] (truth - est) accelerometer bias [m/s^2]
- accel_bias_sigma(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] accelerometer-bias 1-sigma [m/s^2]
- att_err_deg(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] attitude error (rotation vector) [deg]
- att_sigma_deg(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] attitude 1-sigma [deg]
- clock_bias_err(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] clock-bias error [s]
- clock_bias_sigma(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] clock-bias 1-sigma [s]
- dem_elevation(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Terrain DEM elevation grid [m]
- dem_x(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Terrain DEM grid x coordinates (native projected meters)
- dem_y(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Terrain DEM grid y coordinates (native projected meters)
- 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
- gyro_bias_err(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] (truth - est) gyroscope bias [rad/s]
- gyro_bias_sigma(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] gyroscope-bias 1-sigma [rad/s]
- log(self: pylupnt._pylupnt.Application, t: Real) → None¶
Base Log at simulation time t [s] (emits a debug message; override in a subclass).
- n_visible(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.int32], '[m, 1]']¶
[N] number of visible LCRNS satellites
- pos_err_enu(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] (truth - est) position error in ENU [m]
- pos_err_norm(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] 3D position error magnitude [m]
- pos_sigma_enu(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] 1-sigma position uncertainty in ENU [m]
- rover_alt_truth(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] truth rover Up / elevation [m]
- rover_track_enu_est(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 2] estimated rover track (East, North) [m]
- rover_track_enu_truth(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 2] truth rover track (East, North) [m]
- satellite_names(self: pylupnt._pylupnt.SurfaceRoverNavApp) → list[str]¶
Names of the LCRNS relay satellites
- 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.
- site_id(self: pylupnt._pylupnt.SurfaceRoverNavApp) → str¶
Rover-site identifier
- site_name(self: pylupnt._pylupnt.SurfaceRoverNavApp) → str¶
Rover-site name
- time_s(self: pylupnt._pylupnt.SurfaceRoverNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] epoch times [s]