platform

Добавьте платформу к радарному сценарию

Описание

пример

plat = platform(scenario) создает новую Platform объект, plat, и добавляет платформу в радиолокационный сценарий, scenario.

пример

plat = platform(scenario,Name,Value) создает новую Platform объект с дополнительными свойствами, заданными одним или несколькими аргументами в виде имя-значение.

Примеры

свернуть все

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

rs = radarScenario;

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

plat = platform(rs);

Задайте траекторию платформы как круговой путь радиусом 10 м в течение одной секунды. Это достигается путем размещения путевых точек в круглой форме, гарантируя, что первая и последняя путевые точки совпадают.

wpts = [0 10 0; 10 0 0; 0 -10 0; -10 0 0; 0 10 0];
times = [0; 0.25; .5; .75; 1.0];
plat.Trajectory = waypointTrajectory(wpts,times);

Отображение свойств объекта платформы.

plat
plat = 
  Platform with properties:

       PlatformID: 1
          ClassID: 0
         Position: [0 10 0]
      Orientation: [-1.7180e-05 0 0]
       Dimensions: [1x1 struct]
       Trajectory: [1x1 waypointTrajectory]
    PoseEstimator: [1x1 insSensor]
         Emitters: {}
          Sensors: {}
       Signatures: {[1x1 rcsSignature]}

Выполните симуляцию, продвигаясь по одному временному шагу за раз. Отображение времени симуляции, положения и скорости платформы на каждом временном шаге.

while advance(rs)  
    p = pose(plat);
    disp(strcat("Time = ",num2str(rs.SimulationTime)))
    disp(strcat("  Position = [",num2str(p.Position),"]"))
    disp(strcat("  Velocity = [",num2str(p.Velocity),"]"))
end
Time = 0
  Position = [0  10   0]
  Velocity = [62.8318 -1.88403e-05            0]
Time = 0.1
  Position = [5.8779      8.0902           0]
  Velocity = [50.832     -36.9316            0]
Time = 0.2
  Position = [9.5106      3.0902           0]
  Velocity = [19.4161     -59.7566            0]
Time = 0.3
  Position = [9.5106     -3.0902           0]
  Velocity = [-19.4161     -59.7567            0]
Time = 0.4
  Position = [5.8779     -8.0902           0]
  Velocity = [-50.832     -36.9316            0]
Time = 0.5
  Position = [0 -10   0]
  Velocity = [-62.8319  1.88181e-05            0]
Time = 0.6
  Position = [-5.8779     -8.0902           0]
  Velocity = [-50.832      36.9316            0]
Time = 0.7
  Position = [-9.5106     -3.0902           0]
  Velocity = [-19.4161      59.7566            0]
Time = 0.8
  Position = [-9.5106      3.0902           0]
  Velocity = [19.4161      59.7566            0]
Time = 0.9
  Position = [-5.8779      8.0902           0]
  Velocity = [50.832      36.9316            0]
Time = 1
  Position = [-7.10543e-15           10            0]
  Velocity = [62.8319 -1.88404e-05            0]

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

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.

Входные параметры

свернуть все

Радиолокационный сценарий, заданный как radarScenario объект.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'ClassID',2

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

Пример: 5

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

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

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

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

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

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

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

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

Задайте этот аргумент только при создании стационарной платформы. Если вы принимаете решение задать траекторию платформы, используйте Trajectory аргумент.

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

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

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

Задайте этот аргумент только при создании стационарной платформы. Если вы принимаете решение задать ориентацию с течением времени, используйте Trajectory аргумент.

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

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

Размерности платформы и смещение источника, заданные как колодец. Структура содержит 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

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

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

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

Выходные аргументы

свернуть все

Сценарная платформа, возвращенная как Platform объект.

Введенный в R2021a