exponenta event banner

gpsSensor

Имитационная модель приемника GPS

Описание

gpsSensor Система object™ моделирует данные, выводимые из приемника Глобальной системы позиционирования (GPS).

Для моделирования приемника GPS:

  1. Создать gpsSensor и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

GPS = gpsSensor возвращает gpsSensor Объект системы, который вычисляет показания приемника системы глобального позиционирования на основе локального входного сигнала положения и скорости. Опорное положение по умолчанию в геодезических координатах:

  • широта: 0o N

  • долгота: 0o E

  • высота над уровнем моря: 0 м

GPS = gpsSensor('ReferenceFrame',RF) возвращает gpsSensor Системный объект, который вычисляет показания приемника глобальной системы позиционирования относительно опорного кадра RF. Определить RF как 'NED' (Север-Восток-вниз) или 'ENU'(Восток-Север-Вверх). Значение по умолчанию: 'NED'.

пример

GPS = gpsSensor(___,Name,Value) задает каждое свойство Name к указанному Value. Неопределенные свойства имеют значения по умолчанию.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Частота обновления приемника в Гц, заданная как положительный действительный скаляр.

Типы данных: single | double

Опорное местоположение, определяемое как 3-элементный вектор строки в геодезических координатах (широта, долгота и высота). Высота - высота над эталонной эллипсоидной моделью, WGS84. Опорное местоположение находится в [градусах метра]. Формат градуса - десятичные градусы (DD).

Типы данных: single | double

Формат ввода координат положения, указанный как 'Local' или 'Geodetic'.

  • Если свойство установлено как 'Local', то необходимо указать truePosition ввод в виде декартовых координат относительно локального навигационного кадра, начало которого фиксировано и определено ReferenceLcation собственность. Кроме того, при указании trueVelocity необходимо указать его относительно этого локального навигационного кадра.

  • Если свойство установлено как 'Geodetic', то необходимо указать truePosition ввод в качестве геодезических координат в широте, долготе и высоте. Кроме того, при указании trueVelocity , необходимо указать его относительно навигационного кадра (NED или ENU), происхождение которого соответствует truePosition вход. При установке свойства как 'Geodetic', gpsSensor объект игнорирует ReferenceLocation собственность.

Типы данных: character vector

Точность горизонтального положения в метрах, заданная как неотрицательный действительный скаляр. Точность горизонтального положения определяет стандартное отклонение шума при измерении горизонтального положения.

Настраиваемый: Да

Типы данных: single | double

Точность вертикального положения в метрах, заданная как неотрицательный действительный скаляр. Точность вертикального положения определяет стандартное отклонение шума при измерении вертикального положения.

Настраиваемый: Да

Типы данных: single | double

Точность скорости в метрах в секунду, заданная как неотрицательный действительный скаляр. Точность скорости определяет стандартное отклонение шума при измерении скорости.

Настраиваемый: Да

Типы данных: single | double

Коэффициент затухания шума глобального положения, заданный как скаляр в диапазоне [0,1].

Коэффициент затухания 0 моделирует глобальный позиционный шум как процесс белого шума. Коэффициент затухания 1 моделирует глобальный шум положения как процесс случайной ходьбы.

Настраиваемый: Да

Типы данных: single | double

Источник случайных чисел, указанный как символьный вектор или строка:

  • 'Global stream' - Случайные числа генерируются с использованием текущего глобального потока случайных чисел.

  • 'mt19937ar with seed' - Случайные числа генерируются с использованием алгоритма mt19937ar с начальным числом, указанным Seed собственность.

Типы данных: char | string

Начальное начальное число алгоритма генератора случайных чисел mt19937ar, определяемое как неотрицательный целочисленный скаляр.

Зависимости

Чтобы включить это свойство, установите RandomStream кому 'mt19937ar with seed'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Использование

Описание

пример

[position,velocity,groundspeed,course] = GPS(truePosition,trueVelocity) вычисляет показания приемника глобальной навигационной спутниковой системы по входам положения и скорости.

Входные аргументы

развернуть все

Положение приемника GPS в навигационной системе координат, определяемое как действительная конечная матрица N-by-3. N - количество выборок в текущем кадре.

  • Когда PositionInputFormat свойство указано как 'Local', указать turePosition в виде декартовых координат относительно локального навигационного кадра, начало которого зафиксировано в ReferenceLocation.

  • Когда PositionInputFormat свойство указано как 'Geodetic', указать turePosition в качестве геодезических координат в [latitude,longitude,altitude]. Latitude и longitude в метрах. altitude - высота над WGS84 эллипсоидной моделью в метрах.

Типы данных: single | double

Скорость приемника GPS в навигационной системе координат в метрах в секунду, заданная как действительная конечная матрица N-by-3. N - количество выборок в текущем кадре.

  • Когда PositionInputFormat свойство указано как 'Local', указать trueVelocity относительно локального навигационного кадра (NED или ENU), происхождение которого зафиксировано на ReferenceLocation.

  • Когда PositionInputFormat свойство указано как 'Geodetic', указать trueVelocity относительно навигационного кадра (NED или ENU), происхождение которого соответствует truePosition вход.

Типы данных: single | double

Выходные аргументы

развернуть все

Положение GPS-приемника в геодезической системе координат широты, долготы и высоты (LLA), возвращаемое в виде реального конечного массива N-by-3. Широта и долгота находятся в градусах, при этом Север и Восток являются положительными. Высота над уровнем моря в метрах.

N - количество выборок в текущем кадре.

Типы данных: single | double

