platform

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

rs = radarScenario;

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

plat = platform(rs);

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

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)');

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

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

Задайте траекторию quadcopter как круг на 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 объект, waypointTrajectory объект или geoTrajectory объект. Объект траектории задает эволюцию времени положения и скорость системы координат платформы, а также ориентацию системы координат платформы относительно системы координат сценария.

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

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

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

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

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

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

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

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

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

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

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

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

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

Размерности платформы и источник возмещены в виде структуры. Структура содержит Lengthwidthвысота, и OriginOffset из кубоида, который аппроксимирует размерности платформы. OriginOffset радиус-вектор от центра кубоида до начала координат системы координат координаты платформы. 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Размерность кубоида вдоль направления x0
WidthРазмерность кубоида вдоль направления y0
HeightРазмерность кубоида вдоль направления z0
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