User Manual 3.3 Guidance commands : Différence entre versions

De Wiki
Aller à : navigation, rechercher
 
(Harmonic guidance profiles)
 
(6 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
+
__NOTOC__
 
+
 
== Introduction ==
 
== Introduction ==
 
=== Scope ===
 
=== Scope ===
Ligne 8 : Ligne 7 :
 
The guidance models and classes are available in the guidance package in the Patrius library.
 
The guidance models and classes are available in the guidance package in the Patrius library.
  
|=(% colspan="3" %)Library|=(% colspan="6" %)Javadoc
+
{| class="wikitable"
|(% colspan="3" %)Patrius|(% colspan="6" %)[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/package-summary.html Package fr.cnes.sirius.patrius.guidance]
+
|-
 +
! scope="col"| Library
 +
! scope="col"| Javadoc
 +
|-
 +
|Patrius
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/package-summary.html Package fr.cnes.sirius.patrius.guidance]
 +
|}
  
 
=== Links ===
 
=== Links ===
Ligne 25 : Ligne 30 :
 
=== Harmonic guidance profiles ===
 
=== Harmonic guidance profiles ===
 
The functions representing the angular velocity of the satellite and the quaternion (or the Euler angles) expressing its orientation can be represented by an harmonic profile.
 
The functions representing the angular velocity of the satellite and the quaternion (or the Euler angles) expressing its orientation can be represented by an harmonic profile.
The harmonic profile is a [MAT_TPOL_Home#HFourierSeries Fourier decomposition] of a periodic function:
+
The harmonic profile is a [[User Manual 3.3 Trigonometric Polynomials and Fourier Series#Fourier Series|Fourier decomposition]] of a periodic function:
  
<math>\begin{math}
+
<math>
 
S_n\left(f(x)\right) = a_0(f) + \sum_{k=1}^n\left(a_k(f)\cos\left(k x {2\pi\over T}\right) + b_k(f)\sin\left(k x {2\pi\over T}\right)\right)
 
S_n\left(f(x)\right) = a_0(f) + \sum_{k=1}^n\left(a_k(f)\cos\left(k x {2\pi\over T}\right) + b_k(f)\sin\left(k x {2\pi\over T}\right)\right)
\end{math}</math>
+
</math>
  
 
The period T is generally computed knowing the nodes crossing periods.
 
The period T is generally computed knowing the nodes crossing periods.
Ligne 35 : Ligne 40 :
 
The Fourier coefficients (n > 0) of <math>f</math> (the angular velocity / quaternions / Euler angles function) are given by :
 
The Fourier coefficients (n > 0) of <math>f</math> (the angular velocity / quaternions / Euler angles function) are given by :
  
<math>\begin{math}
+
<math>
 
a_0(f) = {1\over T}\int_{-T/2}^{T/2} \! f(t) \, \mathrm{d}t
 
a_0(f) = {1\over T}\int_{-T/2}^{T/2} \! f(t) \, \mathrm{d}t
\end{math}</math>
+
</math>
  
<math>\begin{math}
+
<math>
 
b_0(f) = 0
 
b_0(f) = 0
\end{math}</math>
+
</math>
  
<math>\begin{math}
+
<math>
 
a_n(f) = {2\over T}\int_{-T/2}^{T/2} \! f(t) \cos\left(n t {2\pi\over T}\right) \, \mathrm{d}t
 
a_n(f) = {2\over T}\int_{-T/2}^{T/2} \! f(t) \cos\left(n t {2\pi\over T}\right) \, \mathrm{d}t
\end{math}</math>
+
</math>
  
<math>\begin{math}
+
<math>
 
b_n(f) = {2\over T}\int_{-T/2}^{T/2} \! f(t) \sin\left(n t {2\pi\over T}\right) \, \mathrm{d}t
 
b_n(f) = {2\over T}\int_{-T/2}^{T/2} \! f(t) \sin\left(n t {2\pi\over T}\right) \, \mathrm{d}t
\end{math}</math>
+
</math>
  
 
=== Polynomial guidance profiles ===
 
=== Polynomial guidance profiles ===
Ligne 57 : Ligne 62 :
  
 
<math>Qc_k(t) = \begin{pmatrix}
 
<math>Qc_k(t) = \begin{pmatrix}
  \displaystyle\sum_{i=0}^n a_0_k^i \left( t-t_k \over {\Delta t} \right) \\  
+
  \displaystyle\sum_{i=0}^n {a_0}_k^i \left( t-t_k \over {\Delta t} \right) \\  
  \displaystyle\sum_{i=0}^n a_1_k^i \left( t-t_k \over {\Delta t} \right) \\  
+
  \displaystyle\sum_{i=0}^n {a_1}_k^i \left( t-t_k \over {\Delta t} \right) \\  
  \displaystyle\sum_{i=0}^n a_2_k^i \left( t-t_k \over {\Delta t} \right) \\  
+
  \displaystyle\sum_{i=0}^n {a_2}_k^i \left( t-t_k \over {\Delta t} \right) \\  
  \displaystyle\sum_{i=0}^n a_3_k^i \left( t-t_k \over {\Delta t} \right)
+
  \displaystyle\sum_{i=0}^n {a_3}_k^i \left( t-t_k \over {\Delta t} \right)
 
\end{pmatrix}</math>
 
\end{pmatrix}</math>
  
Ligne 66 : Ligne 71 :
  
 
<math>\Omega c_k(t) = \begin{pmatrix}
 
<math>\Omega c_k(t) = \begin{pmatrix}
  \displaystyle\sum_{i=0}^n a_x_k^i \left( \frac{t-t_k}{\Delta t} \right) \\  
+
  \displaystyle\sum_{i=0}^n {a_x}_k^i \left( \frac{t-t_k}{\Delta t} \right) \\  
  \displaystyle\sum_{i=0}^n a_y_k^i \left( \frac{t-t_k}{\Delta t} \right) \\  
+
  \displaystyle\sum_{i=0}^n {a_y}_k^i \left( \frac{t-t_k}{\Delta t} \right) \\  
  \displaystyle\sum_{i=0}^n a_z_k^i \left( \frac{t-t_k}{\Delta t} \right)  
+
  \displaystyle\sum_{i=0}^n {a_z}_k^i \left( \frac{t-t_k}{\Delta t} \right)  
 
\end{pmatrix}</math>
 
\end{pmatrix}</math>
  
 
=== Build an harmonic guidance profile from an attitude law ===
 
=== Build an harmonic guidance profile from an attitude law ===
 
Given :
 
Given :
* an [{{JavaDoc3.3}}/AttitudeLawLeg org/orekit/attitudes/AttitudeLawLeg.html],
+
* an [{{JavaDoc3.3}}/org/orekit/attitudes/AttitudeLawLeg.html AttitudeLawLeg],
* a [{{JavaDoc3.3}}/PVCoordinatesProvider org/orekit/utils/PVCoordinatesProvider.html],
+
* a [{{JavaDoc3.3}}/org/orekit/utils/PVCoordinatesProvider.html PVCoordinatesProvider],
* a [{{JavaDoc3.3}}/Frame org/orekit/frames/Frame.html],
+
* a [{{JavaDoc3.3}}/org/orekit/frames/Frame.html Frame],
* a [{{JavaDoc3.3}}/reference date org/orekit/time/AbsoluteDate.html] <code>tref</code>,
+
* a [{{JavaDoc3.3}}/org/orekit/time/AbsoluteDate.html reference date] <code>tref</code>,
 
* a spin function period,
 
* a spin function period,
 
* a spin decomposition order,
 
* a spin decomposition order,
* an [{{JavaDoc3.3}}/integration type org/orekit/attitudes/kinematics/KinematicsToolkit.IntegrationType.html],
+
* an [{{JavaDoc3.3}}/org/orekit/attitudes/kinematics/KinematicsToolkit.IntegrationType.html integration type],
 
* an integration step,
 
* an integration step,
  
Ligne 94 : Ligne 99 :
 
== Contents ==
 
== Contents ==
 
=== Interfaces ===
 
=== Interfaces ===
|=Interface|=Summary|=Javadoc
+
None.
  
 
=== Classes ===
 
=== Classes ===
|=(% colspan="3" %)Class|=(% colspan="6" %)Summary|=(% colspan="1" %)Javadoc
+
{| class="wikitable"
|(% colspan="3" %)'''KinematicsToolkit'''|(% colspan="6" %)This class contains static methods performing kinematics operations.|[{{JavaDoc3.3}}/org/orekit/attitudes/kinematics/KinematicsToolkit.html ...]
+
|-
|(% colspan="3" %)'''GuidanceProfile'''|(% colspan="6" %)Abstract class representing a guidance profile.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/GuidanceProfile.html ...]
+
! scope="col"| Class
|(% colspan="3" %)'''GuidanceProfileBuilder'''|(% colspan="6" %)This class creates guidance profiles from an attitude law.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/GuidanceProfileBuilder.html ...]
+
! scope="col"| Summary
|(% colspan="3" %)'''QuaternionHarmonicProfile'''|(% colspan="6" %)Object representing a quaternion guidance profile, calculated with Fourier series.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/QuaternionHarmonicProfile.html ...]
+
! scope="col"| Javadoc
|(% colspan="3" %)'''QuaternionPolynomialProfile'''|(% colspan="6" %)Object representing a quaternion guidance profile, calculated with polynomials.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/QuaternionPolynomialProfile.html ...]
+
|-
|(% colspan="3" %)'''QuaternionPolynomialSegment'''|(% colspan="6" %)Object representing a quaternion polynomial guidance profile on a segment.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/QuaternionPolynomialSegment.html ...]
+
|'''KinematicsToolkit'''
|(% colspan="3" %)'''AngularVelocitiesHarmonicProfile'''|(% colspan="6" %)Represents an angular velocities guidance profile, calculated with Fourier series.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/AngularVelocitiesHarmonicProfile.html ...]
+
|This class contains static methods performing kinematics operations.
|(% colspan="3" %)'''AngularVelocitiesPolynomialProfile'''|(% colspan="6" %)Represents an angular velocities guidance profile, calculated with polynomial functions.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/AngularVelocitiesPolynomialProfile.html ...]
+
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/attitudes/kinematics/KinematicsToolkit.html ...]
|(% colspan="3" %)'''Vector3DPolynomialSegment'''|(% colspan="6" %)Object representing an angular velociy polynomial guidance profile on a segment.|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/Vector3DPolynomialSegment.html ...]
+
|-
 +
