Attempting to point off-nadir using LofOffsetPointing

Hi all! I’ve just started to use Orekit in the last few weeks to perform some trade studies on some remote sensing concepts I am working on. Up until now - I had been using the NadirPointing as my attitude provider. I would like to offset the satellite boresite to be a varying amount of degrees from the nadir configuration. My satellite using a Circular FOV combined with an Elevation Detector to find access points to the ground. I had assumed that all I needed to do was to create a LofOffsetPointing using the Nadir Pointing as the Attitude provider and rotate the center (which I assumed was 0,0,1) along another axis a certain amount. I’ve tried that but it does not seem to have any effect. Am I on the right track?

Hi @JanzelO, welcome to the Orekit community!

You should rather use the LofOffset attitude law, which does not require an underlying pointing and does allow offsets angle specification.

In fact, LofOffsetPointing is a misnomer. It was first intended to be used with LofOffset as the underlying provider and just to add some methods allowing to easily get the target ground point, hence the name. So if your needs for remote sensing are fullfilled by CircularFieldOfViewDetector and you never directly use the attitude law itself, LofOffset by itself will be sufficient. If on the other hands you need to call the getTargetPV that LofOffsetPointing inherits from GroundPointing, then you should use LofOffsetPointing with LofOffset as its attitude provider.

Also if you have needs related to geolocation taking into account a Digital Elevation Model, then you should also look at the companion library Rugged.

Thanks Luc! I appreciate the clarification. Yes, I plan on exploring rugged after I have a bit more familiarity with the Orekit.

Sorry for reopening this discussion but I don’t understand how to achieve an Offset on top of the already existing provider.

For example, NadirPointing provider aligns +Z of the satellite to the Nadir, and when one is interested in simulating an off-nadir, say, roll angle of 30 degrees (so +Z should be aligned 30 degrees away from Nadir), how to achieve that and add the same to the Propagator?

The primary attitude provider could be anything, like even SunPointing. I would be glad to understand how to add an offset to the primary provider which can then be added to the propagator.

Your new attitude provider should wrap another provider that will be an embedded field. In order to allow users to retrieve this embedded provider if they need to, it should probably implement the small AttitudeProviderModifier interface.

You can look ho other implementations of èAttitudeProviderModifier like ('SpinStabilized, YawCompensation, or YawSteering) work. The simplest case is SpinStabilized. when the getAttitude method is called, it starts by calling getAttitude from the wrapped provider, and compute a new rotation/rotation rate/acceleration as a transform and then combines both to for a new transform that is used to build the combined attitude.