Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

gnssSensor

Simulez le GNSS pour générer des lectures de position et de vitesse

Depuis R2020b

Description

Le gnssSensor System object™ simule un système mondial de navigation par satellite (GNSS) pour générer des lectures de position et de vitesse basées sur des données de position et de vitesse locales. L'objet calcule les positions et les vitesses des satellites en fonction du temps du capteur et des données qui spécifient le satellite orbital parameters. L'objet utilise uniquement les constellations du système de positionnement global (GPS) pour les calculs. Pour définir les positions de départ des satellites, définissez la propriété InitialTime .

Pour générer des lectures de position et de vitesse GNSS :

  1. Créez l'objet gnssSensor et définissez ses propriétés.

  2. Appelez l'objet avec des arguments, comme s'il s'agissait d'une fonction.

Pour en savoir plus sur le fonctionnement des objets système, voir What Are System Objects?

L'appel de l'objet incrémente le temps du capteur et propage la position et les vitesses du satellite en fonction des paramètres orbitaux.

Création

Description

GNSS = gnssSensor renvoie un gnssSensor System object GNSS qui calcule les lectures du récepteur du système de navigation par satellite mondial en fonction de la position locale et l'entrée de vitesse.

GNSS = gnssSensor(ReferenceFrame=frame) spécifie le cadre de référence dans lequel les lectures GNSS sont rapportées. Spécifiez frame comme 'NED' (nord-est-bas) ou 'ENU' (est-nord-haut). La valeur par défaut est 'NED'.

exemple

GNSS = gnssSensor(___,Name=Value) définit les propriétés en utilisant une ou plusieurs paires nom-valeur. Par exemple, gnssSensor("SampleRate",2) crée un GNSS simulé avec une fréquence d'échantillonnage de 2 Hz. Mettez chaque nom de propriété entre guillemets.

Propriétés

développer tout

Sauf indication contraire, les propriétés sont non réglables , ce qui signifie que vous ne pouvez pas modifier leurs valeurs après avoir appelé l'objet. Les objets se verrouillent lorsque vous les appelez et la fonction release les déverrouille.

Si une propriété est ajustable , vous pouvez modifier sa valeur à tout moment.

Pour plus d'informations sur la modification des valeurs des propriétés, voir System Design in MATLAB Using System Objects.

Fréquence d'échantillonnage du récepteur GNSS, spécifiée sous forme de scalaire positif en Hz.

Types de données : single | double

Heure initiale du récepteur GNSS, spécifiée comme objet datetime . L'objet prend en compte les secondes intercalaires dans la conversion entre l'heure UTC et l'heure GNSS.

Origine du cadre de référence de navigation locale, spécifiée sous la forme d'un vecteur ligne à trois éléments en coordonnées géodésiques (latitude en degrés, longitude en degrés et altitude en mètres). L'altitude est la hauteur au-dessus du modèle d'ellipsoïde de référence WGS84.

Types de données : single | double

Angle du masque d'élévation, spécifié sous forme de scalaire dans la plage [0, 90] en degrés. Les satellites visibles mais en dessous de l'angle du masque ne sont pas utilisés pour estimer la position du récepteur.

Ajustable : Yes

Types de données : single | double

Écart type du bruit de mesure de pseudo-portée, spécifié sous forme d'un scalaire non négatif en mètres.

Ajustable : Yes

Types de données : single | double

Écart type du bruit de mesure du taux de pseudo-distance, spécifié sous la forme d'un scalaire non négatif en mètres par seconde.

Ajustable : Yes

Types de données : single | double

Source de nombres aléatoires, spécifiée comme l'une de ces options : :

  • "Global stream" –– Des nombres aléatoires sont générés à l’aide du flux de nombres aléatoires global actuel.

  • "mt19937ar with seed" –– Des nombres aléatoires sont générés à l'aide de l'algorithme mt19937ar avec la graine spécifiée par la propriété Seed .

Types de données : char | string

Graine initiale d'un algorithme générateur de nombres aléatoires mt19937ar, spécifié comme un entier non négatif.

Dépendances

Pour activer cette propriété, définissez RandomStream sur "mt19937ar with seed".

Types de données : integer

Utilisation

Description

[positionReadings,velocityReadings,status] = GNSS(position,velocity) calcule les lectures du récepteur du système mondial de navigation par satellite à partir des entrées de position et de vitesse.

Arguments en entrée

développer tout

Position cartésienne du récepteur GNSS dans le système de coordonnées de navigation local, spécifiée sous la forme d'une matrice N-par-3 en mètres. N est le nombre d’échantillons.

Le cadre de référence par défaut est NED (nord-est-bas). Pour ENU (est-nord-haut), définissez l'argument nom-valeur ReferenceFrame sur "ENU" lors de la création.

Types de données : single | double

Vitesse du récepteur GNSS dans le système de coordonnées de navigation local, spécifiée sous la forme d'une matrice N-par-3 en mètres par seconde. N est le nombre d’échantillons.

