trackingScenario

Создайте сценарий отслеживания

Описание

trackingScenario создает объект сценария отслеживания. Сценарий отслеживания моделирует арену 3-D, содержащую несколько платформ. Платформы представляют все, что вы хотите моделировать, такие как самолеты, наземные транспортные средства или корабли. Некоторые платформы несут датчики, такие как радар, гидролокатор или инфракрасный. Другие платформы выступают в качестве источников сигналов или отражают сигналы. Платформы могут также включать стационарные препятствия, которые могут влиять на движение других платформ. Платформы могут быть смоделированы как точки или кубоиды путем определения 'Dimension' свойство при вызове platform. Платформы могут иметь зависимые от аспекта свойства, включая радиолокационное сечение или гидроакустическую прочность цели. Можно заполнить сценарий отслеживания вызовом platform метод для каждой платформы, которую вы хотите добавить. Платформы Platform объекты. Можно создать траектории для любой платформы, используя kinematicTrajectory, waypointTrajectory, или geoTrajectory Системные объекты. После создания сценария запустите симуляцию, вызвав advance функция объекта.

Создание

sc = trackingScenario создает пустой сценарий отслеживания со значениями свойств по умолчанию. В этом случае можно задать траектории платформы в сценарии как Декартовы состояния, использующие kinematicTrajectory или waypointTrajectory объекты.

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

sc = trackingScenario(Name,Value) настраивает trackingScenario объект со свойствами с использованием одного или нескольких Name,Value аргументы в виде пар. Name является именем свойства и Value - соответствующее значение. Name должны находиться внутри одинарных кавычек (''). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN. Любые неопределенные свойства берут значения по умолчанию.

Свойства

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

Включите земную опорную систему координат и траектории, заданные как true или false.

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

  • Если задано как true, вы должны использовать geoTrajectory определить траектории платформ как геодезические координаты в сценарии слежения. В этом случае необходимо задать IsEarthCentered свойство во время создания сценария отслеживания.

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

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

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

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

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

Пример: 60.0

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

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

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

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

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

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

  • При указании в качестве нуля симуляции усовершенствований исходя из необходимости обновления датчиков или излучателей, установленных на платформах сценария. Создайте платформу, используя platform функция.

Пример: 2.0

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

Начальное усовершенствование при вызове advance функция объекта, заданная как 'Zero' или 'UpdateInterval'. Когда задан как

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

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

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

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

Статус симуляции, заданный как

  • NotStarted - Когда advance Функция object не использовалась в сценарии отслеживания.

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

sc = trackingScenario('UpdateRate',100.0,'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)
    {1×1 fusion.scenario.Platform}    {1×1 fusion.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

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

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

Создайте сценарий отслеживания с заданной частотой обновления.

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

Добавьте самолет в сценарий. Траектория самолета изменяется в широте и высоте.

plane = platform(scene,'Trajectory',geoTrajectory([-12.338,-71.349,10600;42.390,-71.349,0],[0 36000]));

Продвижение сценария слежения и запись геодезических и Декартовых положений плоскостной цели.

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

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

figure()
km = 1000;
% Plot the trajectory.
plot3(positions(1,1)/km,positions(1,2)/km,positions(1,3)/km, 'b*');
hold on;
plot3(positions(end,1)/km,positions(end,2)/km,positions(end,3)/km, 'bo');
plot3(positions(:,1)/km,positions(:,2)/km,positions(:,3)/km,'b');

% Plot the Earth radial lines.
plot3([0 positions(1,1)]/km,[0 positions(1,2)]/km,[0 positions(1,3)]/km,'k:');
plot3([0 positions(end,1)]/km,[0 positions(end,2)]/km,[0 positions(end,3)]/km,'k:');
xlabel('x (km)'); ylabel('y (km)'); zlabel('z (km)');
legend('Start position','End position','Trajectory')

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

Вопросы совместимости

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

Не рекомендуемый запуск в R2021a

См. также

Объекты

Введенный в R2018b