Модель симуляции приемника
The 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, заданной Seed
свойство.
Типы данных: char
| string
Seed
- Начальный seed67
(по умолчанию) | неотрицательным целочисленным скаляромНачальный seed алгоритма генератора случайных чисел mt19937ar, заданное как неотрицательный целочисленный скаляр.
Чтобы включить это свойство, задайте RandomStream
на 'mt19937ar with seed'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
[
вычисляет показания приемника глобальной навигационной спутниковой системы из входных входов положения и скорости.position
,velocity
,groundspeed
,course
] = GPS(truePosition
,trueVelocity
)
truePosition
- Положение приемника в навигационной системе координат Положение GPS-приемника в системе координат навигации, заданное как действительная конечная матрица N -by-3. N - количество выборок в текущей системе координат.
Когда PositionInputFormat
свойство задается как 'Local'
, задайте turePosition
как Декартовы координаты относительно локальной навигационной системы координат, источник которой зафиксирован в ReferenceLocation
.
Когда PositionInputFormat
свойство задается как 'Geodetic'
, задайте turePosition
как геодезические координаты в [latitude,longitude,altitude]
. Latitude
и longitude
в метрах. altitude
- высота над WGS84 эллипсоидной моделью в метрах.
Типы данных: single
| double
trueVelocity
- Скорость приемника в навигационной системе координат (м/с)Скорость 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
- Скорость в локальной навигационной системе координат (м/с)Скорость приемника в локальной навигационной системе координат в метрах в секунду, возвращаемая как действительный конечный массив N -by-3. N - количество выборок в текущей системе координат.
Когда PositionInputFormat
свойство задается как 'Local'
, возвращенная скорость относительно локальной навигационной системы координат, источник которой зафиксирован на ReferenceLocation
.
Когда PositionInputFormat
свойство задается как 'Geodetic'
, возвращенная скорость относительно навигационной системы координат (NED или ENU), источник соответствует position
выход.
Типы данных: single
| double
groundspeed
- Величина горизонтальной скорости в локальной навигационной системе координат (м/с)Величина горизонтальной скорости приемника в локальной навигационной системе координат в метрах в секунду, возвращаемая как действительный конечный вектор N -на 1 столбец.
N - количество выборок в текущей системе координат.
Типы данных: single
| double
course
- Направление горизонтальной скорости в локальной навигационной системе координат (°)Направление горизонтальной скорости приемника в локальной навигационной системе координат в степенях, возвращаемое как действительный конечный столбец N -на 1 значений между 0 и 360. Север соответствует 360 степеням, а Восток соответствует 90 степеням.
N - количество выборок в текущей системе координат.
Типы данных: single
| double
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
Создайте 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)')
Показания положения имеют шум, управляемый HorizontalPositionAccuracy
, VerticalPositionAccuracy
, VelocityAccuracy
, и DecayFactor
. The DecayFactor
свойство управляет дрейфом в модели шума. По умолчанию DecayFactor
установлено в 0.999
, который приближается к процессу случайной ходьбы. Чтобы наблюдать эффект DecayFactor
свойство:
Сбросьте gps
объект.
Задайте DecayFactor
на 0.5
.
Функции gps
с переменными, определяющими стационарное положение.
Постройте график результатов.
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)')
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)')
Моделируйте данные 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
В качестве наилучшей практики отпустите системные объекты по завершении.
release(GPS) release(trajectory)
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.