|'''GuidanceProfile'''
 +
|Abstract class representing a guidance profile.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/GuidanceProfile.html ...]
 +
|-
 +
|'''GuidanceProfileBuilder'''
 +
|This class creates guidance profiles from an attitude law.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/GuidanceProfileBuilder.html ...]
 +
|-
 +
|'''QuaternionHarmonicProfile'''
 +
|Object representing a quaternion guidance profile, calculated with Fourier series.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/QuaternionHarmonicProfile.html ...]
 +
|-
 +
|'''QuaternionPolynomialProfile'''
 +
|Object representing a quaternion guidance profile, calculated with polynomials.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/QuaternionPolynomialProfile.html ...]
 +
|-
 +
|'''QuaternionPolynomialSegment'''
 +
|Object representing a quaternion polynomial guidance profile on a segment.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/QuaternionPolynomialSegment.html ...]
 +
|-
 +
|'''AngularVelocitiesHarmonicProfile'''
 +
|Represents an angular velocities guidance profile, calculated with Fourier series.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/AngularVelocitiesHarmonicProfile.html ...]
 +
|-
 +
|'''AngularVelocitiesPolynomialProfile'''
 +
|Represents an angular velocities guidance profile, calculated with polynomial functions.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/AngularVelocitiesPolynomialProfile.html ...]
 +
