gpsSensor
Modelo de simulación del receptor GPS.
Descripción
Los modelos gpsSensor System object™ modelan la salida de datos de un receptor del Sistema de Posicionamiento Global (GPS). El objeto modela el ruido de posición como un proceso de Gauss Markov de primer orden, en el que los valores sigma se especifican en las propiedades HorizontalPositionAccuracy y VerticalPositionAccuracy. El objeto modela el ruido de velocidad como ruido gaussiano con su valor sigma especificado en la propiedad VelocityAccuracy.
Para modelar un receptor GPS:
Cree el objeto
gpsSensory configure sus propiedades.Llame al objeto con argumentos, como si fuera una función.
Para más información sobre el funcionamiento de los System objects, consulte ¿Qué son los System Objects?
Creación
Descripción
devuelve un GPS = gpsSensorgpsSensor System object que calcula una lectura del receptor del Sistema de Posicionamiento Global basándose en una señal de entrada de posición y velocidad local. La posición de referencia predeterminada en coordenadas geodésicas es
latitud: 0 o N
longitud: 0 o E
altitud: 0 metros
devuelve un GPS = gpsSensor('ReferenceFrame',RF)gpsSensor System object que calcula una lectura del receptor del sistema de posicionamiento global relativa al marco de referencia RF.
GPS = gpsSensor(___, establece una o más propiedades utilizando argumentos de nombre-valor además de cualquiera de los argumentos de entrada anteriores.Name=Value)
Argumentos de entrada
Marco de referencia de las entradas del sensor, especificado como 'NED' (Noreste-Abajo) o 'ENU' (Este-Norte-Arriba).
Tipos de datos: char | string
Propiedades
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.
Tasa de actualización del receptor en Hz, especificada como escalar real positivo.
Tipos de datos: single | double
Ubicación de referencia, especificada como un vector fila de 3 elementos en coordenadas geodésicas (latitud, longitud y altitud). La altitud es la altura sobre el modelo de elipsoide de referencia, WGS84. La ubicación de referencia está en [degrees degrees meters]. El formato de grado es grados decimales (DD).
Tipos de datos: single | double
Formato de entrada de coordenadas de posición, especificado como 'Local' o 'Geodetic'.
Si establece la propiedad como
'Local', deberá especificar la entradatruePositioncomo coordenadas cartesianas con respecto al marco de navegación local cuyo origen es fijo y está definido por la propiedadReferenceLcation. Además, cuando especifica la entradatrueVelocity, debe especificarla con respecto a este marco de navegación local.Si establece la propiedad como
'Geodetic', deberá especificar la entradatruePositioncomo coordenadas geodésicas en latitud, longitud y altitud. Además, cuando se especifica la entradatrueVelocity, se debe especificar con respecto al marco de navegación (NED o ENU) cuyo origen corresponde a la entradatruePosition. Al establecer la propiedad como'Geodetic', el objetogpsSensorignora la propiedadReferenceLocation.
Tipos de datos: character vector
Precisión de la posición horizontal en metros, especificada como un escalar real no negativo. La precisión de la posición horizontal especifica la desviación estándar del ruido en la medición de la posición horizontal.
Ajustable: Yes
Tipos de datos: single | double
Precisión de la posición vertical en metros, especificada como un escalar real no negativo. La precisión de la posición vertical especifica la desviación estándar del ruido en la medición de la posición vertical.
Ajustable: Yes
Tipos de datos: single | double
Precisión de la velocidad en metros por segundo, especificada como un escalar real no negativo. La precisión de la velocidad especifica la desviación estándar del ruido en la medición de la velocidad.
Ajustable: Yes
Tipos de datos: single | double
Factor de caída del ruido de posición global, especificado como un escalar en el rango [0,1].
Un factor de caída de 0 modela el ruido de posición global como un proceso de ruido blanco. Un factor de caída de 1 modela el ruido de posición global como un proceso de caminata aleatoria.
Ajustable: Yes
Tipos de datos: single | double
Fuente de números aleatorios, especificada como un vector de caracteres o una cadena:
'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 propiedadSeed.
Tipos de datos: char | string
Semilla inicial de un algoritmo generador de números aleatorios mt19937ar, especificado como un escalar entero no negativo.
Dependencias
Para habilitar esta propiedad, establezca RandomStream en 'mt19937ar with seed'.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Uso
Descripción
[ calcula las lecturas del receptor del sistema de navegación por satélite global a partir de las entradas de posición y velocidad.position,velocity,groundspeed,course] = GPS(truePosition,trueVelocity)
Argumentos de entrada
Posición del receptor GPS en el sistema de coordenadas de navegación, especificada como una matriz real finita N por 3. N es el número de muestras en el cuadro actual.
Cuando la propiedad
PositionInputFormatse especifica como'Local', especifiquetruePositioncomo coordenadas cartesianas con respecto al marco de navegación local cuyo origen está fijo enReferenceLocation.Cuando la propiedad
PositionInputFormatse especifica como'Geodetic', especifiquetruePositioncomo coordenadas geodésicas en[latitude longitude altitude].latitudeylongitudeestán en grados.altitudees la altura sobre el modelo de elipsoide WGS84 en metros.
Tipos de datos: single | double
Velocidad del receptor GPS en el sistema de coordenadas de navegación en metros por segundo, especificada como una matriz real finita N por 3. N es el número de muestras en el cuadro actual.
Cuando la propiedad
PositionInputFormatse especifica como'Local', especifiquetrueVelocitycon respecto al marco de navegación local (NED o ENU) cuyo origen está fijado enReferenceLocation.Cuando la propiedad
PositionInputFormatse especifica como'Geodetic', especifiquetrueVelocitycon respecto al marco de navegación (NED o ENU) cuyo origen corresponde a la entradatruePosition.
Tipos de datos: single | double
Argumentos de salida
Posición del receptor GPS en el sistema de coordenadas geodésicas de latitud, longitud y altitud (LLA), devuelta como un arreglo finita real N por 3. La latitud y la longitud están en grados, siendo el norte y el este positivos. La altitud está en metros.
N es el número de muestras en el cuadro actual.
Tipos de datos: single | double
Velocidad del receptor GPS en el sistema de coordenadas de navegación local en metros por segundo, devuelta como un arreglo finito real N por 3. N es el número de muestras en el cuadro actual.
Cuando la propiedad
PositionInputFormatse especifica como'Local', la velocidad devuelta es con respecto al marco de navegación local cuyo origen está fijo enReferenceLocation.Cuando la propiedad
PositionInputFormatse especifica como'Geodetic', la velocidad devuelta es con respecto al marco de navegación (NED o ENU) cuyo origen corresponde a la salidaposition.
Tipos de datos: single | double
Magnitud de la velocidad horizontal del receptor GPS en el sistema de coordenadas de navegación local en metros por segundo, devuelta como un vector columna real finito N-por-1.
N es el número de muestras en el cuadro actual.
Tipos de datos: single | double
Dirección de la velocidad horizontal del receptor GPS en el sistema de coordenadas de navegación local en grados, devuelta como un vector columna real finito N por 1 de valores entre 0 y 360. El Norte corresponde a 360 grados y el Este corresponde a 90 grados.
N es el número de muestras en el cuadro actual.
Tipos de datos: single | double
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)
Ejemplos
Crea un gpsSensor System object™ para modelar los datos del receptor GPS. Suponga una frecuencia de muestreo típica de un Hz y un tiempo de simulación de 1000 segundos. Definir la ubicación de referencia en términos de latitud, longitud y altitud (LLA) de Natick, MA (EE.UU.). Defina el sensor como estacionario especificando la verdadera posición y velocidad con ceros.
fs = 1; duration = 1000; numSamples = duration*fs; refLoc = [42.2825 -71.343 53.0352]; truePosition = zeros(numSamples,3); trueVelocity = zeros(numSamples,3); gps = gpsSensor('SampleRate',fs,'ReferenceLocation',refLoc);
Llame a gps con los truePosition y trueVelocity especificados para simular la recepción de datos GPS para una plataforma estacionaria.
position = gps(truePosition,trueVelocity);
Trace la posición real y las lecturas del sensor GPS para la posición.
t = (0:(numSamples-1))/fs; subplot(3, 1, 1) plot(t, position(:,1), ... t, ones(numSamples)*refLoc(1)) title('GPS Sensor Readings') ylabel('Latitude (degrees)') subplot(3, 1, 2) plot(t, position(:,2), ... t, ones(numSamples)*refLoc(2)) ylabel('Longitude (degrees)') subplot(3, 1, 3) plot(t, position(:,3), ... t, ones(numSamples)*refLoc(3)) ylabel('Altitude (m)') xlabel('Time (s)')

