Hi all:
I am new to Orekit and have been tring to learn it and develop with it over the past few weeks. As an open source library, Orekit has surprisingly rich resources and methods in space dynamics, it is a great pleasure learning and using it. However I find an issue that can’t be solved by myself after tring to do so for a few days:
I am trying to use the FootprintOverlapDetector to calculate the access time window for a ground area and a CircularFieldOfView has been set. It works just fine, but the access times seems not the same with result from STK.
My access times( Orekit):
STK’s:
AreaTarget5-To-Sensor4
----------------------
Access Start Time (UTCG) Stop Time (UTCG) Duration (sec)
------ ----------------------- ----------------------- --------------
1 6 Dec 2021 23:27:51.886 6 Dec 2021 23:29:50.136 118.250
And my code is shown as below:
Frame frameEme2000 = FramesFactory.getEME2000();
Frame frameEcf = FramesFactory.getTIRF(IERSConventions.IERS_2010);
AbsoluteDate date = new AbsoluteDate(startTime.getYear(), startTime.getMonthValue(), startTime.getDayOfMonth(),
startTime.getHour(), startTime.getMinute(), startTime.getSecond(), TimeScalesFactory.getUTC());
Orbit orbit = new KeplerianOrbit(a, e, i, omega, raan, u, PositionAngle.TRUE, frameEme2000, date, Constants.WGS84_EARTH_MU);
KeplerianPropagator keplerianPropagator = new KeplerianPropagator(orbit);
OneAxisEllipsoid earthShape = new OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
Constants.WGS84_EARTH_FLATTENING, frameEcf);
FieldOfView fieldOfView = new CircularFieldOfView(Vector3D.PLUS_K, FastMath.toRadians(45.),
FastMath.toRadians(0.));
SphericalPolygonsSet targetArea = buildTargetArea();
final double maxcheck = 60.0;
final double threshold = 0.001;
PolygonVisibilityHandler polygonVisibilityHandler = new PolygonVisibilityHandler();
FootprintOverlapDetector detector = new FootprintOverlapDetector(fieldOfView, earthShape, targetArea, 1000.)
.withHandler(polygonVisibilityHandler).withMaxCheck(maxcheck).withThreshold(threshold);
keplerianPropagator.addEventDetector(detector);
AbsoluteDate endDate = new AbsoluteDate(endTime.getYear(), endTime.getMonthValue(), endTime.getDayOfMonth(),
endTime.getHour(), endTime.getMinute(), endTime.getSecond(), TimeScalesFactory.getUTC());
final SpacecraftState finalState = keplerianPropagator.propagate(endDate);