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