I would like to model two (or more) satellites performing inter-satellite communication. With this, I would like to model FOV detectors on both satellites that point towards each other, as well as a line-of-sight Earth intersection constraint.
I’m having difficulties with defining the attitude model necessary to align a CircularFieldOfView object towards another satellite with the FieldOfViewDetector. Do I need to precompute the target satellite’s position and use a TabulatedProvider attitude model? Or is there a way I can propagate both simultaneously?
Also, how would I detect when the satellite-to-satellite path intersects the Earth?
I think it’s safer, especially since you want to set up event detectors.
I would precompute the target position and store it in an ephemeris as a BoundedPropagator object.
I think you can use a CelestialBodyPointed attitude provider where the “celestial body” (the PVCoordinatesProvider in the model) is your target ephemeris.
I would use an EclipseDetector for this one; where the occulted body is again the target satellite.
Here’s how we went about implementing the event detector that depends on the position of two satellites - we included a PVProvider for the secondary satellite within a new event detector’s switching function:
public double g(final SpacecraftState s) {
final PVCoordinates sPV = s.getPVCoordinates();
final PVCoordinates bPV = otherSat.getPVCoordinates(s.getDate(), s.getFrame());
[ compute function of interest ]
return dualSatFunctionValue;
By the way, there’s a detector I forgot to mention that does exactly what you want: IntersatViewDetector.
(sorry…)
The Javadoc of the class explains why it’s recommended to use an analytical propagator for the secondary satellite and, at the end, you will see how to combine this detector with field-of-view detectors.
No (my bad again), the link I gave you points to the development branch but it’s been in Orekit since v 9.3.
So it should be available if your version of Orekit is 9.3 or higher.