Path Motion Documentation


A path object manages coordinated multi-axis motion profiles. It is required when the motion profiles in an N-Dimensional space are required to follow a specific coordinated trajectory. Motion Paths are constructed with high level linear and arc segments and downloaded to the controller. The controller calculates the real-time individual axis profiles.


Generally, Path motion is used when the trajectory through space is more important than the final target position. Several different algorithms can be applied to convert the linear and arc segment path into an interpolated trajectory.


Path motion is a simpler approach compared to PVT algorithm as it still allows user to move their n number of axes from point to point without having to stop at all. Path motion also computes all the velocities which can save the user a lot of time.


The main RapidCode methods to perform path motion are as follows:


User first needs to define the Velocity, Acceleration & Deceleration values:

  • void VectorVelocitySet(double velocity)
  • void VectorAccelerationSet(double acceleration)
  • void VectorDecelerationSet(double deceleration)

User has to start a list using command below. Once list is created all the path points can be inserted:
  • void PathListStart(double* startPosition)

For smooth blending add the following method:
  • void PathBlendSet(bool blend)

User can fill the path list with points (method below is specifically for an arc):
  • void PathArcAdd(double* center, double angle)

User can fill the path list with points (method below is specifically to draw straight lines):
  • void PathLineAdd(double* position)

User will end the list once all the path points have been entered:
  • void PathListEnd()

User will now generate path motion:
  • void PathMotionStart()

The methods to change Time Slice are as follows (values to be set in seconds):
  • PathTimeSliceGet()
  • PathTimeSliceSet ()

User is currently provided with 100,000 points to command path motion using a three axes system. If a user has the Time Slice set to 10 milliseconds, application can move for following amount of time:


Total duration of continuous motion: 100,000 points * 0.01 seconds = 1000 seconds.


Please look at the image below for better explanation:

path1.jpg


User can change the time slice value. For example if a user is cutting many straight lines then it might be unnecessary to use such small values of Time Slice. Suggested values of Time Slice are 5ms to 100ms.


For example if user changes the time slice value to 30 milliseconds. User will have continuous motion for the following amount of time:


Total duration of continuous motion: 100,000 points * 0.03 seconds = 3000 seconds.


Please look at image for better explanation:

path2.jpg


Remember that these maximum numbers of points available are for three axes. As user adds more axes to the system the path point available for each axis decreases.


By default there are 100,000 points available for three axes:


2 axes in path motion would limit points available to 100,000 3 axes in path motion would limit points available to 100,000 4 axes in path motion would reduce points available to 75,000 5 axes in path motion would reduce points available to 60,000 6 axes in path motion would reduce points available to 50,000


RSI can change the maximum points available based on application demand. Increasing the points will increase the size of the library.


Please go through the sample application for a much better understanding regarding the implementation of Path object methods described above.


Bibliography: Some theory taken from http://support.motioneng.com