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, заданным 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

Скорость 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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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 objects. Axes object 1 with title GPS Sensor Readings contains 1001 objects of type line. Axes object 2 contains 1001 objects of type line. Axes object 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 objects. Axes object 1 with title GPS Sensor Readings - Decay Factor = 0.5 contains 1001 objects of type line. Axes object 2 contains 1001 objects of type line. Axes object 3 contains 1001 objects of type line.

GPS-приемники достигают большей точности курса как groundspeed увеличения. В этом примере вы создаете объект симуляции 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);

Постройте groundspeed и различие между истинным курсом и курсом, возвращенным средством моделирования GPS.

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

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 objects. Axes object 1 with title Relationship Between Groundspeed and Course Accuracy contains an object of type line. Axes object 2 contains an object of type line.

Симулируйте данные о GPS, полученные во время траектории из города Натика, MA, в Бостон, MA.

Задайте широту десятичного градуса и долготу для города Натика, MA USA, и Бостона, MA USA. Для простоты, набор высота для обоих мест, чтобы обнулить.

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

Задайте движение, которое может взять платформу от Натика до Бостона через 20 минут. Установите источник локальной системы координат NED как Натик. Создайте 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 object. The axes object with title GPS Sensor Data for Natick to Boston Trajectory contains 122 objects of type line.

Как лучшая практика, выпустите Системные объекты, когда завершенный.

release(GPS)
release(trajectory)

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

Смотрите также

Объекты

Введенный в R2019b