[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,