Добавьте платформу к радарному сценарию
Создайте радиолокационный сценарий.
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
scenario
- Радиолокационный сценарийradarScenario
объектРадиолокационный сценарий, заданный как radarScenario
объект.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'ClassID',2
'ClassID'
- Идентификатор классификации платформы0
(по умолчанию) | неотрицательное целое числоИдентификатор классификации платформы, заданный как неотрицательное целое число. Можно задать собственную схему классификации платформ и назначить ClassID
значений на платформы по схеме. Значение 0
зарезервирован для объекта неизвестного или неназначенного класса.
Пример: 5
Типы данных: double
'Trajectory'
- Движение платформыkinematicTrajectory
| объекта waypointTrajectory
| объекта geoTrajectory
объектДвижение платформы, заданное как kinematicTrajectory
объект, a waypointTrajectory
объект, или geoTrajectory
объект. Объект траектории определяет временную эволюцию положения и скорости системы координат платформы, а также ориентацию системы координат платформы относительна система координат сценария.
Когда IsEarthCentered
свойство сценария установлено в false
, используйте kinematicTrajectory
или waypointTrajectory
объект. По умолчанию платформа использует стационарную kinematicTrajectory
объект.
Когда IsEarthCentered
свойство сценария установлено в true
, используйте geoTrajectory
объект. По умолчанию платформа использует стационарную geoTrajectory
объект.
'Position'
- Положение платформыЭто свойство доступно только для чтения.
Текущее положение платформы, заданное как трехэлементный вектор скаляров.
Когда IsEarthCentered
свойство сценария установлено в false
, положение задается как трехэлементное Декартово состояние [x
, y
, z
] в метрах.
Когда IsEarthCentered
свойство сценария установлено в true
, положение задается как трехэлементное геодезическое состояние: latitude
в степенях, longitude
в степенях и altitude
в метрах.
Задайте этот аргумент только при создании стационарной платформы. Если вы принимаете решение задать траекторию платформы, используйте Trajectory
аргумент.
Типы данных: double
'Orientation'
- Ориентация платформыЭто свойство доступно только для чтения.
Ориентация платформы, заданная как трехэлементный числовой вектор в степенях. Три элемента являются [yaw
, pitch
, roll
] углы поворота от локальной системы отсчета до каркаса кузова платформы.
Задайте этот аргумент только при создании стационарной платформы. Если вы принимаете решение задать ориентацию с течением времени, используйте Trajectory
аргумент.
Типы данных: double
'Signatures'
- Сигнатуры платформы{}
Сигнатуры платформы, заданные как массив ячеек из объектов сигнатуры или пустой массив ячеек ({}
). Значение по умолчанию является массивом ячеек, содержащим rcsSignature
объект со значениями свойств по умолчанию. Если у вас есть Sensor Fusion and Tracking Toolbox™, массив ячеек также может включать irSignature
(Sensor Fusion and Tracking Toolbox) и tsSignature
(Sensor Fusion and Tracking Toolbox) объекты. Массив ячеек содержит не более одного образцы для каждого типа объекта сигнатуры. Сигнатура представляет шаблону отражения или излучения платформы, такой как ее радарное сечение, сила цели или интенсивность ИК-излучения.
'Dimensions'
- размерности платформы и смещение источникаРазмерности платформы и смещение источника, заданные как колодец. Структура содержит Length
, Width
, Height
, и OriginOffset
кубоида, который аппроксимирует размерности платформы. The OriginOffset
- вектор положения от центра кубоида до начала координатной системы координат платформы. The OriginOffset
выражается в системе координат платформы. Например, если источник платформы находится в центре кубоидной задней грани, как показано на рисунке, установите OriginOffset
как [-L/2, 0, 0]
. Значение по умолчанию для Dimensions
- структура с нулем всех полей, которая соответствует модели точек.
Поля 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
'PoseEstimator'
- Оценка положения платформыinsSensor
объект (по умолчанию) | объект оценки положенияОценка положения платформы, заданная как объект оценки положения, такой как insSensor
объект. Оценщик положения определяет положение платформы относительно локальных координат сценария NED. Интерфейс любой оценки положения должен совпадать с интерфейсом insSensor
объект. По умолчанию платформа устанавливает свойства точности оценки положения на нуль.
'Emitters'
- Излучатели, установленные на платформеЭмиттеры, установленные на платформе, заданные как массив ячеек из таких объектов эмиттера, как radarEmitter
объекты. Если у вас есть Sensor Fusion and Tracking Toolbox, то массив ячеек может также включать sonarEmitter
(Sensor Fusion and Tracking Toolbox) объекты.
'Sensors'
- Датчики, установленные на платформеДатчики, установленные на платформе, задаются как массив ячеек из таких объектов датчика, как radarDataGenerator
объекты.
plat
- Сценарная платформаPlatform
объектСценарная платформа, возвращенная как Platform
объект.
insSensor
| Platform
| radarDataGenerator
| radarEmitter
| radarScenario
| rcsSignature
| waypointTrajectory
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.