Name

CelestLabGeneral presentation of CelestLab

Description

CelestLab is a library of space mechanics functions written in Scilab. This library has been developed and is maintained by the CNES (Centre National d’Etudes Spatiales) DCT/SB/MS for mission analysis purposes.

The library is used by CNES for the trajectory analysis and orbit design for various types of missions. CelestLab contains several modules that allow to perform various tasks such as: orbit extrapolation, attitude computation, elementary manoeuvre computation, change of reference frame, change of coordinates,…

CelestLab has been validated against the CNES flight dynamics software legacy. Every function, is described, in its own help page with selected examples.

The functions are gathered in the following modules :

  • coordinates_frames : contains functions for change of reference frame, type of coordinate and dates.
  • geometry_event : contains functions for the computation of orbital geometry and orbital events (ground station visibility, sensor dazzling, ...)
  • interplanetary : contains functions for the 3 body problem analysis. (note that functions of the orbit properties module can be used for interplanetary trajectory analysis (elliptic motion, patch conics)
  • models : contains various models for atmospheric density, polar motion, sun and moon position,...
  • orbit_properties : contains functions for orbit properties analysis (sun sunchronysism, repeat orbits, frozen orbits, J2 drift, ...)
  • relative_motion : contains functions for relative trajectory using Clohessy Whiltshire formalism
  • trajectory_maneuvers : contains functions for orbit extrapolation, maneuver analysis and dispersions analysis
  • utils: contains miscellaneous functions in particular a list of constants and a Earth 2D plot function

Constants

CelestLab contains a lot of constants. They all start with the prefix %CL_

Depending on the way CelestLab is loaded, the constants can be known or not:

If CelestLab is loaded via ATOMS, the constants are not known in the working environnement. The user must use the function CL_init() to load the constants in ithe working environment.

If CelestLab is loaded using the loader script (exec(DIRBIB+'loader.sce',mode=-1) in the scilab.ini file for example), then the constants are automatically known in the working environment.

Naming conventions

All CelestLab functions start with the prefix CL_. which is followed by 2 or 3 letters indicationg the purpose of the functions:

CL_co : change of coordinates

CL_dat : conversion of dates

CL_fr : change of reference frames

CL_ev : computation of orbital events (ground station visibility, lighting / illumination conditions,...)

CL_gm : orbital geometry

CL_3b : three body problem (Lagrange points)

CL_mod : models (Precession, nutation models, sideral time, atmospheric madoels, ...)

CL_kp : keplerian transformation

CL_op : orbit properties (sun syncrhonisme, repeat orbit conditions,....)

CL_cw : Clohessy Whiltshire formalism (relative motion)

CL_dsp : dispersions analysis (covariance manipulation, monte carlo)

CL_ex : orbit extraplolation (analytical models for orbit extrapolation)

CL_man : orbital maneuvers (Hohmann, Lambert transfer)

Conventions

Several conventions apply to CelestLab

Vectors :

In CelestLab most of the functions are vectorized. Arguments of functions are given as vectors of size (1,N) for a set of scalars or (3,N) for position vectors

Rotation matrix :

By convention in CelestLab,the transformation matrix TM12 from an initial frame R1 to a final frame R2 with the same origin is defined by the relation , where X1 and X2 are the components of the vector X expressed respectively in the frames R1 and R2. the coordinates of a vector from the initial Reference Frame to the final Reference Frame.

Operator overloads

CelestLab contains operators overload:

Quaternions :

Quaternions (mlist 'quat') are defined within CelestLab

  • operators between quaternion (q) and scalar (alpha) : q*alpha (same as alpha*q), q/alpha, alpha/q (same as alpha*conj(q) if q is normed)
  • operators between quaternion (q) and vector (alpha) : q.*alpha (same as alpha.*q), q./alpha, alpha./q (same as alpha.*conj(q) if q is normed)
  • logical operators on quaternions : q1==q2
  • operators between quaternions (q1 q2) : q1*q2 , q1/q2, q1+q2 , q1-q2
  • other operators on quaternions (q1 q2) : size(q), norm(q), [q1 q2 ...], conj(q)==~q, real(q), imag(q);

Hypermatrix :

Scilab's hypermatrix (mlist 'hm') is overloaded in CelestLab. They must be of dimension (p x p x N).

  • Multiplication of an hypermatrix with a hypermatrix : hm3 = hm1 * hm2
  • Multiplication of an hypermatrix with a matrix : m2 = hm * m1
  • Multiplication of an hypermatrix with a scalar : hm2 = hm * alpha
  • other operators : hm' , acos(hm)