exponenta event banner

Обзор моделирования ГНСС

Моделирование Глобальной навигационной спутниковой системы (ГНСС) позволяет получать оценки положения приемника. Эти оценки положения приемника получены из моделей GPS и GNSS-датчиков в виде gpsSensor и gnssSensor объекты. Контролировать статус оценки позиции в gnssSensor использование разбавления прецизионных выходных данных и сравнение количества имеющихся спутников.

Параметры моделирования

Укажите параметры, которые будут использоваться при моделировании ГНСС:

  • Частота дискретизации приемника ГНСС

  • Локальная навигационная опорная система

  • Местоположение на Земле в координатах широты, долготы и высоты (LLA)

  • Количество образцов для моделирования

Fs = 1;
refFrame = "NED";
lla0 = [42.2825 -71.343 53.0352];
N = 100;

Создайте траекторию для стационарного датчика.

pos = zeros(N, 3);
vel = zeros(N, 3);
time = (0:N-1) ./ Fs;

Создание модели датчика

создание объектов моделирования ГНСС; gpsSensor и gnssSensor используя одни и те же исходные параметры для каждого.

gps = gpsSensor("SampleRate", Fs, "ReferenceLocation", lla0, ...
    "ReferenceFrame", refFrame);

gnss = gnssSensor("SampleRate", Fs, "ReferenceLocation", lla0, ...
    "ReferenceFrame", refFrame);

Моделирование с использованием gpsSensor

Генерирование выходных сигналов стационарного приемника с помощью GPS-датчика. Визуализируйте положение в координатах LLA и скорость в каждом направлении.

% Generate outputs.
[llaGPS, velGPS] = gps(pos, vel);

% Visualize positon.
figure
subplot(3, 1, 1)
plot(time, llaGPS(:,1))
title('Latitude')
ylabel('degrees')
xlabel('s')
subplot(3, 1, 2)
plot(time, llaGPS(:,2))
title('Longitude')
ylabel('degrees')
xlabel('s')
subplot(3, 1, 3)
plot(time, llaGPS(:,3))
title('Altitude')
ylabel('m')
xlabel('s')

Figure contains 3 axes. Axes 1 with title Latitude contains an object of type line. Axes 2 with title Longitude contains an object of type line. Axes 3 with title Altitude contains an object of type line.

% Visualize velocity.
figure
plot(time, velGPS)
title('Velocity')
legend('X', 'Y', 'Z')
ylabel('m/s')
xlabel('s')

Figure contains an axes. The axes with title Velocity contains 3 objects of type line. These objects represent X, Y, Z.

Моделирование с использованием gnssSensor

Генерирование выходных сигналов стационарного приемника с помощью датчика GNSS. Визуализируйте положение и скорость и обратите внимание на различия в моделировании.

% Generate outputs.
[llaGNSS, velGNSS] = gnss(pos, vel);

% Visualize positon.
figure
subplot(3, 1, 1)
plot(time, llaGNSS(:,1))
title('Latitude')
ylabel('degrees')
xlabel('s')
subplot(3, 1, 2)
plot(time, llaGNSS(:,2))
title('Longitude')
ylabel('degrees')
xlabel('s')
subplot(3, 1, 3)
plot(time, llaGNSS(:,3))
title('Altitude')
ylabel('m')
xlabel('s')

Figure contains 3 axes. Axes 1 with title Latitude contains an object of type line. Axes 2 with title Longitude contains an object of type line. Axes 3 with title Altitude contains an object of type line.

% Visualize velocity.
figure
plot(time, velGNSS)
title('Velocity')
legend('X', 'Y', 'Z')
ylabel('m/s')
xlabel('s')

Figure contains an axes. The axes with title Velocity contains 3 objects of type line. These objects represent X, Y, Z.

Разбавление точности

gnssSensor объект имеет более высокое моделирование точности по сравнению с gpsSensor. Например, gnssSensor объект использует смоделированные позиции спутника для оценки позиции приемника. Это означает, что данные о горизонтальном разбавлении точности (HDOP) и вертикальном разбавлении точности (VDOP) могут сообщаться вместе с оценкой положения. Эти значения указывают, насколько точна оценка положения на основе геометрии спутника. Меньшие значения указывают на более точную оценку.

% Set the RNG seed to reproduce results. 
rng('default')

% Specify the start time of the simulation.
initTime = datetime(2020, 4, 20, 18, 10, 0, "TimeZone", "America/New_York");

% Create the GNSS receiver model.
gnss = gnssSensor("SampleRate", Fs, "ReferenceLocation", lla0, ...
    "ReferenceFrame", refFrame, "InitialTime", initTime);

% Obtain the receiver status. 
[~, ~, status] = gnss(pos, vel);
disp(status(1))
      SatelliteAzimuth: [7x1 double]
    SatelliteElevation: [7x1 double]
                  HDOP: 1.1290
                  VDOP: 1.9035

Просмотр HDOP во время моделирования. Наблюдается снижение HDOP. Это означает, что геометрия спутника изменилась.

hdops = vertcat(status.HDOP);

figure
plot(time, vertcat(status.HDOP))
title('HDOP')
ylabel('m')
xlabel('s')

Figure contains an axes. The axes with title HDOP contains an object of type line.

Убедитесь, что геометрия спутника изменилась. Найдите индекс уменьшения HDOP и проверьте, соответствует ли это изменению количества спутников в поле зрения. numSats переменная увеличивается с 7 до 8.

% Find expected sample index for a change in the
% number of satellites in view.
[~, satChangeIdx] = max(abs(diff(hdops)));

% Visualize the satellite geometry before the
% change in HDOP.
satAz = status(satChangeIdx).SatelliteAzimuth;
satEl = status(satChangeIdx).SatelliteElevation;
numSats = numel(satAz);
skyplot(satAz, satEl);
title(sprintf('Satellites in View: %d\nHDOP: %.4f', ...
    numSats, hdops(satChangeIdx)))

Figure contains an object of type skyplot.

% Visualize the satellite geometry after the
% change in HDOP.
satAz = status(satChangeIdx+1).SatelliteAzimuth;
satEl = status(satChangeIdx+1).SatelliteElevation;
numSats = numel(satAz);
skyplot(satAz, satEl);
title(sprintf('Satellites in View: %d\nHDOP: %.4f', ...
    numSats, hdops(satChangeIdx+1)))

Figure contains an object of type skyplot.

Значения HDOP и VDOP могут использоваться в качестве диагональных элементов в ковариационных матрицах измерений при объединении оценок положения приемника GNSS с другими измерениями датчиков с использованием фильтра Калмана.

% Convert HDOP and VDOP to a measurement covariance matrix.
hdop = status(1).HDOP;
vdop = status(1).VDOP;
measCov = diag([hdop.^2/2, hdop.^2/2, vdop.^2]);
disp(measCov)
    0.6373         0         0
         0    0.6373         0
         0         0    3.6233