Motion Smoothing

From CPR Wiki

Motion Smoothing enables a continuous transition between motion commands.

While a smoothing value of 0% results in a full stop after each command higher values replace a part of the motion path with a curve so the robot can keep a constant velocity while changing direction. This is useful both for speeding up the process and for defining non-linear motion paths.

  • Smoothing 0%
  • Emoothing enabled
  • The Smoothing parameter defines the amount of smoothing

Command Types

Only commands of the same type are smoothed. This means that joint motion commands are smoothed with each other but not with linear commands and vice versa. Whenever the command type changes the robot shortly stops then starts the next motion. This also happens when motion commands are interrupted by non-motion commands (e.g. wait, conditions or setting outputs).

The following types of commands can be smoothed with each other:

  • Joint and Relative-Joint
  • Linear, Relative-Linear and Circular


The smoothing is limited by parameters that can be found in the robot configuration file. Find the tag "PathGeneration".


The number of commands that can be smoothed in succession is limited by the LookAhead parameter. This is necessary to limit the amount of calculations necessary for each path segment (i.e. avoid the motion to stop for seconds to "think").

By default the value is set around 5-20 commands. When you define long paths you may notice the robot occasionally stopping although the motion should be smoothed. If this is relevant to your application you can try to increase the LookAhead parameter in line PathGeneration of the Robot Configuration File (both on the PC and embedded robot control). We suggest not using values higher than 50-100.


The parameters SmoothDistCart and SmoothDistJoint define the distance of a path that will be smoothed at 100%. SmoothDistCart is in mm, SmoothDistJoint in percent.