В этом примере показано, как сгенерировать и визуализировать траектории нескольких самолетов с помощью trackingScenario
и waypointTrajectory
.
Шесть траекторий самолета, смоделированных в этом примере, описаны в [1]. Муха самолета в расположении намеревалась быть принятой радаром, расположенным в начале координат.
Концептуально говоря, траектория является кривой через пробел, который объект перемещается как функция времени. Чтобы задать кривую, можно думать о кривой через пробел, который проходит через набор точек, названных waypoints, соединенным функцией интерполяции, вызванной interpolant. interpolant позволяет вам задавать путь между waypoints через непрерывную функцию. Общие interpolants являются базирующимся полиномом (например, кусочные линейные или кубические сплайны). Для быстро изменяющейся траектории больше waypoints требуется, чтобы сохранять интерполированную кривую максимально близко к истинной кривой; однако, мы можем сократить количество необходимых точек путем выбора interpolants тщательно.
Много моделей движения, используемых в фильтрах дорожки, состоят из "постоянной скорости", "постоянный поворот", или "постоянное ускорение" профилирует. Размещать эти модели движения, interpolant, используемый в waypointTrajectory
объект основан на кусочном сплайне клотоиды (горизонтально) и кубическом сплайне (вертикально). Искривление сплайна клотоиды варьируется линейно относительно путешествовавшего расстояния; это позволяет нам прямые и постоянные повороты модели легко, имея одну дополнительную степень свободы к переходу гладко между прямыми и изогнутыми сегментами. Точно так же объекты в воздухе испытывают эффекты силы тяжести, после параболического (квадратичного) пути. Наличие кубического сплайна, чтобы смоделировать вертикальное вертикальное изменение позволяет нам моделировать путь с подобной дополнительной степенью свободы.
Если физический путь через пробел объекта известен (и установлен), скорость объекта, когда функция расстояния переместилась, определяется через кубическую интерполяцию Эрмита. Это полезно для моделирования траекторий объектов, которые ускоряются через повороты или прямые сегменты.
Траектории сравнительного теста, которые мы используем, состоят из прямых, постоянных-g поворотов и поворотов с ускорением.
Следующий файл содержит таблицы waypoints и скоростей (в модулях метров и метров в секунду), который может использоваться, чтобы восстановить шесть траекторий самолета. Загрузите его в MATLAB и исследуйте таблицу, содержащую первую траекторию.
load('benchmarkTrajectoryTables.mat', 'trajTable'); trajTable{1}
ans = 14x3 table Time Waypoints Velocities _____ _________________________ _____________________________ 0 72947 29474 -1258 -258.9 -129.69 0 60 57413 21695 -1258 -258.9 -129.66 0 62 56905 21417 -1258 -245.3 -153.89 0 78.1 54591 17566 -1258 -20.635 -288.86 0 80 54573 17016 -1258 -2.8042 -289.59 0 83 54571 16147 -1258 -0.061 -289.56 0 110 54571 8329 -1258 0 -289.56 0 112.7 54634 7551.5 -1258 58.979 -283.56 0 120 55718 5785.5 -1258 226.41 -180.59 0 129 58170 5172.8 -1258 284.74 52.88 0 132 59004 5413.9 -1258 274.26 93.05 0 137.8 60592 5962.2 -1258 273.62 94.76 0 147.8 63328 6909.9 -1258 273.62 94.76 0 185 73508 10435 -1258 273.62 94.76 0
Таблица содержит набор waypoints и скоростей, через которые самолет проходит в соответствующее время.
Чтобы использовать контрольные точки, можно создать сценарий с шестью платформами и присвоить траекторию каждому:
scene = trackingScenario('UpdateRate',10); for n=1:6 plat = platform(scene); traj = trajTable{n}; plat.Trajectory = waypointTrajectory(traj.Waypoints, traj.Time, 'Velocities', traj.Velocities); end
Если у вас есть сценарий и настроенный плоттер, можно настроить theaterPlot
чтобы создать анимированное представление местоположений самолета как, время прогрессирует.
helperPlot = helperBenchmarkPlotter(numel(scene.Platforms)); while advance(scene) % extract the pose of each of the six aircraft poses = platformPoses(scene); % update the plot update(helperPlot, poses, scene.SimulationTime); end
Траектории, построенные выше, 3D. Можно вращать график так, чтобы вертикальное изменение траекторий с готовностью отобразилось. Можно использовать view
и axis
команды, чтобы настроить график. Поскольку траектории используют NED (на северо-восток вниз) система координат, вертикальное изменение над землей имеет отрицательный z компонент.
view(60,10); axis square grid minor set(gca,'ZDir','reverse');
Это может быть поучительно, чтобы просмотреть контрольные точки, используемые, чтобы сгенерировать траектории. Следующий рисунок показывает первую траекторию, которая является представительной для большого самолета.
Контрольные точки, используемые, чтобы создать путь, построены на крайнем левом графике. Только несколько waypoints необходимы, чтобы отметить изменения в искривлении, когда плоскость принимает постоянный оборот.
Графики справа показывают высоту, величину скорости (скорость) и величина ускорения, соответственно. Скорость остается почти постоянной повсюду несмотря на резкое изменение в искривлении. Это - преимущество использования клотоиды interpolant.
[time, position, velocity, acceleration] = cumulativeHistory(helperPlot); helperTrajectoryViewer(1, time, position, velocity, acceleration, trajTable);
Вторая траектория, показанная ниже, представляет траекторию маленького маневренного самолета. Это состоит из двух поворотов, имея несколько изменений на ускорении сразу после первого поворота и во время второго поворота. Больше waypoints необходимо, чтобы настроить для этих изменений, однако остальная часть траектории требует меньшего количества точек.
helperTrajectoryViewer(2, time, position, velocity, acceleration, trajTable);
Третья траектория, показанная ниже, является представительной для более высокого самолета скорости. Это состоит из двух постоянных поворотов, где самолет замедляется на полпути во втором повороте. Вы видите контрольные точки, которые использовались, чтобы отметить изменения в скорости и ускорение в графике x-y слева.
helperTrajectoryViewer(3, time, position, velocity, acceleration, trajTable);
Четвертую траекторию, также представитель более высокого самолета скорости, показывают ниже. Это состоит из двух поворотов, где самолет ускоряется и поднимается на большую высоту.
helperTrajectoryViewer(4, time, position, velocity, acceleration, trajTable);
Пятая траектория является представительной для маневренного высокоскоростного самолета. Это состоит из трех постоянных поворотов; однако это значительно ускоряется в длительности рейса. После третьего поворота самолет возрастает к горизонтальному полету.
helperTrajectoryViewer(5, time, position, velocity, acceleration, trajTable);
Шестая траектория является также представительной для маневренного высокоскоростного самолета. Это состоит из четырех поворотов. После второго поворота самолет уменьшает высоту и скорость и входит в третий поворот. После третьего поворота это ускоряется быстро и входит в четвертый поворот, продолжая прямо и горизонтальный полет.
helperTrajectoryViewer(6, time, position, velocity, acceleration, trajTable);
В этом примере показано, как использовать waypointTrajectory
и trackingScenario
создать сценарий отслеживания мультиобъекта. В этом примере вы изучили концепции позади interpolant, используемого в waypointTrajectory
и были показаны, как сценарий мог быть воспроизведен с небольшим количеством waypoints.
В.Д. Блэр, Г. А. Уотсон, Т. Кирубараджэн, Y. Панель шалом, "Сравнительный тест для Радарного Выделения и Отслеживающий в ECM". Сделка IEEE космических и Электронных систем на, издание 34. № 4. 1998