User Manual 4.5 Slew : Différence entre versions

De Wiki
Aller à : navigation, rechercher
(Page créée avec « __NOTOC__ == Introduction == === Scope === A slew performs the transition between two attitude laws. === Javadoc === The attitude objects linked to slews are available i... »)
 
(Constant spin slew)
 
(6 révisions intermédiaires par le même utilisateur non affichées)
Ligne 23 : Ligne 23 :
  
 
=== Package Overview ===
 
=== Package Overview ===
The slew conception is described hereafter :
+
The slew conception is split into two features:
 
+
* The slew computation. Classes ''computing'' the slew are provided in PATRIUS.
[[File:slew.jpg|center]]
+
* The slew realization. All classes realizing a slew implements the <code>Slew</code> interface. Slews are mainly of two types:
 
+
** Analytical slews (such as <code>ConstantSpinSlew</code>
 
+
** Pre-computed slews stored in a <code>TabulatedSlew</code>. In this case, a slew ''computer'' will compute the tabulated ephemeris of the slew.
A slew is represented by the abstract class <code>AbstractSlew</code>, which implements the interface <code>Slew</code>. An slew describes how the spacecraft joins up two successive attitude laws: the classes heriting from <code>AbstractSlew</code> (like the class <code>ConstantSpinSlew</code>) contain the algorithms to compute the maneuver.
+
  
 
A slew is bounded in time and as a result inherits the [ATT_LEG_Home AttitudeLeg] interface.
 
A slew is bounded in time and as a result inherits the [ATT_LEG_Home AttitudeLeg] interface.
Ligne 34 : Ligne 33 :
 
== Features ==
 
== Features ==
 
=== Constant spin slew ===
 
=== Constant spin slew ===
The constant spin slew is a basic slew maneuver type. Between the initial quaternion and the final one, a spherical linear interpolation ([MAT_QRO_Rotations slerp interpolation]) describes the behavior of the spacecraft.
+
The constant spin slew is a basic slew maneuver type. Between the initial quaternion and the final one, a spherical linear interpolation describes the behavior of the spacecraft.
In order to properly compute the slew, the user must specify the initial and final quaternion, plus a computation constraint:
+
Two constraint types are available:
 
+
* Duration constraint: spin is computed to match constraint.
* Minimal duration:
+
<syntaxhighlight lang="java">final Slew slew = new ConstantSpinSlew(firstAttitude, secondAttitude);</syntaxhighlight>
** the initial and final date of the slew maneuver are given:<br><syntaxhighlight lang="java">
+
* Angular velocity constraint: initial slew date or final slew date is computed to match constraint.
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, endDate); </syntaxhighlight>
+
** Initial slew date is known:
** the initial date of the slew maneuver and its duration are given:<br><syntaxhighlight lang="java">
+
<syntaxhighlight lang="java">final Slew slew = new ConstantSpinSlewComputer(angularConstraint).compute(pvProvider, initialLaw, initialDate, finalLaw, null);</syntaxhighlight>
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, true, 150., Constraint.DURATION);</syntaxhighlight>
+
** Final slew date is known:
** the final date of the slew maneuver and its duration are given:<br><syntaxhighlight lang="java">
+
<syntaxhighlight lang="java">final Slew slew = new ConstantSpinSlewComputer(angularConstraint).compute(pvProvider, initialLaw, null, finalLaw, finalDate);</syntaxhighlight>
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, endDate, false, 150., Constraint.DURATION);</syntaxhighlight>
+
* Maximal angular velocity:
+
** the initial (or final) date of the slew maneuver and the maximal angular velocity are given:<br><syntaxhighlight lang="java">
+
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, true, 0.2, Constraint.ANGULAR_VELOCITY);</syntaxhighlight>
+
 
+
Once the slew maneuver defined, the computation can be performed on an orbital state using the following method:
+
 
+
<syntaxhighlight lang="java">
+
slew.compute(orbit);
+
</syntaxhighlight>
+
  
 
=== Spin bias slew ===
 
=== Spin bias slew ===
Ligne 59 : Ligne 48 :
 
In order to compute properly the slew, the user must specify the initial and final laws, the parameters of the two angular velocity fields, plus the stabilisation margin:
 
