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 - соответствующее значение. Можно задать несколько аргументов имя-значение в любом порядке. Любые неопределенные свойства берут значения по умолчанию.

Свойства

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

Включите земную опорную систему координат и траектории в виде логического 0 (false) или 1 (true).

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

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

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

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

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

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

  • Любая платформа достигает конца своей траектории, и вы определили платформу Motion свойство с путевыми точками, использующими 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

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

Статус симуляции, заданный как одно из следующих значений.

  • 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 м в течение одной секунды. Это достигается путем размещения путевых точек в круглой форме, гарантируя, что первая и последняя путевые точки совпадают.

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. The axes with title Trajectories contains 2 objects of type animatedline. These objects represent Trajectory 1, Trajectory 2.

Постройте графики путевых точек для обеих платформ.

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. The axes 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. The axes contains 5 objects of type line. These objects represent Start position, End position, Trajectory.

Введенный в R2021a