phased.Platform

Движение платформы модели

Описание

phased.Platform Система object™ моделирует поступательное движение одной или нескольких платформ на пробеле. Платформа может быть целью, такой как транспортное средство или самолет, или гидролокатор или радарный передатчик и получатель. В модели принимается, что платформа подвергается поступательному движению при постоянной скорости или постоянном ускорении во время каждого шага симуляции. Положения и скорости всегда задаются в глобальной системе координат.

Смоделировать движущуюся платформу:

  1. Задайте и создайте свою платформу с помощью процедуры Конструкции.

  2. Неоднократно вызывайте step метод, чтобы переместить платформу вдоль пути, определенного phased.Platform свойства.

    Поведение step характерно для каждого объекта в тулбоксе.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

sPlat = phased.Platform создает объект платформной системы, sPlat. Объектные модели стационарная платформа с положением в начале координат и скорости обнуляются.

sPlat = phased.Platform(Name,Value) создает объект, sPlat, с каждым заданным набором имени свойства к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

sPlat = phased.Platform(pos,vel,Name,Value) создает объект платформы, sPlat, с InitialPosition установите на pos и Velocity установите на vel. Другие заданные имена свойства установлены в заданные значения. pos и vel аргументы только для значения. Аргументы только для значения не требуют указанного имени, но интерпретированы согласно их положениям аргумента. Чтобы задать любой аргумент только для значения, задайте все предыдущие аргументы только для значения.

Модель движения является или постоянной скоростью, постоянным ускорением или пользовательской траекторией. Можно выбрать одну из двух моделей движения с помощью MotionModel свойство.

Значение MotionModelИспользование
'Velocity'

Если вы устанавливаете VelocitySource свойство к 'Property', платформа перемещается с постоянной скоростью, определенной Velocity свойство. Можно задать InitialPosition свойство или оставляет это своему значению по умолчанию. Можно изменить настраиваемый Velocity свойство в любом шаге симуляции.

Когда вы устанавливаете VelocitySource свойство к 'Input port', можно ввести мгновенную скорость в качестве аргумента к step метод. Задайте исходное положение с помощью InitialPosition свойство или отпуск это как значение по умолчанию.

'Acceleration'

Когда вы устанавливаете AccelerationSource свойство к 'Property', платформа перемещается с постоянным ускорением, определенным Acceleration свойство. Можно задать InitialPosition и InitialVelocity свойства или оставляют их своим значениям по умолчанию. Можно изменить настраиваемый Acceleration свойство в любом шаге симуляции.

Когда вы устанавливаете AccelerationSource свойство к 'Input port', можно ввести мгновенное ускорение в качестве аргумента к step метод. Задайте InitialPosition и InitialVelocity свойства или оставляют их как свои значения по умолчанию.

'Пользовательский'Задайте движение платформы с помощью серии waypoints в CustomTrajectory свойство.

Свойства

MotionModel

Объектная модель движения

Объектная модель движения в виде 'Velocity', 'Acceleration', или 'Custom'. Когда вы устанавливаете это свойство на 'Velocity', платформа следует за постоянной траекторией скорости во время каждого шага симуляции. Когда вы устанавливаете это свойство на 'Acceleration', платформа следует за постоянной ускоряющей траекторией во время каждого шага симуляции. Когда вы устанавливаете свойство на 'Custom', движение платформы следует за последовательностью waypoints, заданного CustomTrajectory свойство. Объект выполняет кусочную кубичную интерполяцию на waypoints, чтобы вывести положение и скорость на каждом временном шаге.

Значение по умолчанию: 'Velocity'

InitialPosition

Исходное положение платформы

Исходное положение платформы в виде вектор-столбца 3 на 1 с действительным знаком в форме [x;y;z] или 3 с действительным знаком N матрицей, где N является количеством платформ. Каждый столбец принимает форму [x;y;z]. Модули положения являются метрами.

Значение по умолчанию: [0;0;0]

InitialVelocity

Начальная скорость платформы

Начальная скорость платформы в виде вектор-столбца 3 на 1 с действительным знаком в форме [vx;vy;vz] или 3 с действительным знаком N матрицей, где N является количеством платформ. Каждый столбец, принимающий форму [vx;vy;vz]. Скоростные единицы являются метрами в секунду.

Это свойство только применяется, когда вы устанавливаете MotionModel свойство к 'Velocity' и VelocitySource к 'Input port', или когда вы устанавливаете MotionModel свойство к 'Acceleration'.

Значение по умолчанию: [0;0;0]

VelocitySource

Источник скоростных данных

Источник скоростных данных в виде одного из 'Property' или 'Input port'. Когда вы устанавливаете значение этого свойства к 'Property', используйте Velocity свойство установить скорость. Когда вы устанавливаете это свойство на 'Input port', используйте входной параметр step метод, чтобы установить скорость.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Velocity'.

Значение по умолчанию: 'Property'

Velocity

Текущая скорость платформы

