PT

What is PT Motion?

PT motion is the simplest streaming motion to use because it only requires an array of Positions and Time deltas. The controller is responsible for figuring out the velocity, and acceleration for each motion segment. MovePT currently supports two types of interpolation: SimplePT and BSpline. Other types of motion interpolation are Bessel, Spline, and BSpline2 which can be added by request.

Simple PT Interpolation

Output Example

The PT algorithm is good for very closely spaced points or low accelerations. It is a very simple algorithm, requiring very few calculations; therefore, it is fast. It works well with low performance motion systems. If the points are spaced too far apart, the motion will be rough like shown in the example below. The acceleration between each point is instantaneous. It is best to keep the point spacing within a few samples.

Trapezoidal move example:

p1[0] = 050; t1[0] = 1.0;

p1[1] = 400; t1[1] = 3.5;

p1[2] = 450; t1[2] = 1.0;

Note: The Position array is direction sensitive meaning you must put a (-) sign on negative numbers.

BSpline Interpolation

Output Example

BSpline is an interpolation is our recommended technique to blend transitions between segments. Use BSpline for smooth paths or systems with poor acceleration response.

Trapezoidal move example:

p[0] = 050; t[0] = 1.0;

p[1] = 400; t[1] = 3.5;

p[2] = 450; t[2] = 1.0;

Note: The Position array is direction sensitive meaning you must put a (-) sign on negative numbers.

MultiAxis PT Motion

All motion streaming methods can be used for coordinated motion on multiaxis objects. It is important that you setup your arrays appropriately for a multiaxis object. See the examples below on how to structure your arrays for Multi-Axis PT Motion.

EXAMPLE 1 - Three Axis Multi-Axis XYZ with MovePT

The position data for all three axes are combined into the array. The time array is shared for all axes. This is why you need 3x as many position points than you need time points. See the example below:

p[0] = 050; t[0] = 1; p[1] = 025; p[2] = 012.5;

p[3] = 400; t[1] = 3.5; p[4] = 200; p[5] = 100;

p[6] = 450; t[2] = 1; p[7] = 225; p[8] = 112.5;

1st Segment

2nd Segment

3rd Segment

Resulting Motion Plot

AxisX

p[0] = 050;

t[0] = 1;

p[2] = 400;

t[1] = 3.5;

p[4] = 450;

t[2] = 1;

AxisY

p[1] = 025;

t[0] = 1;

p[3] = 200;

t[1] = 3.5;

p[5] = 225;

t[2] = 1;

AxisZ

p[2] = 012.5;

t[0] = 1;

p[5] = 100;

t[1] = 3.5;

p[8] = 112.5;

t[2] = 1;

Last updated