record

Запуск сценария отслеживания и запись информации о платформе, датчике и излучателе

Описание

пример

rec = record(sc) возвращает запись, rec, эволюции симуляции сценария отслеживания, sc. Функция начинается с начала симуляции и сохраняет запись до конца симуляции. Симуляция сценария заканчивается, когда или StopTime сценария достигается или любая платформа в сценарии закончила свою траекторию, заданную Trajectory свойство.

rec = record(sc,format) также задает формат, format, ориентации возвращаемой платформы.

пример

rec = record(___,Name,Value) задает дополнительные величины записи, используя пары "имя-значение". Заключайте каждую Name в кавычках.

Примечание

record функция записывает только обнаружения, сгенерированные датчиками, содержащимися в сценарии, и не записывает треки, сгенерированные из fusionRadarSensor объект, содержащийся в сценарии. fusionRadarSensor генерирует обнаружения, когда вы устанавливаете его TargetReportFormat свойство к 'Detetions' или 'Clustered Detections' и генерирует дорожки, когда вы устанавливаете ее TargetReportFormat свойство к 'Tracks'.

Входные параметры

расширить все

Сценарий отслеживания, заданный как trackingScenario объект.

Формат ориентации положения, заданный как 'quaternion' или 'rotmat'. Если задано как 'quaternion', а Orientation полем структуры положения платформы является кватернион. Если задано как 'rotmat', а Orientation поле является матрицей поворота.

Пример: 'rotmat'

Типы данных: char

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Включите запись информации о выбросах, заданную как true или false. Если задано как true, а rec выход содержит Emissions, EmitterConfigurations, EmitterPlatformIDs, и CoverageConfig поля.

Включите запись информации о датчике, заданную как true или false. Если задано как true, а rec выход содержит Detections, SensorConfiguration, SensorPlatformIDs, и CoverageConfig поля.

Начальный случайный seed для записи, заданное как положительное целое число. Если задано положительное целое число, функция присваивает это число генератору случайных чисел «Twister» перед записью и сбрасывает генератор случайных чисел в конце записи.

Включите окклюзию в передаче сигнала, заданную как true или false. Если задано как trueфункция учитывает эффект окклюзии при распространении радиолокационного излучения.

Формат записи, заданный как 'Struct' или 'Recording'. Если задано как 'Struct', а rec выход является массивом структур. Если задано как 'Recording', а rec выход a trackingScenarioRecording объект.

Система координат для отчета о записанных положениях, заданная как:

  • 'Cartesian' - Сообщить о зарегистрированных положениях с использованием Декартовых координат в координатной системе координат Earth-Centered-Earth-Fixed.

  • 'Geodetic' - Сообщить о зарегистрированных положениях с использованием геодезических координат (широта, долгота и высота). Сообщите о зарегистрированной ориентации, скорости и ускорении в локальных системах координат каждой платформы (по умолчанию North-East-Down), соответствующих текущей путевой точке.

Вы можете использовать этот аргумент только когда IsEarthCentered свойство сценария отслеживания, sc, установлено в true.

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

расширить все

Записи состояний платформы во время симуляции, возвращенные как M-на-1 массив структур, если RecordingFormat задается как 'struct' (по умолчанию), или trackingScenarioRecording объект, если RecordingFormat задается как 'Recording'. M - количество временных шагов в симуляции.

Каждая запись содержит временной шаг симуляции и записанную информацию в то время. Структура записи имеет как минимум два поля: SimulationTime и Poses. Это может также иметь другие необязательные поля в зависимости от входа.

The SimulationTime поле содержит время симуляции записи. Poses - N массив структур -by-1, где N - количество платформ. Каждый Poses структура содержит следующие поля:

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

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

ClassID

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

Position

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

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

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

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].

Необязательные поля в rec выходы:

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

массив ячеек с выбросами (например radarEmission и sonarEmission) в сценарии

EmitterConfigurations

a массива структур строений эмиттера для каждого эмиттера

EmitterPlatformIDs

числовой массив идентификаторов платформ для каждого эмиттера

Detections

массив ячеек objectDetection объекты, сгенерированные датчиками в сценарии

SensorConfigurations

a массива структур строений датчика для каждого датчика

SensorPlatformIDs

числовой массив идентификаторов платформ для каждого датчика

CoverageConfig

a массива структур покрытия строений для каждого датчика или излучателя

Каждая структура строения эмиттера содержит следующие поля:

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

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

IsValidTime

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

IsScanDone

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

FieldOfView

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

MeasurementParameters

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

Каждая структура строения датчика содержит следующие поля:

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

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

