Contenido principal

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 pseudorangos basándose en el tiempo del sensor y los datos que especifican los parámetros orbitales del satélite. 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, configure la propiedad InitialTime.

El modelo de sensor GNSS desarrollado con gnssMeasurementGenerator utiliza trazado de rayos acelerado por hardware para producir una representación altamente realista y precisa de datos de posicionamiento basados en satélite. El trazado de rayos permite modelar con precisión las interacciones entre las ondas de radio emitidas por el sensor GNSS y los satélites GNSS en órbita. Además, el trazado de rayos simula reflexiones por trayectos múltiples, considerando factores como la posición y el ángulo del satélite, lo que mejora el realismo y la precisión de los datos de posicionamiento de salida.

Para simular mediciones GNSS en un escenario de conducción:

  1. Cree el objeto gnssMeasurementGenerator y configure sus propiedades.

  2. Agregue el receptor GNSS al vehículo host mediante 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 configure sus propiedades.

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

  3. Recopila la lectura del receptor GNSS utilizando read (UAV Toolbox)

Para más información sobre el funcionamiento de los System objects, consulte ¿Qué son los System Objects?

Creación

Descripción

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

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 llama a ellos, 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 modificar los valores de las propiedades, consulte Diseñar sistemas en MATLAB utilizando 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 con 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 utilizando 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

Medidas de pseudodistancia del receptor GNSS, devueltas como un vector de elementos 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 y centrado en la Tierra, devuelto 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 hasta el satélite, y un estado de 0 o false indica que no hay línea de visión desde el receptor hasta el satélite.

Funciones del objeto

Para usar una función de objeto, especifique el System object como el primer argumento de entrada. Por ejemplo, para liberar recursos de sistema de un System object llamado obj, utilice la siguiente 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 = 8×1
107 ×

    2.4287
    2.3844
    2.2034
    2.0390
    2.1206
    2.3107
    2.1520
    2.0685

satPos = 8×3
107 ×

    2.5761   -0.5505    0.3389
   -1.7995   -0.9759    1.6922
    1.5715   -0.3668    2.1095
    0.7838   -1.4138    2.1074
    1.4760   -2.0652    0.7814
    0.7535   -2.5123   -0.4182
   -0.8439   -1.5556    1.9804
    0.0379   -2.3376    1.2604

status = struct with fields:
    LOS: [8×1 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 UAV 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 = 7×1
107 ×

    2.0935
    2.2396
    2.0890
    2.3157
    2.2747
    2.1539
    2.0791

satPos = 7×3
107 ×

    0.0253   -2.4501    1.0250
    0.8549   -2.5134   -0.0768
   -0.3178   -1.4899    2.1756
    1.8677    0.0873    1.8864
   -1.2449   -2.2030    0.8070
    1.6588   -0.7428    1.9367
    1.5297   -1.7042    1.3452

status = struct with fields:
    LOS: [7×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 = 7×1
107 ×

    2.0935
    2.2396
    2.0890
    2.3157
    2.2747
    2.1539
    2.0791

satPos = 7×3
107 ×

    0.0253   -2.4501    1.0250
    0.8549   -2.5134   -0.0768
   -0.3178   -1.4899    2.1756
    1.8677    0.0873    1.8864
   -1.2449   -2.2030    0.8070
    1.6588   -0.7428    1.9367
    1.5297   -1.7042    1.3452

status = struct with fields:
    LOS: [7×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.8878

Historial de versiones

Introducido en R2023a