APIs, concepts, guides, and more
Streaming Motion

Stream data points for detailed motion control on single or multiple axes, using profiles tailored for precision and complexity. Adjust your motion dynamically.

πŸ”Ή What is Streaming Motion?

Streaming point motion is when the controller is given a stream of data points which represent an entire motion profile. The controller executes the data points with the given times, down to the sample period. It can be used for a single Axis or several axes at the same time using a MultiAxis object. This document describes all the different ways to do streaming point motion and the advantages and disadvantages of each.

πŸ”Ή Types of Streaming Motion

PT Motion Type

RSIMotionTypePT is recommended only when you are using time values equal to one controller sample period. The position for a PT move is continuous. However, the velocity is not continuous. Because of the discontinuity of velocity, PT motion should only be used when the time between points are small; otherwise spline (Bessel, Spline, BSpline, and BSpline2) or PVT motion should be used.

PT Motion – Position vs. Time

PT Motion – Velocity vs. Time

Bessel Motion Type

With RSIMotionTypeBESSEL motion, a user must specify the position and time values for a given motion at multiple points. This allows a user to create a smoother motion, but without the need to specify velocity values at each point.

For Bessel type motion, the velocity is continuous, but the acceleration is not. The velocity of Bessel type motion tends to be less smooth than the other spline motion types (Spline, B-Spline, and B-Spline2).

Bessel Motion – Position vs. Time

Bessel Motion – Velocity vs. Time

Spline Motion Type

With RSIMotionTypeSPLINE, a user must specify the position and time values for a given motion at multiple points. This allows a user to create a smoother motion, but without the need to specify velocity values at each point.

For Spline type motion, the velocity and acceleration are continuous. However, the accelerations at the beginning and end of a motion are not discontinuous. Also, the velocity may be discontinuous at the end of motion – however, this can be easily remedied by specifying the final point twice.

Spline Motion – Position vs. Time

Spline Motion – Velocity vs. Time

B-Spline Motion Type

With RSIMotionTypeBSPLINE (AKA Basis Spline) type motion, a user must specify the position and time values for a given motion at multiple points. This allows a user to create a smoother motion, but without the need to specify velocity values at each point.

With B-Spline motion, the generated trajectory is a 3rd order B-Spline. The velocity and acceleration are continuous. However, the accelerations at the beginning and end of motion are not discontinuous. Also, it is important to note that points specified to B-Spline motion are control pointsβ€”the trajectory of the axis usually does not pass through these points; the trajectory only approaches the points.

B-Spline Motion – Position vs. Time

B-Spline Motion – Velocity vs. Time

B-Spline2 Motion Type

With RSIMotionTypeBSPLINE2, a user must specify the position and time values for a given motion at multiple points. This allows a user to create a smoother motion, but without the need to specify velocity values at each point.

With B-Spline2 motion, the generated trajectory is a 2nd order B-Spline. The velocity is continuous throughout motion, but does have a velocity jump at the start of motion. Thus it is best if the first several points in a B-Spline2 move are closely spaced in time. The acceleration is constant between control points, but discontinuous at the start and end points. Also, it is important to note that points specified to B-Spline2 motion are control pointsβ€”the trajectory of the axis usually does not pass through these points; the trajectory only approaches the points.

B-Spline2 Motion – Position vs. Time

B-Spline2 Motion – Velocity vs. Time

PVT Motion

RSIMotionTypePVT is more complicated because it requires an array of Positions, Velocities, and Time deltas. The controller calculates the acceleration for each segment. Each velocity value specifies the target velocity of the axis at the given time, not the velocity used to travel between points. The average velocity between points is determined only by the difference in position and time. PVT motion gives users more flexibility and control over the motion path.

The position and velocity for a PVT move are continuous. Acceleration is continuous between points but may be discontinuous at the points themselves. Jerk holds a constant value between points and is discontinuous at each point.

The effect of the velocity term depends on the time between points. At the extreme (using 1-sample time deltas) the resulting motion is equivalent to PT.