Las lecturas de posición tienen ruido controlado por HorizontalPositionAccuracy, VerticalPositionAccuracy, VelocityAccuracy y DecayFactor. La propiedad DecayFactor controla la deriva en el modelo de ruido. De forma predeterminada, DecayFactor se establece en 0.999, lo que se aproxima a un proceso de caminata aleatoria. Para observar el efecto de la propiedad DecayFactor:
Restablecer el objeto
gps.Establezca
DecayFactoren0.5.Llamar a
gpscon variables que especifiquen una posición estacionaria.Represente los resultados.
Las lecturas de posición GPS ahora oscilan alrededor de la posición real.
reset(gps) gps.DecayFactor = 0.5; position = gps(truePosition,trueVelocity); subplot(3, 1, 1) plot(t, position(:,1), ... t, ones(numSamples)*refLoc(1)) title('GPS Sensor Readings - Decay Factor = 0.5') ylabel('Latitude (degrees)') subplot(3, 1, 2) plot(t, position(:,2), ... t, ones(numSamples)*refLoc(2)) ylabel('Longitude (degrees)') subplot(3, 1, 3) plot(t, position(:,3), ... t, ones(numSamples)*refLoc(3)) ylabel('Altitude (m)') xlabel('Time (s)')

Los receptores GPS logran una mayor precisión del rumbo a medida que aumenta la velocidad sobre el terreno. En este ejemplo, creará un objeto de simulación de receptor GPS y simulará los datos recibidos desde una plataforma que acelera desde una posición estacionaria.
Crea un gpsSensor System object ™ predeterminado para modelar los datos devueltos por un receptor GPS.
GPS = gpsSensor
GPS =
gpsSensor with properties:
SampleRate: 1 Hz
PositionInputFormat: 'Local'
ReferenceLocation: [0 0 0] [deg deg m]
HorizontalPositionAccuracy: 1.6 m
VerticalPositionAccuracy: 3 m
VelocityAccuracy: 0.1 m/s
RandomStream: 'Global stream'
DecayFactor: 0.999
Cree matrices para describir la posición y la velocidad de una plataforma en el sistema de coordenadas NED. La plataforma comienza desde una posición estacionaria y acelera a 60 m/s al noreste durante 60 segundos, luego tiene una aceleración vertical a 2 m/s durante 2 segundos, seguida de una velocidad de ascenso de 2 m/s durante otros 8 segundos. Suponga una velocidad constante, tal que la velocidad sea la derivada simple de la posición.
duration = 70; numSamples = duration*GPS.SampleRate; course = 45*ones(duration,1); groundspeed = [(1:60)';60*ones(10,1)]; Nvelocity = groundspeed.*sind(course); Evelocity = groundspeed.*cosd(course); Dvelocity = [zeros(60,1);-1;-2*ones(9,1)]; NEDvelocity = [Nvelocity,Evelocity,Dvelocity]; Ndistance = cumsum(Nvelocity); Edistance = cumsum(Evelocity); Ddistance = cumsum(Dvelocity); NEDposition = [Ndistance,Edistance,Ddistance];
Modele los datos de medición del GPS llamando al objeto GPS con sus matrices de velocidad y posición.
[~,~,groundspeedMeasurement,courseMeasurement] = GPS(NEDposition,NEDvelocity);
Trace la velocidad terrestre y la diferencia entre el rumbo real y el rumbo devuelto por el simulador GPS.
A medida que aumenta la velocidad sobre el terreno, aumenta la precisión del rumbo. Tenga en cuenta que el aumento de velocidad durante los últimos diez segundos no tiene ningún efecto, porque la velocidad adicional no está en el plano del suelo.
t = (0:numSamples-1)/GPS.SampleRate; subplot(2,1,1) plot(t,groundspeed); ylabel('Speed (m/s)') title('Relationship Between Groundspeed and Course Accuracy') subplot(2,1,2) courseAccuracy = courseMeasurement - course; plot(t,courseAccuracy) xlabel('Time (s)'); ylabel('Course Accuracy (degrees)')

Simule los datos de GPS recibidos durante una trayectoria desde la ciudad de Natick, MA, hasta Boston, MA.
Defina la latitud y longitud en grados decimales para la ciudad de Natick, MA, EE. UU., y Boston, MA, EE. UU. Para simplificar, establezca la altitud de ambas ubicaciones en cero.
NatickLLA = [42.27752809999999, -71.34680909999997, 0]; BostonLLA = [42.3600825, -71.05888010000001, 0];
Defina un movimiento que pueda llevar una plataforma de Natick a Boston en 20 minutos. Establezca el origen del sistema de coordenadas NED local como Natick. Crea un objeto waypointTrajectory para generar la trayectoria de 10 muestras a la vez.
fs = 1; duration = 60*20; bearing = 68; % degrees distance = 25.39e3; % meters distanceEast = distance*sind(bearing); distanceNorth = distance*cosd(bearing); NatickNED = [0,0,0]; BostonNED = [distanceNorth,distanceEast,0]; trajectory = waypointTrajectory( ... 'Waypoints', [NatickNED;BostonNED], ... 'TimeOfArrival',[0;duration], ... 'SamplesPerFrame',10, ... 'SampleRate',fs);
Cree un objeto gpsSensor para modelar la recepción de datos GPS para la plataforma. Establezca HorizontalPositionalAccuracy en 25 y DecayFactor en 0.25 para enfatizar el ruido. Establezca ReferenceLocation en las coordenadas de Natick en LLA.
GPS = gpsSensor( ... 'HorizontalPositionAccuracy',25, ... 'DecayFactor',0.25, ... 'SampleRate',fs, ... 'ReferenceLocation',NatickLLA);
Abra una figura y trace la posición de Natick y Boston en LLA. Ignore la altitud por simplicidad.
En un bucle, llame al objeto gpsSensor con la trayectoria de ground-truth para simular los datos GPS recibidos. Trazar la trayectoria ground-truth y el modelo de los datos GPS recibidos.
figure(1) plot(NatickLLA(1),NatickLLA(2),'ko', ... BostonLLA(1),BostonLLA(2),'kx') xlabel('Latitude (degrees)') ylabel('Longitude (degrees)') title('GPS Sensor Data for Natick to Boston Trajectory') hold on while ~isDone(trajectory) [truePositionNED,~,trueVelocityNED] = trajectory(); reportedPositionLLA = GPS(truePositionNED,trueVelocityNED); figure(1) plot(reportedPositionLLA(:,1),reportedPositionLLA(:,2),'r.') end

Como práctica recomendada, libere los System objects cuando esté completo.
release(GPS) release(trajectory)
Capacidades ampliadas
Indicaciones y limitaciones de uso:
Consulte System Objects in MATLAB Code Generation (MATLAB Coder).
Historial de versiones
Introducido en R2019b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)