User Manual 4.3 Slew : Différence entre versions
(Page créée avec « Category:User_Manual_4.3_Attitude ») |
|||
Ligne 1 : | Ligne 1 : | ||
+ | __NOTOC__ | ||
+ | == 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. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! scope="col"| Library | ||
+ | ! scope="col"| Javadoc | ||
+ | |- | ||
+ | |Patrius | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/package-summary.html Package fr.cnes.sirius.patrius.attitudes] | ||
+ | |} | ||
+ | |||
+ | === Links === | ||
+ | None as of now. | ||
+ | |||
+ | === Useful Documents === | ||
+ | None as of now. | ||
+ | |||
+ | === Package Overview === | ||
+ | The slew conception is described hereafter : | ||
+ | |||
+ | [[File:slew.jpg|center]] | ||
+ | |||
+ | |||
+ | 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. | ||
+ | |||
+ | == 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 ([MAT_QRO_Rotations slerp 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: | ||
+ | |||
+ | * Minimal duration: | ||
+ | ** the initial and final date of the slew maneuver are given:<br><syntaxhighlight lang="java"> | ||
+ | final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, endDate); </syntaxhighlight> | ||
+ | ** the initial date of the slew maneuver and its duration are given:<br><syntaxhighlight lang="java"> | ||
+ | final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, true, 150., Constraint.DURATION);</syntaxhighlight> | ||
+ | ** the final date of the slew maneuver and its duration are given:<br><syntaxhighlight lang="java"> | ||
+ | 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 === | ||
+ | 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: | ||
+ | |||
+ | <syntaxhighlight lang="java">final TwoSpinBiasSlew slew = new TwoSpinBiasSlew(startLaw, finalLaw, initialDate, | ||
+ | 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: | ||
+ | <syntaxhighlight lang="java"> | ||
+ | slew.compute(orbit); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | It is possible to get the attitude ephemeris representing the slew using the following method: | ||
+ | <syntaxhighlight lang="java"> | ||
+ | final TabulatedAttitude ephem = slew.getEphemeris(); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === 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 | ||
+ | |||
+ | [[File:ISISSpin2.png|center]] | ||
+ | |||
+ | This slew can be computed using classes:<br> | ||
+ | - <code>IsisAnalyticalSpinBiasSlew</code>: this class provides an analytical solution to the slew<br> | ||
+ | - <code>IsisNumericalSpinBiasSlew</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 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 final law, a final date and a target initial law: the user must use the enum <code>TypeOfDate.FINAL</code> at construction.<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). | ||
+ | |||
+ | The slew has then to be calculated using method <code>compute()</code>. | ||
+ | Finally the slew can be used like any other slew. | ||
+ | |||
+ | == Getting Started == | ||
+ | {{specialInclusion prefix=$theme_sub section="GettingStarted"/}} | ||
+ | |||
+ | == Contents == | ||
+ | === Interfaces === | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! scope="col"| Interface | ||
+ | ! scope="col"| Summary | ||
+ | ! scope="col"| Javadoc | ||
+ | |- | ||
+ | |'''AttitudeLeg''' | ||
+ | |This interface extends the AttitudeProvider interface and adds the time interval of validity notion to the attitude laws. | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/AttitudeLeg.html AttitudeLeg] | ||
+ | |- | ||
+ | |'''Slew''' | ||
+ | |This interface implements a generic slew model set. | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/Slew.html Slew] | ||
+ | |} | ||
+ | |||
+ | === Classes === | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! scope="col"| Class | ||
+ | ! scope="col"| Summary | ||
+ | ! scope="col"| Javadoc | ||
+ | |- | ||
+ | |'''AbstractSlew''' | ||
+ | |This abstract class implements slew maneuvers. | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/AbstractSlew.html AbstractSlew] | ||
+ | |- | ||
+ | |'''ConstantSpinSlew''' | ||
+ | |This class implements the constant spin slew maneuver profile. | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/ConstantSpinSlew.html ConstantSpinSlew] | ||
+ | |- | ||
+ | |'''TwoSpinBiasSlew''' | ||
+ | |This class implements the spin bias slew profile with two available spin profiles. | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/TwoSpinBiasSlew.html TwoSpinBiasSlew] | ||
+ | |- | ||
+ | |'''IsisAnalyticalSpinBiasSlew''' | ||
+ | |This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Analytical solution). | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/IsisAnalyticalSpinBiasSlew.html IsisAnalyticalSpinBiasSlew] | ||
+ | |- | ||
+ | |'''IsisNumericalSpinBiasSlew''' | ||
+ | |This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Numerical solution). | ||
+ | |[{{JavaDoc4.3}}/fr/cnes/sirius/patrius/attitudes/IsisNumericalSpinBiasSlew.html IsisNumericalSpinBiasSlew] | ||
+ | |} | ||
+ | |||
[[Category:User_Manual_4.3_Attitude]] | [[Category:User_Manual_4.3_Attitude]] |
Version actuelle en date du 3 juin 2019 à 14:40
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 described hereafter :
A slew is represented by the abstract class AbstractSlew
, which implements the interface Slew
. An slew describes how the spacecraft joins up two successive attitude laws: the classes heriting from AbstractSlew
(like the class ConstantSpinSlew
) contain the algorithms to compute the maneuver.
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 ([MAT_QRO_Rotations slerp 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:
- Minimal duration:
- the initial and final date of the slew maneuver are given:
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, endDate);
- the initial date of the slew maneuver and its duration are given:
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, true, 150., Constraint.DURATION);
- the final date of the slew maneuver and its duration are given:
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, endDate, false, 150., Constraint.DURATION);
- the initial and final date of the slew maneuver are given:
- Maximal angular velocity:
- the initial (or final) date of the slew maneuver and the maximal angular velocity are given:
final Slew slew = new ConstantSpinSlew(firstLaw, secondLaw, startDate, true, 0.2, Constraint.ANGULAR_VELOCITY);
- the initial (or final) date of the slew maneuver and the maximal angular velocity are given:
Once the slew maneuver defined, the computation can be performed on an orbital state using the following method:
slew.compute(orbit);
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 TwoSpinBiasSlew slew = new TwoSpinBiasSlew(startLaw, finalLaw, initialDate, 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:
slew.compute(orbit);
It is possible to get the attitude ephemeris representing the slew using the following method:
final TabulatedAttitude ephem = slew.getEphemeris();
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
This slew can be computed using classes:
- IsisAnalyticalSpinBiasSlew
: this class provides an analytical solution to the slew
- IsisNumericalSpinBiasSlew
: 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: the user must use the enum TypeOfDate.INITIAL
at construction.
- Provide an final law, a final date and a target initial law: the user must use the enum TypeOfDate.FINAL
at construction.
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()
.
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
Class | Summary | Javadoc |
---|---|---|
AbstractSlew | This abstract class implements slew maneuvers. | AbstractSlew |
ConstantSpinSlew | This class implements the constant spin slew maneuver profile. | ConstantSpinSlew |
TwoSpinBiasSlew | This class implements the spin bias slew profile with two available spin profiles. | TwoSpinBiasSlew |
IsisAnalyticalSpinBiasSlew | This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Analytical solution). | IsisAnalyticalSpinBiasSlew |
IsisNumericalSpinBiasSlew | This class implements the ISIS spin bias slew profile (constant acceleration/decceleration phases - Numerical solution). | IsisNumericalSpinBiasSlew |