Class TorqueFree

java.lang.Object
org.orekit.attitudes.TorqueFree
All Implemented Interfaces:
AttitudeProvider, AttitudeRotationModel, EventDetectorsProvider, ParameterDriversProvider

public class TorqueFree extends Object implements AttitudeProvider
This class handles torque-free motion of a general (non-symmetrical) body.

This attitude model is analytical, it can be called at any arbitrary date before or after the date of the initial attitude. Despite being an analytical model, it is not an approximation. It provides the attitude exactly in O(1) time.

The equations are based on Landau and Lifchitz Course of Theoretical Physics, Mechanics vol 1, chapter 37. Some adaptations have been made to Landau and Lifchitz equations:

  • inertia can be in any order
  • initial conditions can be arbitrary
  • signs of several equations have been fixed to work for all initial conditions
  • equations have been rewritten to work in all octants
  • the φ angle model is based on a precomputed quadrature over one period computed at construction (the Landau and Lifchitz equations 37.17 to 37.20 seem to be wrong)

The precomputed quadrature is performed numerically, but as it is performed only once at construction and the full integrated model over one period is saved, it can be applied analytically later on for any number of periods, hence we consider this attitude mode to be analytical.

Since:
12.0
Author:
Luc Maisonobe, Lucas Girodet
  • Constructor Details

    • TorqueFree

      public TorqueFree(Attitude initialAttitude, Inertia inertia)
      Simple constructor.
      Parameters:
      initialAttitude - initial attitude
      inertia - spacecraft inertia
  • Method Details

    • getInitialAttitude

      public Attitude getInitialAttitude()
      Get the initial attitude.
      Returns:
      initial attitude
    • getInertia

      public Inertia getInertia()
      Get the spacecraft inertia.
      Returns:
      spacecraft inertia
    • getAttitude

      public Attitude getAttitude(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame)
      Compute the attitude corresponding to an orbital state.
      Specified by:
      getAttitude in interface AttitudeProvider
      Parameters:
      pvProv - local position-velocity provider around current date
      date - current date
      frame - reference frame from which attitude is computed
      Returns:
      attitude on the specified date and position-velocity state
    • getAttitude

      public <T extends CalculusFieldElement<T>> FieldAttitude<T> getAttitude(FieldPVCoordinatesProvider<T> pvProv, FieldAbsoluteDate<T> date, Frame frame)
      Compute the attitude corresponding to an orbital state.
      Specified by:
      getAttitude in interface AttitudeProvider
      Type Parameters:
      T - type of the field elements
      Parameters:
      pvProv - local position-velocity provider around current date
      date - current date
      frame - reference frame from which attitude is computed
      Returns:
      attitude on the specified date and position-velocity state