trackingScenario

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

Описание

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

Создание

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

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

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

Свойства

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

Включите сосредоточенную Землей систему координат и траектории в виде true или false.

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

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

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

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

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

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

Модули находятся в секундах.

Пример: 60.0

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

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

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

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

Частота симуляции обновляется в виде положительной скалярной величины. Это - уровень, на котором можно обеспечить последовательные обновления симуляции сценария. Модули находятся в Гц.

Пример: 2.0

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

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

Состояние запуска симуляции, заданной как true или false. Если симуляция запускается, IsRunning true. Если симуляция остановилась, IsRunning false. Симуляция останавливается, когда любое из этих условий соблюдают:

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

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

Модули находятся в секундах.

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

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

Платформы в сценарии, возвращенном как массив ячеек или массив ячеек 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')

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

Системные объекты

Введенный в R2018b
Для просмотра документации необходимо авторизоваться на сайте