public class AngularSeparationDetector extends AbstractDetector<AngularSeparationDetector>
The main use case for this detector is when the observer is in fact a ground
station, modeled as a TopocentricFrame
and when the beacon
is the Sun
, for computing
interferences for the telemetry link. Another similar case is when the beacon is
another spacecraft, for interferences computation.
The default handler behavior is to stop
propagation when spacecraft enters the proximity zone. This can be changed by calling
AbstractDetector.withHandler(EventHandler)
after construction.
Propagator.addEventDetector(EventDetector)
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Constructor and Description |
---|
AngularSeparationDetector(PVCoordinatesProvider beacon,
PVCoordinatesProvider observer,
double proximityAngle)
Build a new angular separation detector.
|
Modifier and Type | Method and Description |
---|---|
protected AngularSeparationDetector |
create(double newMaxCheck,
double newThreshold,
int newMaxIter,
EventHandler<? super AngularSeparationDetector> newHandler)
Build a new instance.
|
double |
g(SpacecraftState s)
Compute the value of the switching function.
|
PVCoordinatesProvider |
getBeacon()
Get the beacon at the center of the proximity zone.
|
PVCoordinatesProvider |
getObserver()
Get the observer for the spacecraft.
|
double |
getProximityAngle()
Get the proximity angle (rad).
|
eventOccurred, getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, resetState, withHandler, withMaxCheck, withMaxIter, withThreshold
public AngularSeparationDetector(PVCoordinatesProvider beacon, PVCoordinatesProvider observer, double proximityAngle)
beacon
- beacon at the center of the proximity zoneobserver
- observer for the spacecraft, that may also see
the beacon at the same time if they are too close to each otherproximityAngle
- proximity angle as seen from observer, at which events are triggered (rad)protected AngularSeparationDetector create(double newMaxCheck, double newThreshold, int newMaxIter, EventHandler<? super AngularSeparationDetector> newHandler)
create
in class AbstractDetector<AngularSeparationDetector>
newMaxCheck
- maximum checking interval (s)newThreshold
- convergence threshold (s)newMaxIter
- maximum number of iterations in the event time searchnewHandler
- event handler to call at event occurrencespublic PVCoordinatesProvider getBeacon()
public PVCoordinatesProvider getObserver()
public double getProximityAngle()
public double g(SpacecraftState s)
This function measures the angular separation between beacon and spacecraft as seen from the observer minus the proximity angle. It therefore triggers decreasing events when the spacecraft enters the proximity zone and increasing events when it leaves the proximity zone.
No shadowing effect is taken into account, so this method is computed and
may trigger events even when the spacecraft is below horizon for an observer
which is a ground station. If such effects must be taken into account the
detector must be associated with a predicate
filter
where the predicate function
is based on elevation.
g
in interface EventDetector
g
in class AbstractDetector<AngularSeparationDetector>
s
- the current state information: date, kinematics, attitudeCopyright © 2002-2020 CS Group. All rights reserved.