Задайте текущую скорость платформы как вектор-столбец с действительным знаком 3 на 1 в форме [vx;vy;vz] или 3 N матрицей с действительным знаком для нескольких платформ. Каждый столбец, принимающий форму [vx;vy;vz]. Скоростные единицы являются метрами/секунда. Размерность N является количеством платформ.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Velocity' и VelocitySource к 'Property'. Это свойство является настраиваемым.

Значение по умолчанию: [0;0;0]

AccelerationSource

Источник ускоряющих данных

Источник ускоряющих данных в виде одного из 'Property' или 'Input port'. Когда вы устанавливаете значение этого свойства к 'Property', задайте ускорение с помощью Acceleration свойство. Когда вы устанавливаете это свойство на 'Input port', используйте входной параметр step метод, чтобы установить ускорение.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Acceleration'.

Значение по умолчанию: 'Property'

Acceleration

Ускорение платформы

Задайте текущее ускорение платформы как вектор-столбец 3 на 1 с действительным знаком в форме [ax;ay;az] или 3 с действительным знаком N матрицей с каждым столбцом, принимающим форму [ax;ay;az]. Размерность N является количеством платформ. Ускоряющие модули являются метрами/секундой/секундой.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Acceleration' и AccelerationSource к 'Property'. Это свойство является настраиваемым.

Значение по умолчанию: [0;0;0]

CustomTrajectory

Пользовательская траектория waypoints.

Пользовательская траектория waypoints в виде M с действительным знаком-by-L матрица или M-by-L-by-N массив. M является количеством waypoints. L равняется или 4 или 7.

  • Когда L равняется 4, первый столбец указывает время, в которое измеряется положение платформы. 2-ми через 4-е столбцы являются измерения положения в x, y, и координаты z. Скорость выведена из измерений положения.

  • Когда L равняется 7, 5-ми через седьмые столбцы в матрице являются скоростные измерения в x, y, и координаты z.

Когда вы устанавливаете CustomTrajectory свойство к 3D массиву, количеству страниц, N, представляет количество платформ. Единицы измерения времени находятся в секундах, модули положения исчисляются в метрах, и скоростные единицы исчисляются в метрах в секунду.

Чтобы включить это свойство, установите MotionModel свойство к 'Custom'.

ScanMode

Механический режим сканирования

Механический режим сканирования для платформы в виде 'None', 'Circular'', или 'Sector', где 'None' значение по умолчанию. Когда вы устанавливаете ScanMode свойство к 'Circular', сканирование платформы по часовой стрелке 360 градусов постоянно в области азимутального направления осей ориентации платформы. Когда вы устанавливаете ScanMode свойство к 'Sector', платформа сканирует по часовой стрелке в азимутальном направлении в осях ориентации платформы в диапазоне, указанном AzimuthSpan свойство. Когда сканирование платформы достигает пределов промежутка, сканирование инвертирует направление и сканирует назад к другому пределу сканирования. Сканирование происходит в осях ориентации платформы.

InitialScanAngle

Начальный угол сканирования платформы

Начальный угол сканирования платформы в виде 1 N вектором, где N является количеством платформ. Сканирование происходит в системе локальной координаты платформы. InitialOrientationAxes задает исходную систему локальной координаты. В начале симуляции оси ориентации заданы InitialOrientationAxes вращаются углом, заданным в InitialScanAngle свойство. Значением по умолчанию является нуль. Модули в градусах. Это свойство применяется, когда вы устанавливаете ScanMode свойство к 'Circular' или 'Sector'.

Пример: [30 40]

AzimuthSpan

Промежуток азимута

Угол азимута охватывает в виде N-by-2 матрицу, где N является количеством платформ. Каждая строка матрицы указывает диапазон сканирования соответствующей платформы в форме [ScanAngleLowerBound ScanAngleHigherBound]. Значением по умолчанию является [-60 60]. Модули в градусах. Чтобы включить это свойство, установите ScanMode к 'Sector'.

AzimuthScanRate

Частота развертки азимута

Частота развертки азимута в виде 1 N вектором, где N является количеством платформ. Каждая запись в векторе является частотой развертки азимута для соответствующей платформы. Значением по умолчанию являются 10 степеней/секунда. Модули находятся в степенях/секунда. Чтобы включить это свойство, установите ScanMode свойство к 'Circular' или 'Sector'.

InitialOrientationAxes

Начальные оси ориентации платформы

Начальные оси ориентации платформы в виде 3х3 ортонормированной матрицы с действительным знаком для единой платформы или как 3 3 N матрицей с действительным знаком для нескольких платформ. Размерность N является количеством платформ. Когда матрица ориентации имеет размер 3х3, эти три столбца представляют оси системы локальной координаты (xyz). Когда матрица ориентации 3 3 N для каждого индекса страницы, получившаяся 3х3 матрица представляет оси системы локальной координаты.

Значение по умолчанию: [1 0 0;0 1 0;0 0 1]

