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 свойство во время создания сценария отслеживания.

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

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

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

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

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

Состояние Simulation в виде

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

Постройте 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

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

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

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

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

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

Смотрите также

Объекты

Введенный в R2018b