IsValidTime

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

IsScanDone

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

FieldOfView

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

MeasurementParameters

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

Каждая структура строения покрытия содержит следующие поля:

Поля строений

ОбластьОписание
Index Уникальное целое число для различения датчиков или излучателей.
LookAngle

Текущие углы boresight датчика или излучателя, заданные как:

  • Скаляр в степенях, если сканирование только в азимутальном направлении.

  • Двухэлементный вектор [azimuth; elevation] в степенях при сканировании как в азимутальном, так и в вертикальном направлениях.

FieldOfViewПоле зрения датчика или излучателя, заданное как двухэлементный вектор [azimuth; elevation] в степенях.
ScanLimits

Минимальный и максимальный углы, которые датчик или излучатель может сканировать с его Orientation.

  • Если датчик или излучатель может сканировать только в азимутальном направлении, задайте пределы как вектор-строку 1 на 2 [minAz, maxAz] в степенях.

  • Если датчик или излучатель также может сканировать в повышение направлении, задайте пределы как матрицу 2 на 2 [minAz, maxAz; minEl, maxEl] в степенях.

RangeОбласть значений луча и зоны покрытия датчика или излучателя в метрах.
PositionИсходное положение датчика или излучателя, заданное как трехэлементный вектор [X, Y, Z] на оси театрального сюжета.
OrientationПреобразование вращения из сценария или глобальной системы координат в монтажную систему датчика или эмиттера, заданное как матрица вращения, кватернион или три угла Эйлера в ZYX последовательности.

Примеры

расширить все

Создайте новый сценарий и добавьте платформу.

scene = trackingScenario;
plat = platform(scene);

Задайте траекторию платформы. Расстояние траектории - 25 метров. Скорость траектории составляет 20 м/с в направлении х.

plat.Trajectory = waypointTrajectory('Waypoints',[0 0 0; 25 0 0], ...
    'TimeOfArrival', [0 25/20]);

Запустите симуляцию и запись результатов.

r = record(scene)
r=13×1 struct array with fields:
    SimulationTime
    Poses

Отображение записи в начальное время.

r(1)
ans = struct with fields:
    SimulationTime: 0
             Poses: [1x1 struct]

r(1).Poses
ans = struct with fields:
         PlatformID: 1
            ClassID: 0
           Position: [0 0 0]
           Velocity: [20 0 0]
       Acceleration: [0 0 0]
        Orientation: [1x1 quaternion]
    AngularVelocity: [0 0 0]

Отображение записи в последнее время.

r(end)
ans = struct with fields:
    SimulationTime: 1.2000
             Poses: [1x1 struct]

r(end).Poses
ans = struct with fields:
         PlatformID: 1
            ClassID: 0
           Position: [24 0 0]
           Velocity: [20 0 0]
       Acceleration: [0 0 0]
        Orientation: [1x1 quaternion]
    AngularVelocity: [0 0 0]

Загрузите сценарий отслеживания управления воздушным движением.

load ATCScenario scenario

Запустите симуляцию и запись результатов.

r = record(scenario, 'quaternion', 'IncludeEmitters', true,...
    'IncludeSensors', true, 'InitialSeed', 2019)
r=3215×1 struct array with fields:
    SimulationTime
    Poses
    Emissions
    EmitterConfigurations
    EmitterPlatformIDs
    Detections
    PointClouds
    PointCloudClusters
    SensorConfigurations
    SensorPlatformIDs
    CoverageConfig

Отображение записи в начальное время.

r(1)
ans = struct with fields:
           SimulationTime: 0
                    Poses: [4x1 struct]
                Emissions: {0x1 cell}
    EmitterConfigurations: [0x1 struct]
       EmitterPlatformIDs: [0x1 double]
               Detections: {0x1 cell}
              PointClouds: {0x1 cell}
       PointCloudClusters: {0x1 cell}
     SensorConfigurations: [1x1 struct]
        SensorPlatformIDs: 1
           CoverageConfig: [1x1 struct]

Отображение записи в последнее время.

r(end)
ans = struct with fields:
           SimulationTime: 59.9947
                    Poses: [4x1 struct]
                Emissions: {0x1 cell}
    EmitterConfigurations: [0x1 struct]
       EmitterPlatformIDs: [0x1 double]
               Detections: {0x1 cell}
              PointClouds: {0x1 cell}
       PointCloudClusters: {0x1 cell}
     SensorConfigurations: [1x1 struct]
        SensorPlatformIDs: 1
           CoverageConfig: [1x1 struct]

Введенный в R2018b