pylupnt.LanderNavApp¶
- class pylupnt.LanderNavApp¶
Strapdown-INS multiplicative EKF (MEKF) for a lunar lander on powered descent, fusing a full IMU, radar altimeter, crater-landmark bearings, and LunaNet (LANS) pseudoranges, with the IMU biases estimated online. Hosted on a Lander agent as its Application.
- accel_bias_err(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] (truth - est) accelerometer bias [m/s^2]
- accel_bias_sigma(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] accelerometer-bias 1-sigma [m/s^2]
- alt_est(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] estimated height above terrain [m]
- alt_truth(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] truth height above terrain [m]
- att_err_deg(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] attitude error (rotation vector) [deg]
- att_quat_est(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 4] estimated body-to-nav attitude quaternion [w,x,y,z] (MEKF)
- att_sigma_deg(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] attitude 1-sigma [deg]
- clock_bias_err(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] clock-bias error [s]
- clock_bias_sigma(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] clock-bias 1-sigma [s]
- crater_enu(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[M x 2] crater (East, North) [m]
- dem_elevation(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Terrain DEM elevation grid [m]
- dem_x(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Terrain DEM grid x coordinates (native projected meters)
- dem_y(self: pylupnt._pylupnt.LanderNavApp) → 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.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] (truth - est) gyroscope bias [rad/s]
- gyro_bias_sigma(self: pylupnt._pylupnt.LanderNavApp) → 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_craters(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.int32], '[m, 1]']¶
[N] number of tracked crater landmarks
- n_visible_sat(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.int32], '[m, 1]']¶
[N] number of visible LunaNet satellites
- pos_err_enu(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] (truth - est) position error in ENU [m]
- pos_err_norm(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] 3D position error magnitude [m]
- pos_sigma_enu(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] 1-sigma position uncertainty in ENU [m]
- satellite_names(self: pylupnt._pylupnt.LanderNavApp) → list[str]¶
Names of the LunaNet 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.LanderNavApp) → str¶
Landing-site identifier
- site_name(self: pylupnt._pylupnt.LanderNavApp) → str¶
Landing-site name
- time_s(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] epoch times [s]
- traj_enu_est(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] estimated (East, North, Up) [m]
- traj_enu_truth(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
[N x 3] truth (East, North, Up) [m]
- vel_err_norm(self: pylupnt._pylupnt.LanderNavApp) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
[N] 3D velocity error magnitude [m/s]