Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

gnssSensor

Simule GNSS para generar lecturas de posición y velocidad.

Desde R2020b

Descripción

El gnssSensor System object™ simula un sistema de navegación global por satélite (GNSS) para generar lecturas de posición y velocidad basadas en datos de velocidad y posición local. El objeto calcula las posiciones y velocidades de los satélites basándose en el tiempo del sensor y los datos que especifica el satélite orbital parameters. El objeto utiliza únicamente las constelaciones del Sistema de Posicionamiento Global (GPS) para sus cálculos. Para establecer las posiciones iniciales de los satélites, establezca la propiedad InitialTime .

Para generar lecturas de posición y velocidad GNSS:

  1. Cree el objeto gnssSensor y establezca sus propiedades.

  2. Llame al objeto con argumentos, como si fuera una función.

Para obtener más información sobre cómo funcionan los System objects, consulte What Are System Objects?

Llamar al objeto incrementa el tiempo del sensor y propaga la posición y las velocidades del satélite en función de los parámetros orbitales.

Creación

Descripción

GNSS = gnssSensor devuelve un gnssSensor System object GNSS que calcula las lecturas del receptor del sistema global de navegación por satélite en función de la posición local y entrada de velocidad.

GNSS = gnssSensor(ReferenceFrame=frame) especifica el marco de referencia en el que se informan las lecturas GNSS. Especifique frame como 'NED' (noreste-abajo) o 'ENU' (este-norte-arriba). El valor predeterminado es 'NED'.

GNSS = gnssSensor(___,Name=Value) establece propiedades utilizando uno o más pares nombre-valor. Por ejemplo, gnssSensor("SampleRate",2) crea un GNSS simulado con una frecuencia de muestreo de 2 Hz. Encierre el nombre de cada propiedad entre comillas.

ejemplo

Propiedades

expandir todo

A menos que se indique lo contrario, las propiedades son no ajustables, lo que significa que no se pueden cambiar sus valores después de llamar al objeto. Los objetos se bloquean cuando los llamas y la función release los desbloquea.

Si una propiedad es ajustable, puedes cambiar su valor en cualquier momento.

Para obtener más información sobre cómo cambiar los valores de las propiedades, consulte System Design in MATLAB Using System Objects.

Frecuencia de muestreo del receptor GNSS, especificada como escalar positivo en Hz.

Tipos de datos: single | double

Hora inicial del receptor GNSS, especificada como un objeto datetime . El objeto representa los segundos intercalares en la conversión entre la hora UTC y GNSS.

Origen del marco de referencia de navegación local, especificado como un vector fila de tres elementos en coordenadas geodésicas (latitud en grados, longitud en grados y altitud en metros). La altitud es la altura sobre el elipsoide de referencia modelo WGS84.

Tipos de datos: single | double

Ángulo de máscara de elevación, especificado como un escalar en el rango [0, 90] en grados. Los satélites a la vista pero por debajo del ángulo de la máscara no se utilizan para estimar la posición del receptor.

Ajustable: Yes

Tipos de datos: single | double

Desviación estándar del ruido de medición del pseudorango, especificado como un escalar no negativo en metros.

Ajustable: Yes

Tipos de datos: single | double

Desviación estándar del ruido de medición de la tasa de pseudorango, especificada como un escalar no negativo en metros por segundo.

Ajustable: Yes

Tipos de datos: single | double

Fuente de números aleatorios, especificada como una de estas opciones:

  • "Global stream" –– Los números aleatorios se generan utilizando el flujo de números aleatorios global actual.

  • "mt19937ar with seed" –– Los números aleatorios se generan utilizando el algoritmo mt19937ar con la semilla especificada por la propiedad Seed .

Tipos de datos: char | string

Semilla inicial de un algoritmo generador de números aleatorios mt19937ar, especificado como un entero no negativo.

Dependencias

Para habilitar esta propiedad, establezca RandomStream en "mt19937ar with seed".

Tipos de datos: integer

Uso

Descripción

