APIs, concepts, guides, and more
Point-to-Point Motion

Perform point-to-point motion with an Axis or MultiAxis.

🔹 What is Point-to-Point Motion?

Point-to-Point motion allows us to move an Axis or MultiAxis system to a specific point. There are two different velocity profiles available for this type of motion: Trapezoidal and S-Curve.

🔹 Trapezoidal Motion

Velocity Acceleration
Image Image

Trapezoidal motion accelerates each axis at the given rate until it reaches the specified velocity. When each axis approaches the specified location, it decelerates at the given rate to a stop. All accelerations and decelerations are constant, as shown by the figure above on the right. The above-left diagram shows a trapezoidal motion profile.

🔹 S-Curve Motion

Velocity Acceleration
Image Image

S-Curve motion also moves each axis to specific points, however, each axis is accelerated at a non-constant rate determined by the jerk percentage. A motion profile with 100% jerk percent is shown above on the left. A jerk percentage of 0% is the same as a trapezoidal motion profile. At 100% jerk, the acceleration and deceleration are never constant, as shown in the above right figure.

Note
You can change the velocity, acceleration, and deceleration of a MoveSCurve that is executing on the fly simply by calling the function again with different parameters.

🔹 MultiAxis Synchronized Motion

Depending on the configuration, synchronization can occur at the start, end, or both. See MotionAttributeMaskOnSet. The default configuration is to synchronize at the start and end of the motion.

Sync Start Sync End Description
All the axes start at the same time.
All the axes stop at the same time.
All the axes start and stop at the same time; the faster axes are slowed down to match the time of the slowest axis. Axes whose motion completes too quickly are slowed down so that all axes will complete their motion at the same time.

Image

Image

Image

❓ FAQ

  • Can you overwrite a motion command that is in progress?
    Yes, by default, calling any of the point-to-point motion methods will cause the currently executing trajectory to be modified on-the-fly, with any combination of target position, velocity, acceleration, deceleration, and jerk percent changes as specified in the new command.
  • Can I append many point-to-point moves without a MotionDoneWait() between each one? Can I change the default behavior of point-to-point moves so they don't modify the current trajectory on-the-fly, but instead queue them up?
    Yes, use the APPEND motion attribute. See MotionAttributeMaskOnSet and RSIMotionAttrMask::RSIMotionAttrMaskAPPEND.
  • Can you blend a point to point move with a velocity move?
    Yes, you can use a point-to-point motion method overload that takes a specified final velocity parameter so when it gets to its target position, it will be moving at the specified velocity.

🔹 Subsections

  • Absolute Motion : Use Absolute Motion to move directly to a specified position, ensuring the axis reaches a defined destination regardless of its previous position.
  • Relative Motion : Use Relative Motion to move an axis a specified distance from its current position, providing flexibility to adjust position based on current location rather than a fixed point.
  • S-Curve Motion : S-Curve Motion offers a smoother acceleration profile compared to Trapezoidal Motion, utilizing a "Jerk Percent" parameter to fine-tune how acceleration phases are shaped, allowing precise control over motion transitions and peak accelerations.