Platform

Объект платформы, принадлежащий радиолокационному сценарию

Описание

Platform задает объект платформы, принадлежащий радиолокационному сценарию.

Создание

Можно создавать Platform объекты, использующие platform функция radarScenario объект.

Свойства

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

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

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

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

Идентификатор классификации платформы, заданный как неотрицательное целое число. Можно задать собственную схему классификации платформ и назначить ClassID значений на платформы по схеме. Значение 0 зарезервирован для объекта неизвестного или неназначенного класса.

Пример: 5

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

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

Текущее положение платформы, заданное как трехэлементный числовой вектор.

  • Когда IsEarthCentered свойство сценария установлено в false, позиция выражена в Декартовых координатах [x, y, z] в метрах.

  • Когда IsEarthCentered свойство сценария установлено в true, положение выражается как геодезические координаты [latitude, longitude, altitude], где latitude и longitude в степенях и altitude в метрах.

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

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

Текущая ориентация платформы, заданная как трехэлементный числовой вектор в степенях. Ориентация выражается как [yaw, pitch, roll] углы поворота от локальной системы отсчета до каркаса кузова платформы.

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

Размерности платформы и смещение источника, заданные как колодец. Структура содержит Length, Width, Height, и OriginOffset кубоида, который аппроксимирует размерности платформы. The OriginOffset - вектор положения от центра кубоида до начала координатной системы координат платформы. The OriginOffset выражается в системе координат платформы. Например, если источник платформы находится в центре кубоидной задней грани, как показано на рисунке, установите OriginOffset как [-L/2, 0, 0]. Значение по умолчанию для Dimensions - структура с нулем всех полей, которая соответствует модели точек.

Platform depicted as a cuboid whose center is offset from the center of the platform frame coordinate system

Поля Dimensions

ОбластиОписаниеДефолт
LengthРазмерность кубоида по x направлению0
WidthРазмерность кубоида по y направлению0
HeightРазмерность кубоида по z направлению0
OriginOffsetПоложение координатной системы координат платформы относительно кубоидного центра[0 0 0 ]

Пример: struct('Length',5,'Width',2.5,'Height',3.5,'OriginOffset',[-2.5 0 0])

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

Движение платформы, заданное как kinematicTrajectory объект, a waypointTrajectory объект, или geoTrajectory объект. Объект траектории определяет временную эволюцию положения и скорости системы координат платформы, а также ориентацию системы координат платформы относительна система координат сценария.

  • Когда IsEarthCentered свойство сценария установлено в false, используйте kinematicTrajectory или waypointTrajectory объект. По умолчанию платформа использует стационарную kinematicTrajectory объект.

  • Когда IsEarthCentered свойство сценария установлено в true, используйте geoTrajectory объект. По умолчанию платформа использует стационарную geoTrajectory объект.

Сигнатуры платформы, заданные как массив ячеек из объектов сигнатуры или пустой массив ячеек ({}). Значение по умолчанию является массивом ячеек, содержащим rcsSignature объект со значениями свойств по умолчанию. Если у вас есть Sensor Fusion and Tracking Toolbox™, массив ячеек также может включать irSignature (Sensor Fusion and Tracking Toolbox) и tsSignature (Sensor Fusion and Tracking Toolbox) объекты. Массив ячеек содержит не более одного образцы каждого типа объекта сигнатуры. Сигнатура представляет шаблону отражения или излучения платформы, такие как ее радарное сечение, сила цели или интенсивность ИК-излучения.

Оценка положения платформы, заданная как объект оценки положения, такой как insSensor объект. Оценщик положения определяет положение платформы относительно локальных координат сценария NED. Интерфейс любой оценки положения должен совпадать с интерфейсом insSensor объект. По умолчанию свойства точности оценки положения равны нулю.

Эмиттеры, установленные на платформе, заданные как массив ячеек из таких объектов эмиттера, как radarEmitter объекты. Если у вас есть Sensor Fusion and Tracking Toolbox, то массив ячеек может также включать sonarEmitter (Sensor Fusion and Tracking Toolbox) объекты.

Датчики, установленные на платформе, задаются как массив ячеек из таких объектов датчика, как radarDataGenerator объекты.

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

detectСобирайте обнаружения от всех датчиков, установленных на платформе
emitСбор выбросов от всех излучателей, установленных на платформе
poseПоложение обновления для платформы
receiveПрием сигнала IQ от радаров, установленных на платформе
targetPosesЦелевые положения и ориентации, как видно с платформы

Примеры

свернуть все

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

sc = radarScenario('UpdateRate',100,'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)
    {1x1 radar.scenario.Platform}    {1x1 radar.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

Figure contains an axes. The axes with title Trajectories contains 2 objects of type animatedline. These objects represent Trajectory 1, Trajectory 2.

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

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

Figure contains an axes. The axes with title Trajectories contains 11 objects of type animatedline, line, text. These objects represent Trajectory 1, Trajectory 2.

Создайте радиолокационный сценарий.

rs = radarScenario;

Создайте кубоидную платформу для грузовика размерностями 5 м на 2,5 м на 3,5 м.

dim1 = struct('Length',5,'Width',2.5,'Height',3.5,'OriginOffset',[0 0 0]);
truck = platform(rs,'Dimension',dim1);

Задайте траекторию грузовика как круг с радиусом 20 м.

truck.Trajectory = waypointTrajectory('Waypoints', ...
    [20*cos(2*pi*(0:10)'/10) 20*sin(2*pi*(0:10)'/10) -1.75*ones(11,1)], ...
    'TimeOfArrival',linspace(0,50,11)');

Создайте платформу для небольшого квадрокоптера с размерностями 0,3 м на 0,3 м на 0,1 м.

dim2 = struct('Length',.3,'Width',.3,'Height',.1,'OriginOffset',[0 0 0]);
quad = platform(rs,'Dimension',dim2);

Задайте траекторию квадрокоптера как круг на 10 м выше грузовика с небольшой угловой задержкой. Обратите внимание, что отрицательные координаты z соответствуют положительному повышению.

quad.Trajectory = waypointTrajectory('Waypoints', ...
    [20*cos(2*pi*((0:10)'-.6)/10) 20*sin(2*pi*((0:10)'-.6)/10) -11.80*ones(11,1)], ...
    'TimeOfArrival',linspace(0,50,11)');

Визуализируйте результаты с помощью theaterPlot.

tp = theaterPlot('XLim',[-30 30],'YLim',[-30 30],'Zlim',[-12 5]);
pp1 = platformPlotter(tp,'DisplayName','truck','Marker','s');
pp2 = platformPlotter(tp,'DisplayName','quadcopter','Marker','o');

Задайте направление вида и запустите симуляцию.

view(-28,37);
set(gca,'Zdir','reverse');

while advance(rs)
    poses = platformPoses(rs);
    plotPlatform(pp1,poses(1).Position,truck.Dimensions,poses(1).Orientation);
    plotPlatform(pp2,poses(2).Position,quad.Dimensions,poses(2).Orientation);
end

Figure contains an axes. The axes contains 2 objects of type line. These objects represent truck, quadcopter.

Введенный в R2021a