|-
 +
|'''AngularVelocitiesPolynomialSegment'''
 +
|Object representing an angular velocity polynomial guidance profile on a segment.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/AngularVelocitiesPolynomialSegment.html ...]
 +
|-
 +
|'''Vector3DPolynomialSegment'''
 +
|Object representing an angular velociy polynomial guidance profile on a segment.
 +
|[{{JavaDoc3.3}}/fr/cnes/sirius/patrius/guidance/Vector3DPolynomialSegment.html ...]
 +
|}
  
 
== Tutorials ==
 
== Tutorials ==
Ligne 117 : Ligne 158 :
 
== [[File:lightBulb.png]] Tips & Tricks ==
 
== [[File:lightBulb.png]] Tips & Tricks ==
 
{{specialInclusion prefix=$theme_sub section="Tips"/}}
 
{{specialInclusion prefix=$theme_sub section="Tips"/}}
 +
 +
[[Category:User_Manual_3.3_Attitude]]

Version actuelle en date du 28 février 2018 à 15:16

Introduction

Scope

A guidance profile is an attitude law providing the computation of an instantaneous attitude without any reference to the satellite orbit, nor to its attitude laws sequence. The purpose of this section is to present the guidance profiles available through the Patrius library.

Javadoc

The guidance models and classes are available in the guidance package in the Patrius library.

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