In order to compute properly the slew, the user must specify the initial and final laws, the parameters of the two angular velocity fields, plus the stabilisation margin:
  
<syntaxhighlight lang="java">final TwoSpinBiasSlew slew = new TwoSpinBiasSlew(startLaw, finalLaw, initialDate,
+
<syntaxhighlight lang="java">final TwoSpinBiasSlewComputer computer = new TwoSpinBiasSlewComputer(  
 
     step, theta_max, tau, epsInRall, omega2, theta, epsOutRall, omega1, dtStab);</syntaxhighlight>
 
     step, theta_max, tau, epsInRall, omega2, theta, epsOutRall, omega1, dtStab);</syntaxhighlight>
  
 
Once the slew maneuver is defined, the computation can be performed on an orbital state using the following method:
 
Once the slew maneuver is defined, the computation can be performed on an orbital state using the following method:
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
slew.compute(orbit);
+
final TabulatedSlew slew = computer.compute(startLaw, initialDate, finalLaw, null);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
It is possible to get the attitude ephemeris representing the slew using the following method:
+
The slew is then represented by a generic <code>TabulatedSlew</code> which stores the slew under a tabulated ephemeris.
<syntaxhighlight lang="java">
+
final TabulatedAttitude ephem = slew.getEphemeris();
+
</syntaxhighlight>
+
  
 
=== ISIS Spin bias slew ===
 
=== ISIS Spin bias slew ===
Ligne 80 : Ligne 66 :
 
[[File:ISISSpin2.png|center]]
 
[[File:ISISSpin2.png|center]]
  
This slew can be computed using classes:<br>
+
This slew can be computed using methods:<br>
- <code>IsisAnalyticalSpinBiasSlew</code>: this class provides an analytical solution to the slew<br>
+
- <code>IsisSpinBiasSlewComputer.computeAnalytical</code>: this class provides an analytical solution to the slew<br>
- <code>IsisNumericalSpinBiasSlew</code>: this class provides an numerical solution to the slew
+
- <code>IsisSpinBiasSlewComputer.computeNumerical</code>: this class provides an numerical solution to the slew
 
The two classes returns close results ( < 1E-2 rad), though analytical solution is more accurate.
 
The two classes returns close results ( < 1E-2 rad), though analytical solution is more accurate.
  
 
The slews can be used in two ways:<br>
 
The slews can be used in two ways:<br>
- Provide an initial law, an initial date and a target final law: the user must use the enum <code>TypeOfDate.INITIAL</code> at construction.<br>
+
- Provide an initial law, an initial date and a target final law<br>
- Provide an final law, a final date and a target initial law: the user must use the enum <code>TypeOfDate.FINAL</code> at construction.<br><br>
+
- Provide an final law, a final date and a target initial law<br><br>
 
'''Warning''': slew computed in both ways will never be exactly the same depending on user-chosen convergence threshold and maximum number of iterations (result will be exactly the same if convergence threshold is lower than machine precision and number of allowed iterations high enough to support convergence).
 
'''Warning''': slew computed in both ways will never be exactly the same depending on user-chosen convergence threshold and maximum number of iterations (result will be exactly the same if convergence threshold is lower than machine precision and number of allowed iterations high enough to support convergence).
  
 
The slew has then to be calculated using method <code>compute()</code>.
 
The slew has then to be calculated using method <code>compute()</code>.
 +
The slew is then represented by a generic <code>TabulatedSlew</code> which stores the slew under a tabulated ephemeris.
 
Finally the slew can be used like any other slew.
 
Finally the slew can be used like any other slew.
  
Ligne 115 : Ligne 102 :
  
 
=== Classes ===
 
=== Classes ===
 +
 +
As of 4.5, some classes have been deprecated and should therefore not be used any more.
  
 
{| class="wikitable"
 
{| class="wikitable"
Ligne 123 : Ligne 112 :
 
|-
 
|-
 
|'''AbstractSlew'''
 
|'''AbstractSlew'''
|This abstract class implements slew maneuvers.
+
|This abstract class implements slew maneuvers (deprecated).
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/AbstractSlew.html AbstractSlew]
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/AbstractSlew.html AbstractSlew]
 
