Main Content

step

System object: phased.Platform
Namespace: phased

Output current position, velocity, and orientation axes of platform

Syntax

[Pos,Vel] = step(sPlat,T)
[Pos,Vel] = step(sPlat,T,V)
[Pos,Vel] = step(sPlat,T,A)
[Pos,Vel,Laxes] = step(___)

Description

Note

Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.

[Pos,Vel] = step(sPlat,T) returns the current position, Pos, and velocity, Vel, of the platform. The method then updates the position and velocity. When the MotionModel property is set to 'Velocity' and the VelocitySource property is set to 'Property', the position is updated using the equation Pos = Pos + Vel*T where T specifies the elapsed time (in seconds) for the current step. When the MotionModel property is set to 'Acceleration' and the AccelerationSource property is set to 'Property', the position and velocity are updated using the equations Pos = Pos + Vel*T + 1/2Acl*T^2 and Vel = Vel + Acl*T where T specifies the elapsed time (in seconds) for the current step.

[Pos,Vel] = step(sPlat,T,V) returns the current position, Pos, and the current velocity, Vel, of the platform. The method then updates the position and velocity using the equation Pos = Pos + Vel*T where T specifies the elapsed time (in seconds) for the current step. This syntax applies when you set the MotionModel property to 'Velocity' and the VelocitySource property to 'Input port'.

[Pos,Vel] = step(sPlat,T,A) returns the current position, Pos, and the current velocity, Vel, of the platform. The method then updates the position and velocity using the equations Pos = Pos + Vel*T + 1/2Acl*T^2 and Vel = Vel + Acl*T where T specifies the elapsed time (in seconds) for the current step. This syntax applies when you set the MotionModel property to 'Acceleration' and the AccelerationSource property to 'Input port'.

[Pos,Vel,Laxes] = step(___) returns the additional output Laxes as the platform's orientation axes when you set the OrientationAxesOutputPort property to true.

Note

The object performs an initialization the first time the object is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.

Input Arguments

sPlat

Platform

Platform, specified as a phased.Platform System object.

T

Step time

Step time, specified as a real-valued scalar. Units are seconds

V

Platform velocity

Platform velocity, specified as a real-valued 3-by-N matrix where N is the number of platforms to model. This argument applies when you set the MotionModel property to 'Velocity' and the VelocitySource property to 'Input port'. Units are meters per second.

A

Platform acceleration

Platform acceleration, specified as a real-valued 3-by-N matrix where N is the number of platforms to model. This argument applies when you set the MotionModel property to 'Acceleration' and the AccelerationSource property to 'Input port'. Units are meters per second-squared.

Output Arguments

Pos

Current platform position

Current position of platform, specified as a real-valued 3-by-1 column vector in the form of [x;y;z] or a real-valued 3-by-N matrix where N is the number of platforms to model. Each column takes the form [x;y;z]. Units are meters.

Vel

Current platform velocity

Current velocity of platform, specify as a real-valued 3-by-1 column vector in the form of [vx;vy;vz] or a real-valued 3-by-N matrix where N is the number of platforms to model. Each column taking the form [vx;vy;vz]. Velocity units are meters per second.

Laxes

Current platform orientation axes

Current platform orientation axes, returned as real-valued 3-by-3-by-N matrix where N is the number of platforms to model. Each 3-by-3 submatrix is an orthonormal matrix. This output is enabled when you set the OrientationAxesOutputPort property to true. The current platform axes rotate around the normal vector to the path of the platform.

Examples

expand all

Create two moving platforms. The first platform, starting at the origin, has a velocity of (100,100,0) meters per second. The second starts at (1000,0,0) meters and has a velocity of (0,200,0) meters per second. Next, specify different local coordinate axes for each platform defined by rotation matrices. Setting the OrientationAxesOutputPort property to true lets you retrieve the local coordinate axes at each step.

Set up the platform object.

pos0 = [[0;0;0],[1000;0;0]];
vel0 = [[100;100;0],[0;200;0]];
R1 = rotx(30);
R2 = roty(45);
laxes(:,:,1) = R1;
laxes(:,:,2) = R2;
sPlat = phased.Platform(pos0,vel0,...
    'OrientationAxesOutputPort',true,...
    'InitialOrientationAxes',laxes);

Simulate the motion of the platform for two time steps, assuming the time elapsed for each step is one second. The position of the platform is updated after each step.

T = 1;

At the first step, the position and velocity equal the initial values.

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

           0        1000
           0           0
           0           0

lax
lax = 
lax(:,:,1) =

    1.0000         0         0
         0    0.8660   -0.5000
         0    0.5000    0.8660


lax(:,:,2) =

    0.7071         0    0.7071
         0    1.0000         0
   -0.7071         0    0.7071

At the second step, the position is updated.

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

         100        1000
         100         200
           0           0

lax
lax = 
lax(:,:,1) =

    1.0000         0         0
         0    0.8660   -0.5000
         0    0.5000    0.8660


lax(:,:,2) =

    0.7071         0    0.7071
         0    1.0000         0
   -0.7071         0    0.7071

Find the trajectory of a platform which starts with some initial upward velocity but accelerates downward with a constant gravitational acceleration of -9.8 m/sec/sec. Update the platform position and velocity every two seconds.

Construct the platform System object™.

platform = phased.Platform('MotionModel','Acceleration','InitialPosition',[2000,100,3000]',...
    'InitialVelocity',[300,150,20]','AccelerationSource','Property','Acceleration',[0,0,-9.8]');
T = 2;
N = 100;

Call the step method for 100 time samples.

posmat = zeros(3,N);
for n = 1:N
    [pos,vel] = platform(T);
    posmat(:,n) = pos;
end

Plot the trajectory.

plot3(posmat(1,:),posmat(2,:),posmat(3,:),'b.')
axis equal
xlabel('m')
ylabel('m')
zlabel('m')
grid