exponenta event banner

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 функция объекта не использовалась в сценарии отслеживания.

  • 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