Имитационная модель приемника GPS
gpsSensor Система object™ моделирует данные, выводимые из приемника Глобальной системы позиционирования (GPS).
Для моделирования приемника GPS:
Создать gpsSensor и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
возвращает GPS = gpsSensorgpsSensor Объект системы, который вычисляет показания приемника системы глобального позиционирования на основе локального входного сигнала положения и скорости. Опорное положение по умолчанию в геодезических координатах:
широта: 0o N
долгота: 0o E
высота над уровнем моря: 0 м
возвращает GPS = gpsSensor('ReferenceFrame',RF)gpsSensor Системный объект, который вычисляет показания приемника глобальной системы позиционирования относительно опорного кадра RF. Определить RF как 'NED' (Север-Восток-вниз) или 'ENU'(Восток-Север-Вверх). Значение по умолчанию: 'NED'.
GPS = gpsSensor(___, задает каждое свойство Name,Value)Name к указанному Value. Неопределенные свойства имеют значения по умолчанию.
Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
SampleRate - Частота обновления приемника (Гц)1 (по умолчанию) | положительный вещественный скалярЧастота обновления приемника в Гц, заданная как положительный действительный скаляр.
Типы данных: single | double
ReferenceLocation - Происхождение локальной навигационной системы отсчета[0 0 0] (по умолчанию) | [градусы градуса метра]Опорное местоположение, определяемое как 3-элементный вектор строки в геодезических координатах (широта, долгота и высота). Высота - высота над эталонной эллипсоидной моделью, WGS84. Опорное местоположение находится в [градусах метра]. Формат градуса - десятичные градусы (DD).
Типы данных: single | double
PositionInputFormat - Формат ввода координат положения'Local' (по умолчанию) | 'Geodetic'Формат ввода координат положения, указанный как 'Local' или 'Geodetic'.
Если свойство установлено как 'Local', то необходимо указать truePosition ввод в виде декартовых координат относительно локального навигационного кадра, начало которого фиксировано и определено ReferenceLcation собственность. Кроме того, при указании trueVelocity необходимо указать его относительно этого локального навигационного кадра.
Если свойство установлено как 'Geodetic', то необходимо указать truePosition ввод в качестве геодезических координат в широте, долготе и высоте. Кроме того, при указании trueVelocity , необходимо указать его относительно навигационного кадра (NED или ENU), происхождение которого соответствует truePosition вход. При установке свойства как 'Geodetic', gpsSensor объект игнорирует ReferenceLocation собственность.
Типы данных: character vector
HorizontalPositionAccuracy - Точность горизонтального положения (м)1.6 (по умолчанию) | неотрицательный вещественный скалярТочность горизонтального положения в метрах, заданная как неотрицательный действительный скаляр. Точность горизонтального положения определяет стандартное отклонение шума при измерении горизонтального положения.
Настраиваемый: Да
Типы данных: single | double
VerticalPositionAccuracy - Точность вертикального положения (м)3 (по умолчанию) | неотрицательный вещественный скалярТочность вертикального положения в метрах, заданная как неотрицательный действительный скаляр. Точность вертикального положения определяет стандартное отклонение шума при измерении вертикального положения.
Настраиваемый: Да
Типы данных: single | double
VelocityAccuracy - Точность скорости (м/с)0.1 (по умолчанию) | неотрицательный вещественный скалярТочность скорости в метрах в секунду, заданная как неотрицательный действительный скаляр. Точность скорости определяет стандартное отклонение шума при измерении скорости.
Настраиваемый: Да
Типы данных: single | double
DecayFactor - Коэффициент затухания шума глобального положения0.999 (по умолчанию) | скаляр в диапазоне [0,1]Коэффициент затухания шума глобального положения, заданный как скаляр в диапазоне [0,1].
Коэффициент затухания 0 моделирует глобальный позиционный шум как процесс белого шума. Коэффициент затухания 1 моделирует глобальный шум положения как процесс случайной ходьбы.
Настраиваемый: Да
Типы данных: single | double
RandomStream - Источник случайных чисел'Global stream' (по умолчанию) | 'mt19937ar with seed'Источник случайных чисел, указанный как символьный вектор или строка:
'Global stream' - Случайные числа генерируются с использованием текущего глобального потока случайных чисел.
'mt19937ar with seed' - Случайные числа генерируются с использованием алгоритма mt19937ar с начальным числом, указанным Seed собственность.
Типы данных: char | string
Seed - Начальное семя67 (по умолчанию) | неотрицательный целочисленный скалярНачальное начальное число алгоритма генератора случайных чисел mt19937ar, определяемое как неотрицательный целочисленный скаляр.
Чтобы включить это свойство, установите RandomStream кому 'mt19937ar with seed'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
[ вычисляет показания приемника глобальной навигационной спутниковой системы по входам положения и скорости.position,velocity,groundspeed,course] = GPS(truePosition,trueVelocity)
truePosition - Положение приемника GPS в навигационной системе координат Положение приемника GPS в навигационной системе координат, определяемое как действительная конечная матрица N-by-3. N - количество выборок в текущем кадре.
Когда PositionInputFormat свойство указано как 'Local', указать turePosition в виде декартовых координат относительно локального навигационного кадра, начало которого зафиксировано в ReferenceLocation.
Когда PositionInputFormat свойство указано как 'Geodetic', указать turePosition в качестве геодезических координат в [latitude,longitude,altitude]. Latitude и longitude в метрах. altitude - высота над WGS84 эллипсоидной моделью в метрах.
Типы данных: single | double
trueVelocity - Скорость приемника GPS в навигационной системе координат (м/с)Скорость приемника GPS в навигационной системе координат в метрах в секунду, заданная как действительная конечная матрица N-by-3. N - количество выборок в текущем кадре.
Когда PositionInputFormat свойство указано как 'Local', указать trueVelocity относительно локального навигационного кадра (NED или ENU), происхождение которого зафиксировано на ReferenceLocation.
Когда PositionInputFormat свойство указано как 'Geodetic', указать trueVelocity относительно навигационного кадра (NED или ENU), происхождение которого соответствует truePosition вход.
Типы данных: single | double
position - Положение в системе координат LLAПоложение GPS-приемника в геодезической системе координат широты, долготы и высоты (LLA), возвращаемое в виде реального конечного массива N-by-3. Широта и долгота находятся в градусах, при этом Север и Восток являются положительными. Высота над уровнем моря в метрах.
N - количество выборок в текущем кадре.
Типы данных: single | double
velocity - Скорость в локальной навигационной системе координат (м/с)Скорость приемника GPS в локальной навигационной системе координат в метрах в секунду, возвращаемая в виде реального конечного массива N-by-3. N - количество выборок в текущем кадре.
Когда PositionInputFormat свойство указано как 'Local', возвращенная скорость относительно локального навигационного кадра, начало которого зафиксировано на ReferenceLocation.
Когда PositionInputFormat свойство указано как 'Geodetic', возвращенная скорость относительно навигационного кадра (NED или ENU), происхождение которого соответствует position выход.
Типы данных: single | double
groundspeed - Величина горизонтальной скорости в локальной навигационной системе координат (м/с)Величина горизонтальной скорости приемника GPS в локальной навигационной системе координат в метрах в секунду, возвращаемая в виде вектора реального конечного N-by-1 столбца.
N - количество выборок в текущем кадре.
Типы данных: single | double
course - Направление горизонтальной скорости в локальной навигационной системе координат (°)Направление горизонтальной скорости приемника GPS в локальной навигационной системе координат в градусах, возвращаемое в виде действительного конечного N-by-1 столбца значений между 0 и 360. Север соответствует 360 градусам, а Восток - 90 градусам.
N - количество выборок в текущем кадре.
Типы данных: single | double
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
Создать 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)')

Показания положения контролируются шумом HorizontalPositionAccuracy, VerticalPositionAccuracy, VelocityAccuracy, и DecayFactor. DecayFactor свойство управляет дрейфом в модели шума. По умолчанию DecayFactor имеет значение 0.999, который приближается к случайному процессу ходьбы. Для наблюдения за эффектом DecayFactor свойство:
Сбросить gps объект.
Набор DecayFactor кому 0.5.
Звонить gps с переменными, задающими стационарное положение.
Постройте график результатов.
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)')

Приемники 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)')

Имитация данных 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

Рекомендуется по завершении деблокировать системные объекты.
release(GPS) release(trajectory)
Примечания и ограничения по использованию:
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.