[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orekit Users] Technical problem to use the class CircularFieldOfView
Dear Orekit team,
I’m trying to use your framework for some applications. And, I encounter some
technical problems about the class “CircularFieldOfViewDetector” to obtain
a prediction above a ground station.
In fact, I can’t to define the direction of the “fov” centre to have the
same prediction provided by an elevation event. The elevation angle is 5
degree. I don’t understand why the results are so different. I just want to
define a “fov” centre that points to the earth by using the satellite as
the origin.
In order to detect if a ground station is in the field of view, I follow this
process:
- First, I define a propagator by use TLE data with an initial date
definition:
String line1 = "1 25977U 99064A 09191.04881908
-.00000525 00000-0 -65532-4 0 4293";
String line2 = "2 25977 98.3412 192.6075 0000606
205.7418 154.3625 14.77702155515307";
TLE tle = new TLE(line1, line2);
propagator = TLEPropagator.selectExtrapolator(tle);
- In a second time, I define an initial orbit with an inertial frame:
inertialFrame = FramesFactory.getTEME(false);
PVCoordinates pvCoordinates =
propagator.getPVCoordinates(initialDate);
Orbit initialOrbit = new KeplerianOrbit(pvCoordinates,
inertialFrame, initialDate, MU);
- Then, I define the earth ellipsoid earth:
// earth and frame
Frame ITRF2005 = FramesFactory.getITRF2005(); //
terrestrial frame at an arbitrary date
OneAxisEllipsoid earth = new OneAxisEllipsoid(AE, 0,
ITRF2005);
- I define the position of the ground station to detect with a
topocentric frame (“lat” in radian, “lon” in radian, altitude = 0)
final GeodeticPoint geodeticPoint = new
GeodeticPoint(lat, lon, altitude);
final TopocentricFrame naiFrame = new
TopocentricFrame(earth, geodeticPoint, "Station");
- Next, I use a kleperian propagator with the initial orbit and a
nadir attitude (in order to have the z axis oriented to the earth)
// propagator : consider a simple keplerian motion
(could be more elaborate)
NadirPointing nardirAttitude = new
NadirPointing(earth);
Propagator kepler = new
KeplerianPropagator(initialOrbit, nardirAttitude);
kepler.setEphemerisMode();
- I define finally the event before adding it into the kleperian
propagator
// define the field of view of the satellite
double halfAperture = Math.toRadians(40);
double maxCheck = 60;
Vector3D center = Vector3D.PLUS_K;
EventDetector event = new
CircularFieldOfViewDetector(maxCheck, naiFrame, center, halfAperture);
// add event to be detected
kepler.addEventDetector(event);
// propagate from the initial date to the first raising
or for the fixed duration
kepler.propagate(initialDate.shiftedBy(duration));
Remark: to define the elevation event with which I compare the results, I
create an instance of the ElevationDetector as following:
EventDetector event = new ElevationDetector(60,
Math.toRadians(5), naiFrame);
Can you help me to define a correct “fov” centre, and so, to explain my
errors?
Best regards,