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.

gnssMeasurementGenerator

Simule mediciones GNSS para escenarios

Desde R2023a

Descripción

El gnssMeasurementGenerator System object™ simula las mediciones del receptor del sistema global de navegación por satélite (GNSS). El objeto calcula pseudodistancias en función del 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 simular mediciones GNSS en un escenario de conducción:

  1. Cree el objeto gnssMeasurementGenerator y establezca sus propiedades.

  2. Agregue el receptor GNSS al vehículo host usando addSensors (Automated Driving Toolbox).

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

Para simular mediciones GNSS en un escenario VANT :

  1. Cree el objeto gnssMeasurementGenerator y establezca sus propiedades.

  2. Conecte el receptor GNSS a la plataforma VANT usando uavSensor (UAV Toolbox)

  3. Recopile la lectura del receptor GNSS usando read (UAV Toolbox)

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

Creación

Descripción

GNSS = gnssMeasurementGenerator devuelve un gnssMeasurementGenerator System object GNSS que simula mediciones sin procesar del receptor del sistema de navegación por satélite global.

GNSS = gnssMeasurementGenerator(Name=Value) especifica propiedades utilizando uno o más argumentos de nombre-valor.

ejemplo

Propiedades

expandir todo

A menos que se indique lo contrario, las propiedades son no ajustables, lo que significa que no puede modificar 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, puede modificar 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.

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 de la forma [latitude longitude altitude]. Especifique la latitud en grados, la longitud en grados y la altitud en metros. La altitud es la altura sobre el elipsoide de referencia modelo WGS84.

Ángulo de máscara de elevación, especificado como escalar en el rango [0, 90], en grados. El objeto no utiliza los satélites que están a la vista, sino por debajo del ángulo de la máscara, para estimar la posición del receptor.

Ajustable: Yes

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

Ajustable: Yes

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

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

  • "mt19937ar with seed" –– Genera números aleatorios usando el algoritmo mt19937ar con la semilla especificada por la propiedad Seed .

Tipos de datos: char | string

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

Dependencias

Para habilitar esta propiedad, especifique la propiedad RandomStream como "mt19937ar with seed".

Uso

Descripción

[pseudorangeMeasurements,satellitePositions,status] = GNSS calcula las mediciones del receptor GNSS.

ejemplo

Argumentos de salida

expandir todo

Mediciones de pseudodistancia del receptor GNSS, devueltas como un vector de elemento N, en metros. N es el número de satélites a la vista.

Posiciones de los satélites en un sistema de coordenadas fijo de la Tierra centrado en la Tierra, devueltas como una matriz N-por-3. N es el número de satélites a la vista. Cada fila es una coordenada cartesiana en metros.

Estado de las mediciones satelitales, devuelto como una estructura que contiene el campo:

  • LOS — Línea de visión para cada satélite, devuelta como un vector lógico de elementos N. N es el número de satélites a la vista. Un estado de 1 o true indica que hay línea de visión desde el receptor al satélite, y un estado de 0 o false indica que no hay línea de visión desde el receptor al satélite.

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
isLockedDetermine if System object is in use
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Ejemplos

contraer todo

Cree variables para la frecuencia de muestreo y la ubicación de referencia geodésica. Establezca la frecuencia de muestreo en 1 Hz y establezca la ubicación de referencia en Natick, Massachusetts.

Fs = 1;
refLocNatick = [42.2825 -71.343 53.0352]; 

Cree un escenario de conducción con la ubicación de referencia establecida en Natick y agregue un automóvil al escenario.

scene = drivingScenario(GeoReference=refLocNatick);
car = vehicle(scene);

Cree un System object generador de mediciones GNSS con la frecuencia de muestreo y la ubicación de referencia especificadas previamente.

gnss = gnssMeasurementGenerator(SampleRate=Fs,ReferenceLocation=refLocNatick);

Monte el generador de medición GNSS, como sensor, en el automóvil en la escena.

mountingPosition = [0 0 1.5];
addSensors(scene,{gnss},car.ActorID,mountingPosition)

Inicializar y avanzar el escenario.

advance(scene);

