Blend between Function Blocks (Waypoint Queue)¶
The Waypont Queue is a very advanced drag&bot functionality to queue waypoints of multiple Function Blocks before executing them together. This enables chaining of movements for shorter cycle times and a more fluent program flow.
Movements in drag&bot are usually executed directly with the Function Block execution. This leads to the issue that blending between different Function Blocks is not possible and there is a short delay in the robot movement between Function Blocks. The following picture shows an example program for this case.
Configuring a blending value for the last waypoint has no effect and is ignored by the robot controller.
Activated Waypoint Queue¶
However it is still possible to blend movements between different Function Blocks. This feature is called Waypoint Queue and provided by the following Function Blocks.
- Move Cartesian
- Move Joints
- Move Joints - 7 Axes
If the option Add to Waypoint Queue is activated in one of these Move Function Blocks, the movement is not executed directly, but the waypoints are added to a queue in the background. Because of this configured blending values are respected for the last waypoint and blending can be performed later.
After buffering the waypoints, the Function Blocks will finish at once without robot movement and the program flow continues directly.
The buffered waypoints can then be executed with the Function Block Waypoint Queue - Move. Internally they are sent as one trajectory to the robot now. The function block is usually placed at a location where the positioning of the robot is functional for the application, e.g. before the robot opens or closes the gripper. The initial example from above is shown below for the case with an activated Waypoint Queue.
The queued waypoints in the buffer are cleared
- after the movement has been executed,
- on each program start or
- with the Function Block Waypoint Queue - Clear.
The Waypoint Queue allows the following possibilities, which are not available when the movements are executed directly:
- Blending between several Move Cartesian Function Blocks.
- Blending between Move Cartesian and Move Joints Function Blocks.
- Blending across Subprograms and control Function Blocks, like Condition, etc.
This results in a reduced cycle time and a more fluent program movement. A more advanced program example of Waypoint Queue usage is shown below.
In the example, the Move Joints A or the Move Joints B Function Block is executed, depending on the digital I/O state. Assuming blending is configured for every waypoint in each of the Function Blocks, the entire trajectory Move Cartesian -> Move Joints A/B -> Move Cartesian will be executed with blending without any intermediate movement stops.
The Waypoint Queue is a very advanced feature, which changes the robot movement compared to the obvious program flow. When used, its highly recommended to develop the program first without the Waypoint Queue, then test this program and activate the Waypoint Queue at the specific locations where it is required later for optimization of cycle times.
Be aware that movement Function Blocks without activated Waypoint Queue are still executed directly. Mixing Function Blocks with and without activated Waypoint Queue will result in a completely different execution of the movement order. This might lead to crashes in the robot cell.
Also be aware that using specific Function Blocks alongside the motion queue might change the movement behavior. Especially the following Function Blocks do not respect the waypoint queue. They change the program behavior when executed between the Move Function Block and the Waypoint Queue - Move Function Block, compared to a direct waypoint execution.
- Move Cartesian Relative
- Get Flange Pose
- Get TCP Pose
- Get Joint States
- Change Robot TCP
Therefore these Function Blocks must not be used in between Move Function Blocks with enabled flag Add to Waypoint Queue.