See PVT Streaming Motion for more information.

PVT Motion – Position vs. Time

PVT Motion – Velocity vs. Time

PTF and PVTF Motion with Feedforward

MovePTF and MovePVTF extend PT and PVT motion types by adding feedforward control. The feedforward values are raw control output values (typically 16-bit for torque or 32-bit for velocity/position) that are applied directly to the control output, providing additional control authority beyond the PID controller.

Common uses for feedforward:

  • Gravity compensation for vertical axes
  • Friction compensation
  • Model-based control and torque feedforward
  • Dynamic load compensation in robotic applications

The feedforward values are linearly interpolated between points during multi-sample segments. See PT Streaming Motion and PVT Streaming Motion for detailed PTF and PVTF documentation.

PVAJT Motion

This Streaming Motion is a lot more complicated to use because it requires an array of Positions, Velocities, Acceleration, Jerk, and Time deltas. The controller is not responsible for figuring out anything because it streams the arrays straight to the frame buffer. This makes it very flexible and gives users absolute control over the motion path. The controller does not do any interpolation or calculations because everything it needs is calculated beforehand in the PVAJT arrays. PVAJT motion must all be provided in advance and cannot be appended to.

Like PVT motion, at the extreme (using 1-sample time deltas) the resulting motion is equivalent to PT.

See PVAJT Streaming Motion for more information.

MultiAxis Streaming

All motion streaming methods can be used for coordinated motion on MultiAxis objects. It is important that you set up your arrays appropriately for a MultiAxis object. See the examples in the different streaming method pages on how to structure your arrays for MultiAxis motion.

πŸ”Ή Summary of Streaming Point Motion Types

Motion Type Must specify entire move Segments may be appended Passes through control points Feedforward Support
PT βœ… βœ…
PTF βœ… βœ… βœ…
PVT βœ… βœ…
PVTF βœ… βœ… βœ…
Bessel βœ… βœ…
Spline βœ… βœ…
B-Spline βœ…
B-Spline2 βœ…
PVAJT βœ…
Motion Type Continuous Velocity Velocity Jump at Start of Motion Velocity Jump at End of Motion Continuous Acceleration Acceleration Jump at Start of Motion Acceleration Jump at End of Motion
PT βœ… βœ… βœ… βœ…
PTF βœ… βœ… βœ… βœ…
PVT βœ… βœ… βœ…
PVTF βœ… βœ… βœ…
Bessel βœ… βœ… βœ…
Spline‑ βœ… βœ… βœ… βœ…
B-Spline βœ… βœ… βœ… βœ…
B-Spline2 βœ… βœ… βœ…
Note
† - In general, the acceleration is not continuous and acceleration jumps do occur at the beginning and end of motion for PVT moves. However, PVT moves are very flexible and it is possible to specify a move where the acceleration is continuous and no acceleration jumps occur at the beginning and end of motion.
‑ - The velocity jump at the end of a Spline move may be avoided by specifying the final point twice.

❓ FAQ

Does the column order of the motion points given to streaming methods (ex: MovePT) corresponds to the order in which the individual Axis objects were added to the MultiAxis?

Correct. The order in which you add the points will correspond to the order in which you added the axes to the MultiAxis object.

Why do PVT and PVAJT sometimes behave like PT motion?

The effect of velocity, acceleration, and jerk depends on the time between points. Larger time deltas increase the influence of the higher-order terms, while at the opposite extreme (using 1-sample time deltas) the motion is equivalent to PT.

πŸ”Ή Subsections

  • PT Streaming Motion : PT motion is the simplest streaming motion requiring only Positions and Time deltas arrays.
  • PVT Streaming Motion : Stream arrays of Positions, Velocities, and Time deltas for precise control over motion paths. The controller calculates acceleration for each segment, offering flexibility and control.
  • PVAJT Streaming Motion : Stream arrays for precise control over Positions, Velocities, Acceleration, Jerk, and Time deltas directly to the frame buffer. Achieve absolute control over the motion path.