Class LanderNavApp¶
Defined in File lander_nav_app.h
Inheritance Relationships¶
Base Type¶
public lupnt::Application(Class Application)
Class Documentation¶
-
class LanderNavApp : public lupnt::Application¶
Strapdown inertial-navigation multiplicative EKF (MEKF) for a lunar lander, hosted on a agent as its . Attitude is estimated as a unit quaternion
q_b2nwith a 3-parameter multiplicative error in the covariance.When constructed from a YAML
application:block, the app is self-driving:Setup()precomputes the descent truth trajectory (built-in smoothstep or a supplied reference trajectory), a synthetic crater map, the relay orbits, and the perturbed initial estimate, seeds the filter, and schedulesStep(t)at the IMU cadence; eachStepsynthesizes that epoch’s IMU, pseudorange, altimeter, and crater-bearing measurements from the sharedWorldand runs the predict/update cycle, recording the result series accessible below. The lower-levelConfigure/Predict/Update*core can also be driven directly.Public Functions
-
LanderNavApp() = default¶
-
inline explicit LanderNavApp(const LanderNavAppParams ¶ms)¶
-
explicit LanderNavApp(Config &config)¶
Construct a self-driving app from the
application:block of aLanderagent.
-
virtual void Setup() override¶
Precompute descent truth, crater map, relay orbits, and the perturbed initial estimate (same RNG draw order as the legacy
RunLanderNav), seed the filter, log epoch 0, and schedule periodicSteps. Terrain / gravity / ENU come fromGetWorld().
-
virtual void Step(Real t) override¶
One self-driving descent epoch: set the host lander’s truth state,
Predictthe IMU sample, then LunaNet / altimeter / crater updates (same order as the legacy loop).
-
virtual void Log(Real t) override¶
Log this application’s current state/diagnostics to the DataLogger.
Base implementation only emits a debug message. Called once after Setup() and thereafter from Agent::Log(t) (which forwards to
application_->Log(time)each time the owning agent logs). Derived classes (e.g. LanderNavApp::Log) override this to additionally log their Filter’s state/covariance and any error metrics.- Parameters:
t – Current simulation time [s, since simulation epoch]
-
void Configure(double t0, const Vec3d &r0, const Vec3d &v0, const Mat3d &R0, const Vec3d &ba0, const Vec3d &bg0, double cb0, double cd0, const MatXd &P0)¶
Seed the filter nominal state and covariance.
-
void Predict(const SurfaceImuMeasurement &imu, double dt)¶
-
void UpdateLans(const std::vector<SurfaceLansMeasurement> &meas)¶
-
void UpdateAltimeter(const LanderAltimeterMeasurement &meas)¶
-
void UpdateCraters(const std::vector<LanderCraterMeasurement> &meas)¶
-
void UpdateCrater(const LanderCraterMeasurement &meas)¶
-
inline double time() const¶
-
inline double clock_bias() const¶
-
inline double clock_drift() const¶
-
inline const LanderNavAppParams ¶ms() const¶
-
inline const LanderNavConfig &config() const¶
-
inline const LanderNavResults &results() const¶
-
inline const std::string &site_id() const¶
-
inline const std::string &site_name() const¶
-
inline const std::vector<std::string> &satellite_names() const¶
-
LanderNavApp() = default¶