Obtenga las mediciones GNSS sin procesar.

[pr,satPos,status] = gnss()
pr = 7×1
107 ×

    2.2796
    2.2100
    2.4362
    2.0403
    2.1462
    2.1484
    2.3256

satPos = 7×3
107 ×

   -1.4462   -1.2715    1.8292
   -0.9570   -2.2840    0.9599
    2.2575   -1.3363   -0.4151
    0.3659   -1.4926    2.1662
    1.6338   -0.7834    1.9420
    0.0931   -2.5898    0.5817
    1.9750    0.0680    1.7745

status = struct with fields:
    LOS: [7x1 logical]

Cree variables para la frecuencia de muestreo GNSS y la ubicación de referencia geodésica. Establezca la frecuencia de muestreo en 10 Hz y establezca la ubicación de referencia en Natick, Massachusetts.

Fs = 10;
refLocNatick = [42.2825 -71.343 53.0352]; 

Cree un escenario de VANT utilizando la ubicación de referencia especificada configurada en Natick y establezca la frecuencia de actualización para que coincida con la frecuencia de muestreo GNSS.

scene = uavScenario(ReferenceLocation=refLocNatick,UpdateRate=Fs);

Cree una plataforma VANT utilizando el marco de referencia NED predeterminado.

plat = uavPlatform("UAV",scene,InitialPosition=[0 0 -30]);

Cree un objeto gnssMeasurementGenerator con la frecuencia de muestreo GNSS y la ubicación de referencia especificadas previamente.

gnssSensor = gnssMeasurementGenerator(ReferenceLocation=refLocNatick, ...
    SampleRate=Fs);

Conecte un sensor GNSS a la plataforma VANT utilizando el objeto uavSensor y especifique gnssSensor como modelo del sensor.

gnss = uavSensor("GNSS",plat,gnssSensor,MountingLocation=[0 0 -0.5]);

Configure el escenario y obtenga los pseudodistancias iniciales, las posiciones de los satélites y las mediciones del estado de los satélites.

setup(scene)
[~,~,pr,satPos,status] = gnss.read
pr = 8×1
107 ×

    2.3228
    2.0806
    2.2567
    2.1217
    2.0324
    2.4138
    2.2103
    2.3691

satPos = 8×3
107 ×

   -1.4379   -0.8048    2.0830
   -0.2938   -1.5770    2.1168
    1.9993   -0.3315    1.7167
    1.4171   -0.8375    2.0843
    0.8965   -2.0484    1.4334
    1.9169   -1.7406   -0.5916
   -0.4855   -2.5632    0.4986
    0.3075   -2.5612   -0.6322

status = struct with fields:
    LOS: [8×1 logical]

Avanzar el tiempo de simulación de la escena. La simulación avanza un solo paso según la velocidad de actualización especificada de 10 Hz, a 0,1 segundos.

advance(scene);

Actualice los sensores y obtenga los pseudorangos, las posiciones de los satélites y las mediciones del estado de los satélites en el nuevo paso de tiempo.

updateSensors(scene)
[isUpdated,timestamp,pr,satPos,status] = gnss.read
isUpdated = logical
   1

timestamp = 0.1000
pr = 8×1
107 ×

    2.3228
    2.0806
    2.2567
    2.1217
    2.0324
    2.4138
    2.2103
    2.3691

satPos = 8×3
107 ×

   -1.4379   -0.8048    2.0830
   -0.2938   -1.5770    2.1168
    1.9993   -0.3315    1.7167
    1.4171   -0.8375    2.0843
    0.8965   -2.0484    1.4334
    1.9169   -1.7406   -0.5916
   -0.4855   -2.5632    0.4986
    0.3075   -2.5612   -0.6322

status = struct with fields:
    LOS: [8×1 logical]

Utilice los pseudodistancias y las posiciones de los satélites para estimar la posición del VANT . Este resultado muestra que el VANT flota a 30 metros por encima de la ubicación de referencia.

recPos = receiverposition(pr(status.LOS,:),satPos(status.LOS,:))
recPos = 1×3

   42.2825  -71.3433   83.4915

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2023a