read

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

Описание

пример

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

Примеры

свернуть все

Загрузите записанные заранее данные из радарного сценария. Данные сохранены как struct с именем переменной 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