Class LunarGnssOdtsApp¶
Defined in File lunar_gnss_odts_app.h
Inheritance Relationships¶
Base Type¶
public lupnt::Application(Class Application)
Class Documentation¶
-
class LunarGnssOdtsApp : public lupnt::Application¶
Coordinator application for the lunar-orbiting GNSS ODTS scenario (Example 6), hosted on a physical
Spacecraftreceiver agent, which owns the truth orbit+clock and whose self-propagated truth the engine reads.This wraps the (numerics-preserving) free-function ODTS engine. Its scheduled
Stepruns the entire GNSS Monte-Carlo body once, lazily, in the exact same computation and RNG-draw order as the formerLunarGnssODTSSimulation::Run()so the numerics are preserved bit-for-bit:build the receiver truth trajectory + cislunar GNSS sidelobe link geometry / CN0 (from the precompute cache when available, else in-memory), applying the optional plasma delay table,
run
monte_carlo_runsseeds of the UDU EKF (or UDU stochastic-cloning EKF when TDCP is enabled), writingtrajectory_mc<N>.csv+summary.csvunderoutput_dir.
The heavy engine (
RunLunarGnssODTSMonteCarloand its helpers) is unchanged; the app only resets the global epoch to 0 (so the engine’s absolute-TDB propagation is not double-counted throughGetLupntEpoch()) and drives it. Per-seedLunarGnssODTSSummaryseries are exposed viaGetSummaries(); the full time series live in the CSV outputs.Public Functions
-
LunarGnssOdtsApp() = default¶
-
explicit LunarGnssOdtsApp(Config &config)¶
Construct from a YAML
application:block (self-driving, hosted path).
-
explicit LunarGnssOdtsApp(LunarGnssODTSConfig config)¶
Construct from a
LunarGnssODTSConfigstruct (struct API / tests).
-
virtual void Setup() override¶
Schedule the single per-run
Step(APPLICATION priority) on the owning simulation’s event queue. The heavy engine is deferred to thatStep.
-
virtual void Step(Real t) override¶
Run the whole Monte-Carlo ODTS body once (lazy; subsequent calls are no-ops).
-
inline virtual void Log(Real) 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 Precompute()¶
Build the receiver truth trajectory + link geometry cache without running the EKF, writing
links_file. Optional; the EKFStepcomputes links in-memory when no valid cache exists.
-
inline const LunarGnssODTSConfig &GetConfig() const¶
-
inline const std::vector<LunarGnssODTSSummary> &GetSummaries() const¶