Links

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

Useful Documents

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

Package Overview

The following diagram shows the guidance package conception:

Guidage.png

Features Description

Harmonic guidance profiles

The functions representing the angular velocity of the satellite and the quaternion (or the Euler angles) expressing its orientation can be represented by an harmonic profile. The harmonic profile is a Fourier decomposition of a periodic function:

[math] S_n\left(f(x)\right) = a_0(f) + \sum_{k=1}^n\left(a_k(f)\cos\left(k x {2\pi\over T}\right) + b_k(f)\sin\left(k x {2\pi\over T}\right)\right) [/math]

The period T is generally computed knowing the nodes crossing periods.

The Fourier coefficients (n > 0) of [math]f[/math] (the angular velocity / quaternions / Euler angles function) are given by :

[math] a_0(f) = {1\over T}\int_{-T/2}^{T/2} \! f(t) \, \mathrm{d}t [/math]

[math] b_0(f) = 0 [/math]

[math] a_n(f) = {2\over T}\int_{-T/2}^{T/2} \! f(t) \cos\left(n t {2\pi\over T}\right) \, \mathrm{d}t [/math]

[math] b_n(f) = {2\over T}\int_{-T/2}^{T/2} \! f(t) \sin\left(n t {2\pi\over T}\right) \, \mathrm{d}t [/math]

Polynomial guidance profiles

A polynomial guidance profile is generally composed by several segments (a segment corresponds to a time interval). Each segment contains the coefficients for the computation of a polynomial law representing the quaternion (or the Euler angles), or the angular velocity of the satellite; this polynomial law is valid only inside the time interval associated to the segment.

For a quaternion, the polynomials are defined as :

[math]Qc_k(t) = \begin{pmatrix} \displaystyle\sum_{i=0}^n {a_0}_k^i \left( t-t_k \over {\Delta t} \right) \\ \displaystyle\sum_{i=0}^n {a_1}_k^i \left( t-t_k \over {\Delta t} \right) \\ \displaystyle\sum_{i=0}^n {a_2}_k^i \left( t-t_k \over {\Delta t} \right) \\ \displaystyle\sum_{i=0}^n {a_3}_k^i \left( t-t_k \over {\Delta t} \right) \end{pmatrix}[/math]

And for the angular velocity :

[math]\Omega c_k(t) = \begin{pmatrix} \displaystyle\sum_{i=0}^n {a_x}_k^i \left( \frac{t-t_k}{\Delta t} \right) \\ \displaystyle\sum_{i=0}^n {a_y}_k^i \left( \frac{t-t_k}{\Delta t} \right) \\ \displaystyle\sum_{i=0}^n {a_z}_k^i \left( \frac{t-t_k}{\Delta t} \right) \end{pmatrix}[/math]

Build an harmonic guidance profile from an attitude law

Given :

one can build an angular velocities guidance profile using the code snippet below :

profile = GuidanceProfileBuilder.computeAngularVelocitiesHarmonicProfile(attitude, prop, gcrf, tref,
                    period, order, IntegrationType.WILCOX_4, KinematicsToolkit.DEFAULT_8HZ);

Getting Started

TBD

Contents

Interfaces

None.

Classes

Class Summary Javadoc
KinematicsToolkit This class contains static methods performing kinematics operations. ...
GuidanceProfile Abstract class representing a guidance profile. ...
GuidanceProfileBuilder This class creates guidance profiles from an attitude law. ...
QuaternionHarmonicProfile Object representing a quaternion guidance profile, calculated with Fourier series. ...
QuaternionPolynomialProfile Object representing a quaternion guidance profile, calculated with polynomials. ...
QuaternionPolynomialSegment Object representing a quaternion polynomial guidance profile on a segment. ...
AngularVelocitiesHarmonicProfile Represents an angular velocities guidance profile, calculated with Fourier series. ...
AngularVelocitiesPolynomialProfile Represents an angular velocities guidance profile, calculated with polynomial functions. ...
AngularVelocitiesPolynomialSegment Object representing an angular velocity polynomial guidance profile on a segment. ...
Vector3DPolynomialSegment Object representing an angular velociy polynomial guidance profile on a segment. ...

Tutorials

Tutorial 1

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

Tutorial 2

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

LightBulb.png Tips & Tricks

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