|-
 
|-
 
|'''ConstantSpinSlew'''
 
|'''ConstantSpinSlew'''
|This class implements the constant spin slew maneuver profile.
+
|This class implements the constant spin slew maneuver profile (current usage is deprecated, not the class itself).
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/ConstantSpinSlew.html ConstantSpinSlew]
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/ConstantSpinSlew.html ConstantSpinSlew]
 
|-
 
|-
 
|'''TwoSpinBiasSlew'''
 
|'''TwoSpinBiasSlew'''
|This class implements the spin bias slew profile with two available spin profiles.
+
|This class implements the spin bias slew profile with two available spin profiles (deprecated).
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/TwoSpinBiasSlew.html TwoSpinBiasSlew]
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/TwoSpinBiasSlew.html TwoSpinBiasSlew]
 
|-
 
|-
 
|'''IsisAnalyticalSpinBiasSlew'''
 
|'''IsisAnalyticalSpinBiasSlew'''
|This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Analytical solution).
+
|This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Analytical solution) (deprecated).
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/IsisAnalyticalSpinBiasSlew.html IsisAnalyticalSpinBiasSlew]
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/IsisAnalyticalSpinBiasSlew.html IsisAnalyticalSpinBiasSlew]
 
|-
 
|-
 
|'''IsisNumericalSpinBiasSlew'''
 
|'''IsisNumericalSpinBiasSlew'''
|This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Numerical solution).
+
|This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Numerical solution) (deprecated).
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/IsisNumericalSpinBiasSlew.html IsisNumericalSpinBiasSlew]
 
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/IsisNumericalSpinBiasSlew.html IsisNumericalSpinBiasSlew]
 +
|-
 +
|'''TabulatedSlew'''
 +
|This class implements a generic tabulated slew, once computed with one of the computer classes.
 +
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/TabulatedSlew.html TabulatedSlew]
 +
|-
 +
|'''AngularVelocitiesPolynomialSlew'''
 +
|This class implements a generic angular velocities polynomial slew.
 +
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/AngularVelocitiesPolynomialSlew.html AngularVelocitiesPolynomialSlew]
 +
|-
 +
|'''ConstantSpinSlewComputer'''
 +
|This class computes a constant spin slew into a ConstantSpinSlew.
 +
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/slew/ConstantSpinSlewComputer.html ConstantSpinSlewComputer]
 +
|-
 +
|'''TwoSpinBiasSlewComputer'''
 +
|This class computes a two spin bias slew into a TabulatedSlew.
 +
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/slew/TwoSpinBiasSlewComputer.html TwoSpinBiasSlewComputer]
 +
|-
 +
|'''IsisSpinBiasSlewComputer'''
 +
|This class computes an ISIS spin bias slew into a TabulatedSlew.
 +
|[{{JavaDoc4.5}}/fr/cnes/sirius/patrius/attitudes/slew/IsisSpinBiasSlewComputer.html IsisSpinBiasSlewComputer]
 
|}
 
|}
  
 
[[Category:User_Manual_4.5_Attitude]]
 
[[Category:User_Manual_4.5_Attitude]]

Version actuelle en date du 19 mai 2020 à 14:53

Introduction

Scope

A slew performs the transition between two attitude laws.

Javadoc

The attitude objects linked to slews are available in the package fr.cnes.sirius.patrius.attitudes.

Library Javadoc
Patrius Package fr.cnes.sirius.patrius.attitudes

Links

None as of now.

Useful Documents

None as of now.

Package Overview