Скорость приемника GPS в локальной навигационной системе координат в метрах в секунду, возвращаемая в виде реального конечного массива N-by-3. N - количество выборок в текущем кадре.

  • Когда PositionInputFormat свойство указано как 'Local', возвращенная скорость относительно локального навигационного кадра, начало которого зафиксировано на ReferenceLocation.

  • Когда PositionInputFormat свойство указано как 'Geodetic', возвращенная скорость относительно навигационного кадра (NED или ENU), происхождение которого соответствует position выход.

Типы данных: single | double

Величина горизонтальной скорости приемника GPS в локальной навигационной системе координат в метрах в секунду, возвращаемая в виде вектора реального конечного N-by-1 столбца.

N - количество выборок в текущем кадре.

Типы данных: single | double

Направление горизонтальной скорости приемника GPS в локальной навигационной системе координат в градусах, возвращаемое в виде действительного конечного N-by-1 столбца значений между 0 и 360. Север соответствует 360 градусам, а Восток - 90 градусам.

N - количество выборок в текущем кадре.

Типы данных: single | double

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Создать gpsSensor Система object™ для моделирования данных приемника GPS. Предположим типичную частоту дискретизации в одну Гц и 1000-секундное время моделирования. Определите местоположение привязки с точки зрения широты, долготы и высоты над уровнем моря (LLA) в Натике, штат Массачусетс (США). Определите датчик как стационарный, указав истинное положение и скорость с нулями.

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);

Звонить gps с указанным truePosition и trueVelocity имитировать прием данных GPS для стационарной платформы.

position = gps(truePosition,trueVelocity);

Постройте график истинного положения и показаний GPS-датчика для положения.

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)')

Figure contains 3 axes. Axes 1 with title GPS Sensor Readings contains 1001 objects of type line. Axes 2 contains 1001 objects of type line. Axes 3 contains 1001 objects of type line.

Показания положения контролируются шумом HorizontalPositionAccuracy, VerticalPositionAccuracy, VelocityAccuracy, и DecayFactor. DecayFactor свойство управляет дрейфом в модели шума. По умолчанию DecayFactor имеет значение 0.999, который приближается к случайному процессу ходьбы. Для наблюдения за эффектом DecayFactor свойство:

  1. Сбросить gps объект.

  2. Набор DecayFactor кому 0.5.

  3. Звонить gps с переменными, задающими стационарное положение.

  4. Постройте график результатов.

GPS показания положения теперь колеблются вокруг истинного положения.

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)')

Figure contains 3 axes. Axes 1 with title GPS Sensor Readings - Decay Factor = 0.5 contains 1001 objects of type line. Axes 2 contains 1001 objects of type line. Axes 3 contains 1001 objects of type line.

Приемники GPS достигают большей точности курса по мере увеличения скорости движения грунта. В этом примере создается объект моделирования приемника GPS и моделируются данные, полученные с платформы, которая ускоряется из стационарного положения.

Создание значения по умолчанию gpsSensor Система object™ к модельным данным, возвращаемым приемником 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                         

Создайте матрицы для описания положения и скорости платформы в системе координат NED. Платформа начинается из стационарного положения и ускоряется до 60 м/с Северо-Восток в течение 60 секунд, затем имеет вертикальное ускорение до 2 м/с в течение 2 секунд с последующей скоростью набора высоты 2 м/с в течение ещё 8 секунд. Предположим, что скорость является постоянной, так что скорость является простой производной положения.

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];

Моделирование данных измерений GPS путем вызова GPS объект с матрицами скорости и положения.

[~,~,groundspeedMeasurement,courseMeasurement] = GPS(NEDposition,NEDvelocity);

Постройте график скорости движения грунта и разницы между истинным курсом и курсом, возвращаемым имитатором GPS.

По мере увеличения скорости движения грунта повышается точность курса. Следует отметить, что увеличение скорости в течение последних десяти секунд не оказывает никакого влияния, поскольку дополнительная скорость не находится в плоскости земли.

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)')

Figure contains 2 axes. Axes 1 with title Relationship Between Groundspeed and Course Accuracy contains an object of type line. Axes 2 contains an object of type line.

Имитация данных GPS, полученных во время траектории от города Натик, штат Массачусетс, до Бостона, штат Массачусетс.

Определите десятичную широту и долготу градуса для города Натик, штат Массачусетс, и Бостона, штат Массачусетс. Для простоты установите нулевую высоту для обоих местоположений.

NatickLLA = [42.27752809999999, -71.34680909999997, 0];
BostonLLA = [42.3600825, -71.05888010000001, 0];

Определите движение, которое может взять платформу из Натика в Бостон за 20 минут. Задайте начало локальной системы координат NED как Natic. Создать waypointTrajectory объект для одновременного вывода выборок траектории 10.

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);

Создать gpsSensor объект для моделирования приема данных GPS для платформы. Установите HorizontalPositionalAccuracy кому 25 и DecayFactor кому 0.25 чтобы подчеркнуть шум. Установите ReferenceLocation к координатам Натика в ЛЛА.

GPS = gpsSensor( ...
    'HorizontalPositionAccuracy',25, ...
    'DecayFactor',0.25, ...
    'SampleRate',fs, ...
    'ReferenceLocation',NatickLLA);

Откройте фигуру и постройте график положения Натика и Бостона в LLA. Игнорировать высоту для простоты.

В цикле вызовите gpsSensor объект с траекторией «земля-истина» для моделирования принятых данных GPS. Постройте график траектории земля-истина и модель полученных данных GPS.

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

Figure contains an axes. The axes with title GPS Sensor Data for Natick to Boston Trajectory contains 122 objects of type line.

Рекомендуется по завершении деблокировать системные объекты.

release(GPS)
release(trajectory)

Расширенные возможности

.

См. также

Объекты

Представлен в R2019b