Class TorqueFree

  • All Implemented Interfaces:
    AttitudeProvider, EventDetectorsProvider

    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 Detail

      • TorqueFree

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

      • 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