Types de données : single | double

Le cadre de référence par défaut est NED (nord-est-bas). Pour ENU (est-nord-haut), définissez l'argument nom-valeur ReferenceFrame sur "ENU" lors de la création.

Arguments de sortie

développer tout

Lectures de position du récepteur GNSS dans le système de coordonnées géodésiques de latitude, longitude et altitude (LLA), renvoyées sous la forme d'une matrice N-by-3. L'altitude est la hauteur au-dessus du modèle ellipsoïde de référence, WGS84. N est le nombre d'échantillons dans l'argument d'entrée. La latitude et la longitude sont en degrés. L'altitude est en mètres.

Types de données : single | double

Lecture de la vitesse du récepteur GNSS dans le système de coordonnées de navigation local en mètres par seconde, renvoyée sous forme de matrice N-by-3. N est le nombre d'échantillons dans les arguments d'entrée.

Types de données : single | double

Informations sur l'état des satellites visibles, renvoyées sous la forme d'un tableau d'éléments de structures N. N est le nombre d'échantillons dans les arguments d'entrée. Chaque structure contient ces quatre champs :

Nom de domaineDescription
SatelliteAzimuthAngles d'azimut des satellites visibles, renvoyés sous la forme d'un vecteur d'éléments M en degrés. M est le nombre de satellites visibles.
SatelliteElevationAngles d'élévation des satellites visibles, renvoyés sous forme de vecteur d'élément M en degrés. M est le nombre de satellites visibles.
HDOPDilution horizontale de précision, renvoyée sous forme de scalaire.
VDOPDilution verticale de précision, renvoyée sous forme de scalaire.

Pour tracer les positions des satellites, voir la fonction skyplot .

Fonctions d'objet

Pour utiliser une fonction objet, spécifiez le System object comme premier argument d'entrée. Par exemple, pour libérer les ressources système d'un System object nommé obj, utilisez cette syntaxe :

release(obj)

développer tout

cloneCreate duplicate System object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object
isDoneEnd-of-data status

Exemples

réduire tout

Générez des positions et des vitesses cibles en fonction d'une trajectoire de point de cheminement.

rng(2020) % For repeatable results
fs = 0.1;
tArrival = 50;
tspan = 0:1/fs:tArrival;
% Create a waypoint trajectory.
trajectory = waypointTrajectory([0,0,0;1,1,1]*500,[0,tArrival]);
[positions,~,velocities] = lookupPose(trajectory,tspan)
positions = 6×3

         0         0         0
  100.0000  100.0000  100.0000
  200.0000  200.0000  200.0000
  300.0000  300.0000  300.0000
  400.0000  400.0000  400.0000
  500.0000  500.0000  500.0000

velocities = 6×3

   10.0000   10.0000   10.0000
   10.0000   10.0000   10.0000
   10.0000   10.0000   10.0000
   10.0000   10.0000   10.0000
   10.0000   10.0000   10.0000
   10.0000   10.0000   10.0000

Créez un System object GNSS. Utilisez la position LLA pour Natick, MA comme origine du cadre de référence local de la trajectoire.

refLocNatick = [42.2825 -71.343 53.0352];
gnss = gnssSensor('SampleRate',fs, ...
    'ReferenceLocation',refLocNatick);

Générez des lectures de position et de vitesse basées sur l'objet GNSS.

[llaReadings,velocityReadings,status] = gnss(positions,velocities)
llaReadings = 6×3

   42.2825  -71.3430   52.9965
   42.2834  -71.3418  -44.4636
   42.2843  -71.3406 -146.5368
   42.2852  -71.3394 -246.5337
   42.2861  -71.3382 -348.0243
   42.2870  -71.3369 -446.7429

velocityReadings = 6×3

   10.0016   10.0001    9.9873
    9.9749    9.9891    9.9625
   10.0210   10.0062   10.0193
   10.0167    9.9958   10.0320
    9.9994   10.0086    9.9395
    9.9940   10.0155   10.0186

status=6×1 struct array with fields:
    SatelliteAzimuth
    SatelliteElevation
    HDOP
    VDOP

Créez un modèle de capteur GNSS en tant qu'objet système gnssSensor System object™.

gnss = gnssSensor; 

Spécifiez la position et la vitesse du capteur. Cet exemple suppose un capteur stationnaire à la position [0 0 0] dans le référentiel NED. Simulez les lectures du capteur et obtenez l'état des satellites visibles. Stockez les angles d’azimut et d’élévation sous forme de vecteurs.

pos = [0 0 0]; 
vel = [0 0 0]; 
[~,~,status] = gnss(pos,vel); 
satAz = status.SatelliteAzimuth; 
satEl = status.SatelliteElevation; 

Tracez les positions des satellites.

skyplot(satAz,satEl) 

Figure contains an object of type skyplot.

En savoir plus

développer tout

Références

[1] Groves, Paul D. Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems. 2nd ed, Artech House, 2013.

Capacités étendues

Historique des versions

Introduit dans R2020b