Class LunarNavConstellation¶
Defined in File lunar_nav_constellation.h
Inheritance Relationships¶
Base Type¶
public lupnt::Agent(Class Agent)
Class Documentation¶
-
class LunarNavConstellation : public lupnt::Agent¶
A lunar navigation constellation as a SINGLE agent that stands in for N similar navigation satellites, so a scenario need not declare an individual agent per satellite.
It builds N child
Spacecraft(each self-propagating its orbit+clock truth) from one config entry, in either of two ways:explicit
satellites:— a list of per-satellite{name, initial_state}(or the{name, r0_m, v0_mps}shorthand); every satellite inherits the shareddynamics:(and optionalclock:) template, so the force model is written once.Walker
walker:— a symmetric Walker constellation (n_planesxsats_per_plane) of a common frozen orbit (a,e,i,omega) inframe, with the RAAN spread evenly over the planes and the mean anomaly evenly within each plane (plus an inter-plane phase).
Consumers (e.g. a surface rover / lander nav app) resolve this agent by name and query
GetSatelliteStateAt(j, t)— they no longer propagate the relays themselves.Public Functions
-
LunarNavConstellation() = default¶
-
virtual void Setup() override¶
Register each child with the owning simulation and set it up.
-
virtual Cart6 GetStateAt(Real t) const override¶
Cartesian state
[r; v]of the whole constellation is undefined; returns the first satellite’s state (or a zero state if empty). PreferGetSatelliteStateAt.
-
inline int NumSatellites() const¶
Number of satellites in the constellation.
-
inline const std::string &SatelliteName(int j) const¶
Name of satellite
j.
-
inline Cart6 GetSatelliteStateAt(int j, Real t) const¶
Cartesian truth state
[r; v](Frame::MOON_CI) of satellitejat timet[s].