OrientationAxesOutputPort

Выведите оси ориентации

Чтобы получить мгновенные оси ориентации платформы, установите это свойство на true и используйте соответствующий выходной аргумент при вызове step. Если вы не хотите получать оси ориентации платформы, установите это свойство на false.

По умолчанию: false

Методы

сбросСбросьте платформу к исходному положению
шагВыведите текущее положение, скорость и оси ориентации платформы
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

свернуть все

Создайте платформу в начале координат, имеющем скорость (100,100,0) метры в секунду. Симулируйте движение платформы для двух временных шагов, приняв, что время, истекшее для каждого шага, является одной секундой. Положение платформы обновляется после каждого шага.

sPlat = phased.Platform([0; 0; 0],[100; 100; 0]);
T = 1;

В первом вызове шага положение в его начальном значении.

[pos,v] = step(sPlat,T);
pos
pos = 3×1

     0
     0
     0

Во втором вызове шага, изменений положения.

[pos,v] = step(sPlat,T);
pos
pos = 3×1

   100
   100
     0

Начните с самолета, перемещающегося в 150 км/ч в кругу радиуса 10 км и убывающего одновременно на уровне 20 м/секунда. Вычислите движение самолета от его мгновенного ускорения в качестве аргумента к step метод. Установите начальную ориентацию платформы к идентичности, совпадающей с глобальной системой координат.

Настройте сценарий

Задайте исходное положение и скорость самолета. Самолет имеет наземную область значений 10 км и высоту 20 км.

range = 10000;
alt = 20000;
initPos = [cosd(60)*range;sind(60)*range;alt];
originPos = [1000,1000,0]';
originVel = [0,0,0]';
vs = 150.0;
phi = atan2d(initPos(2)-originPos(2),initPos(1)-originPos(1));
phi1 = phi + 90;
vx = vs*cosd(phi1);
vy = vs*sind(phi1);
initVel = [vx,vy,-20]';
platform = phased.Platform('MotionModel','Acceleration',...
    'AccelerationSource','Input port','InitialPosition',initPos,...
    'InitialVelocity',initVel,'OrientationAxesOutputPort',true,...
    'InitialOrientationAxes',eye(3));
relPos = initPos - originPos;
relVel = initVel - originVel;
rel2Pos = [relPos(1),relPos(2),0]';
rel2Vel = [relVel(1),relVel(2),0]';
r = sqrt(rel2Pos'*rel2Pos);
accelmag = vs^2/r;
unitvec = rel2Pos/r;
accel = -accelmag*unitvec;
T = 0.5;
N = 1000;

Вычислите траекторию

Задайте ускорение объекта, перемещающегося в круг в x-y плоскости. Ускорение является v^2/r к источнику.

posmat = zeros(3,N);
r1 = zeros(N);
v = zeros(N);
for n = 1:N
    [pos,vel,oax] = platform(T,accel);
    posmat(:,n) = pos;
    vel2 = vel(1)^2 + vel(2)^2;
    v(n) = sqrt(vel2);
    relPos = pos - originPos;
    rel2Pos = [relPos(1),relPos(2),0]';
    r = sqrt(rel2Pos'*rel2Pos);
    r1(n) = r;
    accelmag = vel2/r;
    accelmag = vs^2/r;
    unitvec = rel2Pos/r;
    accel = -accelmag*unitvec;
end

Отобразите итоговую ориентацию системы локальной координаты.

disp(oax)
   -0.3658   -0.9307   -0.0001
    0.9307   -0.3658   -0.0010
    0.0009   -0.0005    1.0000

Постройте траекторию и положение источника

posmat = posmat/1000;
figure(1)
plot3(posmat(1,:),posmat(2,:),posmat(3,:),'b.')
hold on
plot3(originPos(1)/1000,originPos(2)/1000,originPos(3)/1000,'ro')
xlabel('X (km)')
ylabel('Y (km)')
zlabel('Z (km)')
grid
hold off

Этот пример показывает

Создайте waypoints из параболического движения.

x0 = 100;
y0 = -150;
z0 = 0;
vx = 5;
vy = 10;
vz = 0;
ax = 1;
ay = -1;

t = [0:2:20];
x = x0 + vx*t + ax/2*t.^2;
y = y0 + vy*t + ay/2*t.^2;
z = z0*ones(size(t));
wpts = [t.' x.' y.' z.'];

Создайте объект платформы с движением, определенным с помощью waypoints.

pltfm = phased.Platform('MotionModel','Custom','CustomTrajectory',wpts);
tstep = .5;
nsteps = 40;
X = [];

Усовершенствуйте платформу во временных шагах один наполовину второй;.

for k = 1:nsteps
    [pos,vel] = pltfm(tstep);
    X = [X;pos'];    
end
plot(x,y,'o'); hold on
plot(X(:,1),X(:,2),'.')
hold off;

Больше о

развернуть все

Расширенные возможности

Введенный в R2011a