advance

Предварительная симуляция сценария отслеживания на один временной шаг

Синтаксис

Описание

пример

isrunning = advance(sc) продвигается симуляция сценария отслеживания, sc, и возвращает текущее состояние сценария. Настройте поведение усовершенствование с помощью свойств UpdateRate и InitialAdvance trackingScenario объект.

  • Когда UpdateRate свойство задается как положительная скалярная величина F, сценарий усовершенствований во временном шаге 1/ F. Более того, если InitialAdvance свойство задается как 'Zero'сценарий начинается в то время 0. Если на InitialAdvance свойство задается как 'UpdateInterval', затем сценарий начинается в момент 1/ F.

  • Когда UpdateRate свойство задается как 0, сценарий развивается исходя из необходимости обновления датчиков или излучателей, монтируемых на платформах в сценарии. В этом случае начальное время всегда является временем 0. Кроме того, вам нужно запустить работу датчиков или излучателей, используя по крайней мере одну из этих опций между advance вызовы:

    • Непосредственно вращая датчики или излучатели

    • Использование emit, detect, или lidarDetect функция сценария отслеживания для запуска датчиков или излучателей в сценарии

    • Использование emit, detect, или lidarDetect функция платформы с соответствующими датчиками или излучателями

Примеры

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

Создайте сценарий отслеживания и установите его InitialAdvance свойство к UpdateInterval.

scene = trackingScenario('UpdateRate',10);
scene.InitialAdvance = 'UpdateInterval';

Создайте платформу и задайте ее траекторию. Установите датчик на платформе.

plat = platform(scene);
traj = waypointTrajectory('Waypoints', [0 1 0; 1 0 0; 0 -1 0; -1 0 0; 0 1 0], ...
    'TimeOfArrival', [0; 0.25; .5; .75; 1.0]);
sensor = fusionRadarSensor(1,'UpdateRate',20)
sensor = 
  fusionRadarSensor with properties:

              SensorIndex: 1
               UpdateRate: 20
            DetectionMode: 'Monostatic'
                 ScanMode: 'Mechanical'
    InterferenceInputPort: 0
       EmissionsInputPort: 0

         MountingLocation: [0 0 0]
           MountingAngles: [0 0 0]

              FieldOfView: [1 5]
              RangeLimits: [0 100000]

     DetectionProbability: 0.9000
           FalseAlarmRate: 1.0000e-06
           ReferenceRange: 100000

       TargetReportFormat: 'Clustered detections'

  Show all properties

plat.Trajectory = traj;
plat.Sensors = sensor;

Показать состояние симуляции перед запуском сценария.

fprintf('Time = %f, Status is %s\n',...
    scene.SimulationTime, scene.SimulationStatus);
Time = 0.000000, Status is NotStarted

Продвигайте сценарий отслеживания рекурсивно.

while advance(scene)
    p = pose(plat);
    poses = platformPoses(scene);
    detections = sensor(poses,scene.SimulationTime);
    fprintf('Time = %f, Status is %s\n', ...
        scene.SimulationTime, scene.SimulationStatus);
end
Time = 0.100000, Status is InProgress
Time = 0.200000, Status is InProgress
Time = 0.300000, Status is InProgress
Time = 0.400000, Status is InProgress
Time = 0.500000, Status is InProgress
Time = 0.600000, Status is InProgress
Time = 0.700000, Status is InProgress
Time = 0.800000, Status is InProgress
Time = 0.900000, Status is InProgress
Time = 1.000000, Status is InProgress

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

fprintf('Time = %f, Status is %s\n', ...
    scene.SimulationTime, scene.SimulationStatus);
Time = 1.100000, Status is Completed

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

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

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

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

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

Прогон симуляции, возвращенный как 0 или 1. Если isrunning является 1, симуляция выполняется. Если isrunning является 0, симуляция остановилась. Симуляция останавливается, когда достигается одно из следующих условий:

  • Достигнуто время остановки.

  • Любая платформа достигает конца своей траектории.

Модули указаны в секундах.

Введенный в R2018b
Для просмотра документации необходимо авторизоваться на сайте