advance

Усовершенствуйте радарную симуляцию сценария одним временным шагом

Описание

пример

isRunning = advance(scenario) совершенствует симуляцию радарного сценария scenario одним временным шагом, и возвращает рабочее состояние сценария. Настройте поведение усовершенствования с помощью свойств UpdateRate и InitialAdvance radarScenario объект.

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

  • Когда UpdateRate свойством является 0, симуляция переходит к следующему запланированному времени выборки любых смонтированных датчиков или эмиттеров. Например, если сценарий имеет два датчика с частотами обновления 2 Гц и 5 Гц, то первые семь обновлений симуляции в 0, 0.2, 0.4, 0.5, 0.6, 0,8 и 1,0 секунды, соответственно.

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

    • Непосредственно рабочий датчики или эмиттеры

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

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

Примеры

свернуть все

Создайте новый радарный сценарий.

rs = radarScenario;

Создайте платформу, которая следует за круговым путем радиуса 10 м в течение одной секунды. Это выполняется путем размещения waypoints в круговой форме, гарантирования, что первые и последние waypoint являются тем же самым.

plat = platform(rs);
wpts = [0 10 0; 10 0 0; 0 -10 0; -10 0 0; 0 10 0];
time = [0; 0.25; .5; .75; 1.0];
plat.Trajectory = waypointTrajectory(wpts,time);

Выполните симуляцию, совершенствуя один временной шаг за один раз. Отобразите время симуляции и положение и скорость платформы на каждом временном шаге.

while advance(rs)
    p = pose(plat);
    disp(strcat("Time = ",num2str(rs.SimulationTime)))
    disp(strcat("  Position = [",num2str(p.Position),"]"))
    disp(strcat("  Velocity = [",num2str(p.Velocity),"]"))
end
Time = 0
  Position = [0  10   0]
  Velocity = [62.8318 -1.88403e-05            0]
Time = 0.1
  Position = [5.8779      8.0902           0]
  Velocity = [50.832     -36.9316            0]
Time = 0.2
  Position = [9.5106      3.0902           0]
  Velocity = [19.4161     -59.7566            0]
Time = 0.3
  Position = [9.5106     -3.0902           0]
  Velocity = [-19.4161     -59.7567            0]
Time = 0.4
  Position = [5.8779     -8.0902           0]
  Velocity = [-50.832     -36.9316            0]
Time = 0.5
  Position = [0 -10   0]
  Velocity = [-62.8319  1.88181e-05            0]
Time = 0.6
  Position = [-5.8779     -8.0902           0]
  Velocity = [-50.832      36.9316            0]
Time = 0.7
  Position = [-9.5106     -3.0902           0]
  Velocity = [-19.4161      59.7566            0]
Time = 0.8
  Position = [-9.5106      3.0902           0]
  Velocity = [19.4161      59.7566            0]
Time = 0.9
  Position = [-5.8779      8.0902           0]
  Velocity = [50.832      36.9316            0]
Time = 1
  Position = [-7.10543e-15           10            0]
  Velocity = [62.8319 -1.88404e-05            0]

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

свернуть все

Радарный сценарий в виде radarScenario объект.

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

свернуть все

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

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

  • Любая платформа достигает конца своей траектории, и вы задали платформу Motion свойство с waypoints использование waypointTrajectory Система object™.

Типы данных: логический

Введенный в R2021a