gpsSensor

Модель симуляции приемника

Описание

The 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, заданной Seed свойство.

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

Начальный seed алгоритма генератора случайных чисел 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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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. The DecayFactor свойство управляет дрейфом в модели шума. По умолчанию DecayFactor установлено в 0.999, который приближается к процессу случайной ходьбы. Чтобы наблюдать эффект DecayFactor свойство:

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

  2. Задайте DecayFactor на 0.5.

  3. Функции gps с переменными, определяющими стационарное положение.

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

The 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 = 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 объект с матрицами скорости и положения.

[~,~,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 как Natick. Создайте 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 к координатам Натика в LLA.

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)

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

.
Введенный в R2018b