The slew conception is split into two features:

  • The slew computation. Classes computing the slew are provided in PATRIUS.
  • The slew realization. All classes realizing a slew implements the Slew interface. Slews are mainly of two types:
    • Analytical slews (such as ConstantSpinSlew
    • Pre-computed slews stored in a TabulatedSlew. In this case, a slew computer will compute the tabulated ephemeris of the slew.

A slew is bounded in time and as a result inherits the [ATT_LEG_Home AttitudeLeg] interface.

Features

Constant spin slew

The constant spin slew is a basic slew maneuver type. Between the initial quaternion and the final one, a spherical linear interpolation describes the behavior of the spacecraft. Two constraint types are available:

  • Duration constraint: spin is computed to match constraint.
final Slew slew = new ConstantSpinSlew(firstAttitude, secondAttitude);
  • Angular velocity constraint: initial slew date or final slew date is computed to match constraint.
    • Initial slew date is known:
final Slew slew = new ConstantSpinSlewComputer(angularConstraint).compute(pvProvider, initialLaw, initialDate, finalLaw, null);
    • Final slew date is known:
final Slew slew = new ConstantSpinSlewComputer(angularConstraint).compute(pvProvider, initialLaw, null, finalLaw, finalDate);

Spin bias slew

The two spin bias slew is a slew maneuver type. The velocity depends on the value of the slew angle.

In order to compute properly the slew, the user must specify the initial and final laws, the parameters of the two angular velocity fields, plus the stabilisation margin:

final TwoSpinBiasSlewComputer computer = new TwoSpinBiasSlewComputer( 
    step, theta_max, tau, epsInRall, omega2, theta, epsOutRall, omega1, dtStab);

Once the slew maneuver is defined, the computation can be performed on an orbital state using the following method:

final TabulatedSlew slew = computer.compute(startLaw, initialDate, finalLaw, null);

The slew is then represented by a generic TabulatedSlew which stores the slew under a tabulated ephemeris.

ISIS Spin bias slew

This spin bias slew is a slew with a trapezoidal angular velocity profile: - Constant acceleration phase - Constant angular velocity phase (zero acceleration phase) - Constant decceleration phase

ISISSpin2.png

This slew can be computed using methods:
- IsisSpinBiasSlewComputer.computeAnalytical: this class provides an analytical solution to the slew
- IsisSpinBiasSlewComputer.computeNumerical: this class provides an numerical solution to the slew The two classes returns close results ( < 1E-2 rad), though analytical solution is more accurate.

The slews can be used in two ways:
- Provide an initial law, an initial date and a target final law
- Provide an final law, a final date and a target initial law

Warning: slew computed in both ways will never be exactly the same depending on user-chosen convergence threshold and maximum number of iterations (result will be exactly the same if convergence threshold is lower than machine precision and number of allowed iterations high enough to support convergence).

The slew has then to be calculated using method compute(). The slew is then represented by a generic TabulatedSlew which stores the slew under a tabulated ephemeris. Finally the slew can be used like any other slew.

Getting Started

Modèle:SpecialInclusion prefix=$theme sub section="GettingStarted"/

Contents

Interfaces

Interface Summary Javadoc
AttitudeLeg This interface extends the AttitudeProvider interface and adds the time interval of validity notion to the attitude laws. AttitudeLeg
Slew This interface implements a generic slew model set. Slew

Classes

As of 4.5, some classes have been deprecated and should therefore not be used any more.

Class Summary Javadoc
AbstractSlew This abstract class implements slew maneuvers (deprecated). AbstractSlew
ConstantSpinSlew This class implements the constant spin slew maneuver profile (current usage is deprecated, not the class itself). ConstantSpinSlew
TwoSpinBiasSlew This class implements the spin bias slew profile with two available spin profiles (deprecated). TwoSpinBiasSlew
IsisAnalyticalSpinBiasSlew This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Analytical solution) (deprecated). IsisAnalyticalSpinBiasSlew
IsisNumericalSpinBiasSlew This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Numerical solution) (deprecated). IsisNumericalSpinBiasSlew
TabulatedSlew This class implements a generic tabulated slew, once computed with one of the computer classes. TabulatedSlew
AngularVelocitiesPolynomialSlew This class implements a generic angular velocities polynomial slew. AngularVelocitiesPolynomialSlew
ConstantSpinSlewComputer This class computes a constant spin slew into a ConstantSpinSlew. ConstantSpinSlewComputer
TwoSpinBiasSlewComputer This class computes a two spin bias slew into a TabulatedSlew. TwoSpinBiasSlewComputer
IsisSpinBiasSlewComputer This class computes an ISIS spin bias slew into a TabulatedSlew. IsisSpinBiasSlewComputer