[positionReadings,velocityReadings,status] = GNSS(position,velocity) calcula las lecturas del receptor del sistema de navegación global por satélite a partir de las entradas de posición y velocidad.

Argumentos de entrada

expandir todo

Posición cartesiana del receptor GNSS en el sistema de coordenadas de navegación local, especificada como una matriz N-por-3 en metros. N es el número de muestras.

El marco de referencia predeterminado es NED (noreste hacia abajo). Para ENU (este-norte-arriba), establezca el argumento nombre-valor ReferenceFrame en"ENU" en el momento de la creación.

Tipos de datos: single | double

Velocidad del receptor GNSS en el sistema de coordenadas de navegación local, especificada como una matriz N-por-3 en metros por segundo. N es el número de muestras.

Tipos de datos: single | double

El marco de referencia predeterminado es NED (noreste hacia abajo). Para ENU (este-norte-arriba), establezca el argumento nombre-valor ReferenceFrame en"ENU" en el momento de la creación.

Argumentos de salida

expandir todo

Lecturas de posición del receptor GNSS en el sistema de coordenadas geodésicas de latitud, longitud y altitud (LLA), devueltas como una matriz N-por-3. La altitud es la altura sobre el modelo de elipsoide de referencia, WGS84. N es el número de muestras en el argumento de entrada. La latitud y la longitud están en grados. La altitud está en metros.

Tipos de datos: single | double

Lectura de velocidad del receptor GNSS en el sistema de coordenadas de navegación local en metros por segundo, devuelta como una matriz N-por-3. N es el número de muestras en los argumentos de entrada.

Tipos de datos: single | double

Información de estado de los satélites visibles, devuelta como un arreglo de estructuras de elementos N . N es el número de muestras en los argumentos de entrada. Cada estructura contiene estos cuatro campos:

Nombre del campoDescripción
SatelliteAzimuthÁngulos de azimut de los satélites visibles, devueltos como un vector de elemento M en grados. M es el número de satélites visibles.
SatelliteElevationÁngulos de elevación de los satélites visibles, devueltos como un vector de elemento M en grados. M es el número de satélites visibles.
HDOPDilución horizontal de precisión, devuelta como escalar.
VDOPDilución vertical de precisión, devuelta como un escalar.

Para trazar las posiciones de los satélites, consulte la función skyplot .

Funciones del objeto

Para utilizar una función de objeto, especifique System object como primer argumento de entrada. Por ejemplo, para liberar recursos del sistema de un System object llamado obj, use esta sintaxis:

release(obj)

expandir todo

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

Ejemplos

contraer todo

Genere posiciones y velocidades de destino basadas en la trayectoria de un punto de referencia.

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

Cree un System object GNSS. Utilice la posición LLA para Natick, MA como el origen del marco de referencia local de la trayectoria.

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

Genere lecturas de posición y velocidad basadas en el objeto GNSS.

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

   42.2825  -71.3430   53.2405
   42.2834  -71.3418  -46.4457
   42.2843  -71.3406 -145.5400
   42.2852  -71.3394 -247.0963
   42.2861  -71.3381 -347.0818
   42.2870  -71.3369 -449.3695

velocityReadings = 6×3

   10.0020   10.0144    9.9601
   10.0030   10.0080   10.0497
   10.0109    9.9978    9.9847
   10.0037    9.9882    9.9899
    9.9773    9.9893   10.0147
   10.0240   10.0029    9.9830

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

Cree un modelo de sensor GNSS como gnssSensor System object™.

gnss = gnssSensor; 

Especifique la posición y la velocidad del sensor. Este ejemplo supone un sensor estacionario en la posición de [0 0 0] en el marco de referencia NED. Simule las lecturas del sensor y obtenga el estado de los satélites visibles. Almacene los ángulos de acimut y elevación como vectores.

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

Trazar las posiciones de los satélites.

skyplot(satAz,satEl) 

Figure contains an object of type skyplot.

Más acerca de

expandir todo

Referencias

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

Capacidades ampliadas

Historial de versiones

Introducido en R2020b