Class EphemerisGenApp

Inheritance Relationships

Base Type

Class Documentation

class EphemerisGenApp : public lupnt::LunaNetSubApp

LunaNet sub-app that generates broadcast ephemeris (precise, short-validity) and almanac (coarse, long-validity) navigation messages from the satellite’s own predicted trajectory.

This is the “navigation-message generation” sub-app anticipated by LunaNetSubApp: attach it to a LunaNetSatApp via AddSubApp to embed broadcast-message generation in the LunaNet satellite routine. On each Step(t), when a refresh is due, it samples the owning agent’s predicted state over the corresponding validity window (Agent::GetStateAt, i.e. it propagates its own orbit forward the way a real satellite would before broadcasting) and fits a LansEphemeris / LansAlmanac, appending the resulting BroadcastMessage.

When no agent is attached (e.g. unit tests or offline generation) the same models can be driven directly via GenerateEphemerisFromArc / GenerateAlmanacFromArc.

Public Functions

explicit EphemerisGenApp(EphemerisGenConfig config = {})
virtual void Setup(LunaNetSatApp &app) override
virtual void Step(Real t) override
virtual void Finish() override
const BroadcastMessage &GenerateEphemerisFromArc(double t_gen_s, const VecXd &t_s, const MatXd &rv)

Fit and store an ephemeris message from an explicit sampled arc.

Parameters:
  • t_gen_s – Elapsed time the message is generated / becomes valid [s].

  • t_s – Sample epochs of the arc [s] (strictly increasing).

  • rv – Sampled Cartesian states [N x 6].

const BroadcastMessage &GenerateAlmanacFromArc(double t_gen_s, const VecXd &t_s, const MatXd &rv)

Fit and store an almanac message from an explicit sampled arc.

inline const std::vector<BroadcastMessage> &GetEphemerisMessages() const
inline const std::vector<BroadcastMessage> &GetAlmanacMessages() const
const BroadcastMessage *LatestEphemeris(double t_s) const

Most recent generated message whose validity window contains t_s (nullptr if none) &#8212; mirrors a receiver selecting the currently valid broadcast page.

const BroadcastMessage *LatestAlmanac(double t_s) const
inline const EphemerisGenConfig &GetConfig() const
inline const LansEphemeris &GetEphemerisModel() const
inline const LansAlmanac &GetAlmanacModel() const