поэтапный. Платформа

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

Описание

Система 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;

Больше о

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

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

Представленный в R2012a