exponenta event banner

читать

Считывание следующего шага из записи сценария РЛС

Описание

пример

[simTime,poses,detections,sensorConfigs,sensorPlatformIDs,emissions,emitterConfigs,emitterPlatformIDs] = read(recording) возвращает один записанный набор данных во время моделирования, simTime, из записи сценария радара.

Примеры

свернуть все

Загрузка предварительно записанных данных из сценария радара. Данные сохраняются как структура с именем переменной recordedData. Создать radarScenarioRecording с использованием записанных данных.

load recordedRadarScenarioData.mat
recording = radarScenarioRecording(recordedData);

Построение графика кинотеатра для отображения записанных данных с помощью нескольких плоттеров.

tp = theaterPlot('AxesUnits',["km" "km" "km"], ...
    'XLimits',[-50 50]*1e3,'YLimits',[-50 50]*1e3,'ZLimits',[-20 20]*1e3);
to = platformPlotter(tp,'DisplayName','Tower','Marker','d');
pp = platformPlotter(tp,'DisplayName','Targets');
dp = detectionPlotter(tp,'DisplayName','Detections','MarkerFaceColor','black');
cp = coveragePlotter(tp,'DisplayName','Radar Beam');

coverage = struct('Index',1,'LookAngle',[0;-7],'FieldOfView',[1;10], ...
    'ScanLimits',[0 365;-12 -2],'Range',100e3,'Position',[0;0;-15], ...
    'Orientation',eye(3));

Выполните записанный сценарий и анимируйте результаты.

scanBuffer = {};
while ~isDone(recording)
    % Step the reader to read the next frame of data
    [simTime,poses,covcon,dets,senconfig] = read(recording);
    scanBuffer = [scanBuffer;dets]; %#ok<AGROW>
    plotPlatform(to,poses(1).Position);
    plotPlatform(pp,reshape([poses(2:4).Position]',3,[])');
    plotCoverage(cp,covcon);
    if ~isempty(dets)
        plotDetection(dp,cell2mat(cellfun(@(c) c.Measurement(:)', scanBuffer, 'UniformOutput', false)));
    end
    
    % Clear the buffer when a 360 degree scan is complete
    if senconfig.IsScanDone
        scanBuffer = {};
        dp.clearData;
    end
end

Входные аргументы

свернуть все

Запись сценария РЛС, указанная как radarScenarioRecording объект.

Выходные аргументы

свернуть все

Время моделирования, возвращаемое как неотрицательный скаляр.

Позы платформ, возвращаемые как массив структур. Каждая структура имеет эти поля.

ОбластьОписание
PlatformID

Уникальный идентификатор платформы, указанный как положительное целое число. Это обязательное поле без значения по умолчанию.

ClassID

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

Position

Положение цели в координатах сценария, определяемое как действительный вектор строки 1 на 3.

  • Если coordinateSystem аргумент указан как 'Cartesian', то Position - трёхэлементный вектор декартовых координат положения в метрах.

  • Если coordinateSystem аргумент указан как 'Geodetic', то Position - трёхэлементный вектор геодезических координат: широта в градусах, долгота в градусах, высота в метрах.

Velocity

Скорость платформы в координатах сценария, заданная как действительный вектор строки 1 на 3. Единицы измерения - метры в секунду. Значение по умолчанию: [0 0 0].

Acceleration

Ускорение платформы в координатах сценария, задаваемое как вектор ряда 1 на 3 в метрах в секунду в квадрате. Значение по умолчанию: [0 0 0].

Orientation

Ориентация платформы по отношению к навигационному кадру локального сценария, заданному как скалярный кватернион или матрица вращения 3 на 3. Ориентация определяет поворот рамки от локальной навигационной системы координат к текущей системе координат тела платформы. Единицы измерения безразмерны. Значение по умолчанию: quaternion(1,0,0,0).

AngularVelocity

Угловая скорость платформы в координатах сценария, заданная как действительный вектор 1 на 3. Величина вектора определяет угловую скорость. Направление определяет ось вращения по часовой стрелке. Единицы измерения - градусы в секунду. Значение по умолчанию: [0 0 0].

Обнаружения, возвращаемые в виде массива ячеек objectDetection объекты.

Конфигурации датчиков, возвращаемые в виде массива структур. Каждая структура имеет эти поля.

ОбластьОписание
SensorIndex

Уникальный индекс датчика, возвращаемый как положительное целое число.

IsValidTime

Допустимое время обнаружения, возвращено как true или false. IsValidTime является false при запросе обновлений обнаружения между интервалами обновления, заданными частотой обновления.

IsScanDone

IsScanDone является true после завершения сканирования датчика.

FieldOfView

Поле зрения датчика, возвращаемое как вектор 2 на 1 положительных вещественных значений, [azfov;elfov]. azfov и elfov представляют поле обзора по азимуту и отметке соответственно.

MeasurementParameters

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

Идентификаторы платформ датчиков, возвращаемые как массив неотрицательных целых чисел.

Выбросы, возвращаемые в виде массива ячеек объектов эмиссии, таких как radarEmission объекты.

Конфигурации излучателей, возвращаемые в виде массива структур. Каждая структура имеет эти поля.

ОбластьОписание
EmitterIndex

Уникальный индекс эмиттера, возвращаемый как положительное целое число.

IsValidTime

Допустимое время выброса, возвращенное как 0 или 1. IsValidTime является 0 когда обновления эмиттера запрашиваются в моменты времени между интервалами обновления, указанными UpdateInterval собственность.

IsScanDone

Завершил ли эмиттер сканирование, возвращается как true или false.

FieldOfView

Поле зрения излучателя, возвращаемое как двухэлементный вектор [азимут; отметка] в градусах.

MeasurementParameters

Параметры измерения эмиттера, возвращаемые в виде массива структур, содержащих преобразования координатного кадра, необходимые для преобразования положений и скоростей в кадре верхнего уровня в текущий кадр эмиттера.

Идентификаторы платформ излучателей, возвращаемые как массив неотрицательных целых чисел.

См. также

Представлен в R2021a