User Manual 4.13 Properties and models: Sensors

De Wiki
Révision de 19 décembre 2023 à 13:38 par Admin (discussion | contributions) (Page créée avec « == Introduction == === Scope === In this section are presented the sensor model for a PATRIUS assembly, the associated part property and the fields of view that are necess... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Introduction

Scope

In this section are presented the sensor model for a PATRIUS assembly, the associated part property and the fields of view that are necessary to describe it.

Javadoc

The [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/models/SensorModel.html SensorModel] ais available in the package [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/models/package-summary.html fr.cnes.sirius.patrius.assembly.models].

The [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/properties/SensorProperty.html SensorProperty] is available in the package [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/properties/package-summary.html fr.cnes.sirius.patrius.assembly.properties].

The fields of view are available in the package [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/fieldsofview/package-summary.html fr.cnes.sirius.patrius.fieldsofview].


Links

None as of now.

Useful Documents

None as of now.

Package overview

The sensor model is associated to one part of an assembly that must have a "SensorProperty" property.

Its main and inhibition targets are several PVCoordinatesProvider (and their radiuses are doubles), its main and inhibition fields of view are under the IFieldOfView interface, in the "fieldsofview" package.

Please note that not all implementations are present in the following diagram for the sake of clarity.

Sensors.PNG

Features Description

Properties

Sensor Property

To create a sensor model, one part of the assembly must be associated to a SENSOR property.

A sensor property contains :

  • a sight axis (not optional)
  • (optional) a main spherical target defined by its center and radius (that can be set to zero to create a simple point)
  • (optional)if a main target has been defined : a main field of view
  • (optional) two arrays (same length) for the inhibition fields and the associated targets (as the main one, they are spherical, with radiuses that can be set to zero to create a simple point)
  • (optional) an array of reference axis

All of them are expressed in the sensor part/frame.

This property shall be used through the Sensor Model.

The property type associated is SENSOR.

Geometric property

The Geometric property associates a part to any shape that implements the [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/math/geometry/euclidean/threed/SolidShape.html SolidShape] interface.
(See the [MAT_GEO_Home Geometry] chapter of the Mathematics user manual for more details)
It is used in masking computations.


The property type associated is GEOMETRY.

Sensor model

An instance of the sensor model is associated to one part, that contains a SENSOR property. It realizes the useful computations about this particular sensor : check if the main target is in its field of view, if inhibition or maskings happen, etc...

Here is a complete list of thoses services. The model provides methods to :

  • Check if the main spherical target is in the field of view at a date

Important : for "is in" boolean tests, all spherical targets (main and inhibition) are considered to be in the associated field as soon as a part of them is in.

// the model is build from an assembly, giving the name of the part that contains the SENSOR property.
SensorModel sensor = new SensorModel(assembly, partName);
boolean targetIsInField = sensor.isMainTargetInField(date);
  • Check if at least an inhibition spherical target is in its associated inhibition field at a date
boolean noInhibition = sensor.noInhibition(date);
  • Check if the main spherical target is in the field of view AND no inhibition target in its inhibition field at a given date
boolean visibilityIsOk = sensor.visibilityOk(date);
  • Computes the angular distance of the main target CENTER to the border of the main field of view at a date.

double angularDistance = sensor.getTargetCenterFOVAngle(date); The result is positive if the target is in the field. NB : in some particular cases of Boolean Field of view, this angular distance is approximated (but the sign is still right).

  • Computes the main spherical target direction vector in the part's frame (CX, CY, CZ)
Vector3D targetInFrame = sensor.getTargetVectorInSensorFrame(date);
  • Computes the dihedral angles (AX = atan2(CZ, CY), AY = atan2(CX, CZ), AZ = atan2(CY, CX))
// the order in this array is : AX, AY, AZ
double[] angles = sensor.getTargetDihedralAngles(date);
  • Computes the vector angles (of the main target to the sight axis or one of the reference axis)
// to the sight axis
double angleSightAxis = sensor.getTargetSightAxisAngle(date);
 
// to the reference axis number N (for the first N = 1 !!)
double angleRefAxis = sensor.getTargetRefAxisAngle(date, N);
  • Computes the elevation angles (of the main target to the plane orthogonal to the sight axis or to one of the reference axis)
// to the sight axis
double angleSightAxis = sensor.getTargetSightAxisElevation(date);
 
// to the reference axis number N (for the first N = 1 !!)
double angleRefAxis = sensor.getTargetRefAxisElevation(date, N);
  • Set potentially masking objects and test the masking at a date. Those objects can be parts of the same spacecraft (the one carrying the sensor), parts of [MIS_SENSORS_SecondSpc secondary spacecrafts] or [MIS_SENSORS_PatriusBodySpheroid celestial bodies].
// two potentially masking celestial bodies
BodyShape earth = new OneAxisEllipsoid(aeEarth, fEarth, attachedFrameEarth, "earth");
BodyShape moon= new OneAxisEllipsoid(aeMoon, fMoon, attachedFrameMoon, "moon");
 
sensor.addMaskingCelestialBody(earth);
sensor.addMaskingCelestialBody(moon);
 
// a potentially masking spacecraft (the concerned Assembly's parts must have the right GEOMETRY property)
SecondarySpacecraft issStation = new SecondarySpacecraft (assemblyISS, propagatorISS, "ISS");
 
// its potentially masking parts names
String[] maskingPartsISS = {"solar panel 1", "solar panel 2"};
 
sensor.addSecondaryMaskingSpacecraft(issStation, maskingPartsISS );
 
// the same spacecraft's potentially masking parts (that must have each a GEOMERTY property)
String[] maskingPartsSameSpacecraft = {"solar panel", "big antenna"};
 
sensor.addOwnMaskingParts(maskingPartsSameSpacecraft);

Fields of view

See the dedicated [SPC_FIELD_mainPage Fields of view ] page.

Getting started

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

Contents

Interfaces

None as of now.

Classes

Class Summary Javadoc
SensorProperty This class is a part property for the PATRIUS assembly. It allows to define a part as a sensor, with associated fields and axis. [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/properties/SensorProperty.html ...]
GeometricProperty This class is a part property for the PATRIUS assembly. It allows to define the part geometry for masking computations. [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/properties/GeometricProperty.html ...]
SensorModel This class is a model for a sensor integrated in a PATRIUS assembly. [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/assembly/models/SensorModel.html ...]
SecondarySpacecraft This class is a potentially sensor-masking secondary spacecraft. [[[:Modèle:JavaDoc4.13]]/fr/cnes/sirius/patrius/events/sensor/SecondarySpacecraft.html ...]

See the dedicated [SPC_FIELD_mainPage Fields of view ] page for associated contents.