Class LansAlmanac¶
Defined in File lunanet_almanac.h
Class Documentation¶
-
class LansAlmanac¶
Coarse “almanac”-style orbit model (Algorithm 2 of Iiyama & Gao, “Ephemeris and LansAlmanac Design for Lunar Navigation Satellites”): each osculating element (a, e, i, node) is a low-order polynomial plus an element-specific Fourier term (orbital mean motion for a, sidereal harmonic for the rest); the mean anomaly is the nominal two-body drift (integrated from the fitted semi-major axis) plus a polynomial/Fourier residual; and the argument of periapsis is replaced by an argument-of-latitude correction u = nu + (polynomial + Fourier), which keeps the reconstruction well-conditioned near periapsis of eccentric orbits. Position/velocity are built directly from (a, e, i, node, u) with velocity by finite differencing. This mirrors the coarse, long-validity almanac broadcast by GNSS constellations (e.g. GPS almanac pages), as distinct from the precise, short-validity
LansEphemeris.Used directly (via the Python bindings) and by
EphemerisSimulation(lupnt/simulations/ephemeris/ephemeris_simulation.h) to compare almanac-style vs. ephemeris-style broadcast data-size/accuracy trade-offs.Public Functions
-
LansAlmanac() = default¶
-
inline explicit LansAlmanac(AlmanacFitOptions options)¶
-
VecXd Fit(const VecXd &t_s, const MatXd &rv) const¶
Fit this almanac model to a sampled trajectory.
- Parameters:
t_s – Sample epochs [s], strictly increasing.
rv – Sampled Cartesian states [N x 6] ([m, m, m, m/s, m/s, m/s]).
- Returns:
Fitted parameter vector; see
ParamNames()for the layout.
-
MatXd Eval(const VecXd &t_s, const VecXd ¶ms) const¶
Evaluate the fitted almanac at a set of epochs.
-
EphemerisFitErrorStats EvalError(const VecXd &t_s, const MatXd &rv_ref, const VecXd ¶ms) const¶
Evaluate the fit error of
paramsagainst a reference trajectory.
-
int NumParams() const¶
Number of scalar parameters in the vector returned by
Fit.
-
std::vector<std::string> ParamNames() const¶
Human-readable name of each parameter (same order as
Fit’s output): “t_ref”, “t_fit”, “a_ref”, then per element the polynomial coefficients “a_p0”, “a_p1”, … and Fourier coefficients “a_fc1”, “a_fs1”, … for elements a, e, i, raan (node), M (mean-anomaly residual), and u (argument-of-latitude correction).
-
inline const AlmanacFitOptions &GetOptions() const¶
-
LansAlmanac() = default¶