Объект Platform, принадлежащий радарному сценарию
Platform
задает объект платформы, принадлежащий радарному сценарию.
Можно создать Platform
объекты с помощью platform
функция radarScenario
объект.
PlatformID
— Заданный сценарием идентификатор платформыЭто свойство доступно только для чтения.
Заданный сценарием идентификатор платформы в виде положительного целого числа. Сценарий автоматически присваивает PlatformID
значения на каждую платформу, начиная с 1 для первой платформы и постепенного увеличения 1 для каждой новой платформы.
Типы данных: double
ClassID
— Идентификатор классификации платформ
(значение по умолчанию) | неотрицательное целое числоИдентификатор классификации платформ в виде неотрицательного целого числа. Можно задать собственную систему классификации платформы и присвоить ClassID
значения на платформы согласно схеме. Значение 0
резервируется для объекта неизвестного или неприсвоенного класса.
Пример 5
Типы данных: double |
single
Position
— Текущее положение платформыЭто свойство доступно только для чтения.
Текущее положение платформы в виде трехэлементного числового вектора.
Когда IsEarthCentered
свойство сценария установлено в false
, позиция выражена как Декартовы координаты [x
Y
Z
] в метрах.
Когда IsEarthCentered
свойство сценария установлено в true
, позиция выражена как геодезические координаты [latitude
, longitude
, altitude
], где latitude
и longitude
в градусах и altitude
исчисляется в метрах.
Типы данных: double
Orientation
— Текущая ориентация платформыЭто свойство доступно только для чтения.
Текущая ориентация платформы в виде трехэлементного числового вектора в градусах. Ориентация описывается как [yaw
Тангаж
Крен
] углы поворота от локальной ссылки структурируют к системе координат тела платформы.
Типы данных: double
Dimensions
— Размерности платформы и источник возмещеныРазмерности платформы и источник возмещены в виде структуры. Структура содержит Length
width
высота
, и OriginOffset
из кубоида, который аппроксимирует размерности платформы. OriginOffset
радиус-вектор от центра кубоида до начала координат системы координат координаты платформы. 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
объект, 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) объекты. Массив ячеек содержит самое большее один экземпляр каждого типа объекта подписи. Подпись представляет шаблон отражения или эмиссии платформы, такой как ее радарное поперечное сечение, целевая сила или интенсивность IR.
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 м в течение одной секунды. Это выполняется путем размещения waypoints в круговой форме, гарантирования, что первые и последние waypoint являются тем же самым.
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
Постройте waypoints для обеих платформ.
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)');
Создайте платформу для маленького 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
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.