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