radarScenario

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

Описание

radarScenario создает радарный объект сценария. Радарный сценарий симулирует 3-D среду, содержащую несколько платформ. Платформы представляют объекты, которые вы хотите симулировать, такие как самолет, наземные транспортные средства или поставки. Некоторые платформы несут датчики, такие как радар, гидролокатор или инфракрасное излучение. Другие платформы действуют как источник сигналов или отражатель сигналов.

Заполните радарный сценарий путем вызова platform функция для каждой платформы вы хотите добавить. Можно смоделировать платформы как точки или кубоиды путем определения 'Dimension' свойство при вызове platform функция. Платформы имеют подписи со свойствами, которые характерны для типа датчика, таковы как эффективная площадь рассеивания для радарных датчиков. Можно создать траектории для любой платформы с помощью kinematicTrajectory, waypointTrajectory, или geoTrajectory Система object™.

После того, как вы добавите все желаемые платформы, можно симулировать сценарий в инкрементных временных шагах при помощи advance функция в цикле. Можно запустить симуляцию целиком с помощью record функция.

Создание

Описание

scene = radarScenario создает пустой радарный сценарий со значениями свойств по умолчанию. Можно задать траектории платформы в сценарии как Декартовы состояния с помощью kinematicTrajectory или waypointTrajectory Системный объект.

scene = radarScenario('IsEarthCentered',true) создает пустой сосредоточенный Землей радарный сценарий и устанавливает свойство IsEarthCentered как true. Можно задать траектории платформы в сценарии как геодезические состояния с помощью geoTrajectory Системный объект.

пример

scene = radarScenario(Name,Value) конфигурирует свойства radarScenario объект с помощью одних или нескольких аргументов name-value. Name имя свойства и Value соответствующее значение. Можно задать несколько аргументов name-value в любом порядке. Любые незаданные свойства берут значения по умолчанию.

Свойства

развернуть все

Включите сосредоточенную Землей систему координат и траектории в виде логического 0 ложь) или 1 TRUE).

  • Если задано как 0 ложь), затем необходимо задать траектории платформ как Декартовы состояния с помощью kinematicTrajectory или waypointTrajectory Системный объект.

  • Если задано как 1 TRUE), затем необходимо задать траектории платформ как геодезические состояния с помощью geoTrajectory Системный объект.

Можно задать IsEarthCentered свойство только при создании радарного сценария.

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

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

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

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

Пример: 60.0

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

Частота симуляции обновляется в виде неотрицательного скаляра в герц.

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

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

Пример: 2.0

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

Начальное усовершенствование при вызове advance функция в виде одного из этих значений.

  • Zero — Симуляция сценария запускает во время 0 в первом вызове advance функция.

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

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

Это свойство доступно только для чтения.

Текущее время симуляции в виде положительной скалярной величины в секундах. Чтобы сбросить время симуляции, чтобы обнулить и перезапустить симуляцию, вызовите restart функция.

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

Это свойство доступно только для чтения.

Состояние Simulation в виде одного из этих значений.

  • NotStarted — Когда advance функция не использовалась на радарном сценарии.

  • InProgress — Когда advance функция использовалась на радарном сценарии, по крайней мере, однажды, и сценарий не достиг Completed состояние.

  • Completed — Когда сценарий достигает времени остановки, заданного StopTime свойство или любой Platform объект в сценарии достигает конца своей траектории.

Можно перезапустить симуляцию сценария при помощи restart объектная функция.

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

Это свойство доступно только для чтения.

Платформы в сценарии, возвращенном как массив ячеек Platform объекты. Число элементов в массиве ячеек равно количеству платформ в сценарии. Чтобы добавить платформу в сценарий, используйте platform функция.

Функции объекта

platformДобавьте платформу в радарный сценарий
advanceУсовершенствуйте радарную симуляцию сценария одним временным шагом
restartПерезапустите симуляцию радарного сценария
recordСимуляция записи радарного сценария
emitСоберите выбросы всех эмиттеров в радарном сценарии
propagateРаспространите эмиссию в радарном сценарии
detectСоберите обнаружения из всех датчиков в радарном сценарии
platformProfilesПрофили радарных платформ сценария
platformPosesИнформация о положении для каждой платформы в радарном сценарии
coverageConfigДатчик и эмиттерная настройка покрытия
perturbПримените возмущения к радарному сценарию
cloneСоздайте копию радарного сценария

Примеры

свернуть все

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

sc = radarScenario('UpdateRate',100,'StopTime',1.2);

Создайте две платформы.

platfm1 = platform(sc);
platfm2 = platform(sc);

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

wpts1 = [0 10 0; 10 0 0; 0 -10 0; -10 0 0; 0 10 0];
time1 = [0; 0.25; .5; .75; 1.0];
platfm1.Trajectory = waypointTrajectory(wpts1,time1);

Платформа 2 следует за прямым путем в течение одной секунды.

wpts2 = [-8 -8 0; 10 10 0];
time2 = [0; 1.0];
platfm2.Trajectory = waypointTrajectory(wpts2,time2);

Проверьте количество платформ в сценарии.

disp(sc.Platforms)
    {1x1 radar.scenario.Platform}    {1x1 radar.scenario.Platform}

Запустите симуляцию и постройте текущее положение каждой платформы с помощью анимированной линии.

figure
grid
axis equal
axis([-12 12 -12 12])
line1 = animatedline('DisplayName','Trajectory 1','Color','b','Marker','.');
line2 = animatedline('DisplayName','Trajectory 2','Color','r','Marker','.');
title('Trajectories')
p1 = pose(platfm1);
p2 = pose(platfm2);
addpoints(line1,p1.Position(1),p1.Position(2));
addpoints(line2,p2.Position(2),p2.Position(2));

while advance(sc)
    p1 = pose(platfm1);
    p2 = pose(platfm2);
    addpoints(line1,p1.Position(1),p1.Position(2));
    addpoints(line2,p2.Position(2),p2.Position(2));
    pause(0.1)
end

Figure contains an axes object. The axes object with title Trajectories contains 2 objects of type animatedline. These objects represent Trajectory 1, Trajectory 2.

Постройте waypoints для обеих платформ.

hold on
plot(wpts1(:,1),wpts1(:,2),' ob')
text(wpts1(:,1),wpts1(:,2),"t = " + string(time1),'HorizontalAlignment','left','VerticalAlignment','bottom')
plot(wpts2(:,1),wpts2(:,2),' or')
text(wpts2(:,1),wpts2(:,2),"t = " + string(time2),'HorizontalAlignment','left','VerticalAlignment','bottom')
hold off

Figure contains an axes object. The axes object with title Trajectories contains 11 objects of type animatedline, line, text. These objects represent Trajectory 1, Trajectory 2.

Создайте сосредоточенный Землей радарный сценарий и задайте частоту обновления.

scene = radarScenario('IsEarthCentered',true,'UpdateRate',0.01);

Добавьте платформу в сценарий, который представляет самолет. Траектория самолета изменяется в долготе и высоте. Задайте траекторию с помощью геодезических координат.

geoTraj = geoTrajectory([42.300,-71.351,10600;42.300,-124.411,0],[0 21600]);
plane = platform(scene,'Trajectory',geoTraj);

Усовершенствуйте радарный сценарий и запишите геодезические и Декартовы положения плоской цели.

positions = [];
while advance(scene)
    poseLLA = pose(plane,'CoordinateSystem','Geodetic');
    poseXYZ = pose(plane,'CoordinateSystem','Cartesian');
    positions = [positions;poseXYZ.Position];%#ok<AGROW> Allow the buffer to grow.
end

Преобразуйте единицы расстояния от метров до километров.

km = 1000;
positions = positions/km;

Визуализируйте положение запуска, конечное положение и траекторию в системе координат ECEF.

hold on
plot3(positions(1,1),positions(1,2),positions(1,3),'b*')
plot3(positions(end,1),positions(end,2),positions(end,3),'bo')
plot3(positions(:,1),positions(:,2),positions(:,3),'b')

Постройте Землю радиальные линии положения запуска и конечного положения.

plot3([0 positions(1,1)],[0 positions(1,2)],[0 positions(1,3)],'k:')
plot3([0 positions(end,1)],[0 positions(end,2)],[0 positions(end,3)],'k:')
xlabel('x (km)')
ylabel('y (km)')
zlabel('z (km)')
legend('Start position','End position','Trajectory')
view(3)

Figure contains an axes object. The axes object contains 5 objects of type line. These objects represent Start position, End position, Trajectory.

Введенный в R2021a