4.1. Blending

Blending enables continuous motion execution by allowing smooth transitions between consecutive motion commands without stopping at intermediate target positions. The blending behavior is defined retroactively, meaning that the blending parameters of a motion command determine how the transition from the preceding command is executed.

Each motion command can participate in blending with both the preceding and the subsequent command. As a result, the maximum allowable blending radius is constrained to half of the shorter of the two adjacent motion segments.

Basic Requirements

To perform blending, the following basic requirements must be met:

  • There must be two segments between which blending can be performed.

  • Both segments must contain movement. Blending is not possible if either segment has no movement.

  • A blending parameter greater than 0.0 must be set.

4.1.1. Blending Overview

The following table summarizes the key differences between PTP blending (see PTP Blending), Cartesian blending (see Cartesian Blending), and PTP-LIN blending (see PTP-LIN Blending):

Table 66 Comparison of blending types

Aspect

PTP Blending

Cartesian Blending

PTP-LIN Blending

Motion space

Joint space

Cartesian space

Both (joint and Cartesian)

Blend mechanism

Coordinate adjustment per axis

5th-order polynomial insertion

Combined segment with superposition of subsegments

Intermediate segment

None

Polynomial segment

Combined segment (COMBINED_JOINT_CARTESIAN)

Path shortening

Per axis, only on direction reversal

Translational and rotational

Segments cut at blending point; applied independently per segment

Transition velocity

Per axis, only for same-direction axes

Continuous via polynomial

Subsegments transition through standstill; resulting velocity from superposition

4.1.2. Cartesian Blending

For Cartesian motions, blending is applied to both translation and orientation. During translational blending, a fifth-order polynomial is inserted as an intermediate segment between consecutive motion segments to ensure a continuous path (see Fig. 14). As a result, the robot motion remains continuous and does not stop at the segment transition points.

Fig. 13 illustrates the original Cartesian path with discrete motion segments, while Fig. 14 shows the same path with blending applied. The blending regions between consecutive segments are highlighted to indicate where the transition is smoothed.

blending_cartesian_path

Fig. 13 Cartesian path

blending_cartesian_path_with_blending

Fig. 14 Cartesian path with Cartesian blending

Blending Segment

As mentioned earlier, during translational blending, a fifth-order polynomial is inserted as an intermediate segment. The term ‘fifth-order’ refers to the geometry of the path and not to the motion profiles for velocity or acceleration.

If there is no translational path length, pure rotations are blended, meaning there is no translational movement within the blending segment.

The blending segment adopts the velocity and acceleration settings from the adjacent segments. In each case, the lower value of the adjacent segments is used.

In addition, the fifth-order polynomial segment may further reduce the maximum velocity based on it’s curvature.

Cartesian Blending Parameters

The Cartesian blending parameter defines how translation and rotation are blended between consecutive motion segments. It can be specified either in absolute terms \([\mathrm{m}]\) (only for translational blending) or as a percentage \([\mathrm{\%}]\).

Absolute Blending

For absolute blending, the parametrized value \([\mathrm{m}]\) is limited to half of the path length of the shorter segment and can only be applied if the segment has a translatory path component. The rotational blending is automatically scaled to match the translational blending radius.

Percentage Blending

Percentage blending always refers to the half of the shorter segment’s path length. In this process, translation and rotation are considered separately.

Blending radius calculation

The blending parameter is internally converted to a blendingfactor in the range \([0.0 \ldots 1.0]\). Based on this, the blending radius is calculated as follows:

\[\begin{equation*} \Delta s_{Blend} = \frac{1}{2} \cdot \min \left( \|\Delta s_I\|, \|\Delta s_{II}\| \right) \cdot \text{blendingfactor} \end{equation*}\]

Note

Blending parameters that exceed 100% or are longer than the blendable path length are limited to the maximal blendable path length.

Fig. 15 illustrates the blending radii applied to consecutive motion segments. Segment II is the segment with the shorter path length. Therefore, the maximum blending radius is half the path length of Segment II.

blending_cartesian_radius

Fig. 15 Blending radius for Cartesian blending

Examples for Cartesian Blending

Fig. 16 illustrates the Cartesian path from Fig. 13 with different blending parameter settings. Five cases are shown: no blending (0 %), 25 %, 50 %, 75 % and 100 % blending. As the blending parameter increases, the transitions between consecutive segments become progressively smoother, resulting in a more continuous motion path.

blending_cartesian_example

Fig. 16 Example for Cartesian blending with different blending parameters

Edge Cases for Cartesian Blending

This section highlights specific situations in Cartesian blending that require special consideration. These cases demonstrate how the blending behavior adapts under unusual or limiting conditions, ensuring predictable motion even in non-standard scenarios.

Blending in the Opposite Direction

When consecutive motion segments are oriented in opposite directions, the path is shortened according to the blending radius. In this case, no transition velocity is applied between the segments.

Blending in the Same Direction

When consecutive motion segments are heading in the same direction, blending can be used to achieve a transition velocity without coming to a standstill between the segments. Even in this case, a valid blending parameter must still be set.

Blending Parameter

For Cartesian blending, a blending parameter of more than 2.0% must currently be set. Otherwise no blending is performed, even if the consecutive segments are aligned in the same direction. The motion follows the original discrete path without smoothing at the segment transitions.

Blending Between Pure Translation and Pure Rotation

It is possible to blend between segments in which, for example, one moves purely translational and the other moves purely rotational.

4.1.3. PTP Blending

For point-to-point (PTP) motions, blending is calculated individually for each axis. The blending coordinate for each axis corresponds to the joint angle:

\[\begin{equation*} \Delta q_i = q_{\mathrm{target},i} - q_{\mathrm{start},i} \end{equation*}\]

The blending behavior of each axis depends on the motion direction between consecutive segments and can be categorized into three cases: same direction, opposite direction, or no motion in at least one segment.

  • When the axis continues in the same direction across consecutive segments, it can maintain a transition velocity greater than zero.

  • In contrast, if the axis reverses direction between consecutive segments, it must stop and change motion direction (transition velocity = 0), but the path can be blended and shortened.

  • If the axis does not move in at least one segment, no blending is performed for that axis.

Fig. 17 illustrates blending in joint space, highlighting the differences between same and opposite motion directions.

blending_PTP

Fig. 17 PTP blending in joint space

PTP Blending in Same Direction

In contrast to Cartesian blending, a blending parameter of 0.0% is currently sufficient in PTP to achieve a transition velocity for axis in the same direction.

PTP Blending in Opposite Direction

When blending consecutive PTP commands in opposite directions, the maximum blending radius for each axis corresponds to half of the path length of the shorter segment, similar to the concept of the blending radius described for Cartesian blending, see Cartesian Blending Parameters. Mathematically, the joint space blending distance is calculated as

\[\begin{equation*} \Delta q_{Blend} = \frac{1}{2} \cdot \min \big( |\Delta q_I|, |\Delta q_{II}| \big) \cdot \text{blendingfactor} \end{equation*}\]

Fig. 18 illustrates the path lengths of two consecutive PTP commands, \(\Delta q_I\) and \(\Delta q_{II}\).

blending_PTP_path_length

Fig. 18 Path length of PTP commands

Unlike Cartesian blending, no intermediate segment is inserted in joint space. Instead, the start and target coordinates are adjusted directly according to the calculated blending radius. The adjusted coordinates are computed as

\[\begin{split}\begin{equation*} \begin{aligned} q_{\mathrm{target},I} &= q_{\mathrm{start},I} + \Delta q_I - \mathrm{sgn}(\Delta q_I) \cdot \Delta q_{Blend} \\ q_{\mathrm{start},II} &= q_{\mathrm{target},I} \end{aligned} \end{equation*}\end{split}\]

Fig. 19 illustrates the blending radius in joint space, showing the positions of \(q_{\mathrm{start},I}\), \(q_{\mathrm{target},I}\), \(q_{\mathrm{start},II}\), and \(q_{\mathrm{target},II}\) along the motion path.

blending_PTP_radius_joint_space

Fig. 19 PTP blending radius in joint space

Examples for PTP Blending

The following example demonstrates the different cases of PTP blending. Two consecutive commands are considered. For axis 1 (A1), the motion continues in the same direction, allowing a transition velocity to be applied; in this case, the path is not shortened. For axis 2 (A2), the motion reverses direction between the two commands. The axis must stop at the segment boundary, but the path is shortened according to the blending radius.

The joint positions for the two commands are as follows:

Table 67 Example Joint positions

Axis

PTP I

PTP II

A1

Start: \(0 \mathrm{°}\), Target: \(45 \mathrm{°}\)

Start: \(45 \mathrm{°}\), Target: \(90 \mathrm{°}\)

A2

Start: \(-90 \mathrm{°}\), Target: \(-60 \mathrm{°}\)

Start: \(-60 \mathrm{°}\), Target: \(-80 \mathrm{°}\)

This results in the following blending cases:

  • Axis 1 moves in the same direction, so no path shortening occurs.

  • Axis 2 moves in opposite directions, with PTP I contributing \(30 \mathrm{°}\) and PTP II \(-20 \mathrm{°}\) to the blended path. The resulting blending distance is calculated as

    \[\Delta q_{Blend} = \frac{1}{2} \cdot \min \big( |+30|, |-20| \big) \cdot \text{blendingfactor}\]

    Depending on the selected blending factor, the path shortening is adjusted accordingly: 100 % blending corresponds to a 10° shortening, while 50 % blending results in a 5° shortening.

The behavior under different blending parameters is illustrated in the figures below. Example 1, see Fig. 20, shows 0% PTP blending, with a transition velocity applied in Axis 1 and no position blending in Axis 2 (0°). Example 2 in Fig. 21 shows 50% PTP blending, with a transition velocity in Axis 1 and a 5° position blending in Axis 2. And Example 3, see Fig. 22, shows 100% PTP blending, with a transition velocity in Axis 1 and a 10° position blending in Axis 2.

blending_PTP_example_0

Fig. 20 0% PTP blending, with a transition velocity applied in Axis 1 and no position blending in Axis 2 (0°)

blending_PTP_example_50

Fig. 21 50% PTP blending, with a transition velocity in Axis 1 and a 5° position blending in Axis 2

blending_PTP_example_100

Fig. 22 100% PTP blending, with a transition velocity in Axis 1 and a 10° position blending in Axis 2

4.1.4. PTP-LIN Blending

Note

This feature is currently in a testing stage and therefore disabled by default. It can be activated with the environment variable VRC_FEAT_CART_PTP_BLENDING: True.

PTP-LIN blending enables smooth transitions between point-to-point (PTP) and linear Cartesian (LIN) motion commands. Unlike pure PTP or Cartesian blending, which operate within a single motion space, PTP-LIN blending bridges joint space and Cartesian space by inserting a combined segment that interpolates between both representations, as seen in Fig. 23.

The blending is bidirectional: it supports transitions from a LIN segment to a subsequent PTP segment as well as from a PTP segment to a subsequent LIN segment. In both cases, a combined segment (COMBINED_JOINT_CARTESIAN) is created at the transition point, which internally contains a Cartesian component and a joint space component.

blending_PTP_LIN_schematic

Fig. 23 Schematic of PTP-LIN blending with a combined segment at the transition point

PTP-LIN Blending Parameters

The blending parameter for PTP-LIN blending is specified in the subsequent (requesting) motion command and defines the degree of blending between the two segments. As with Cartesian blending (see Cartesian Blending Parameters), the parameter can be provided either as a percentage or as an absolute value:

  • Percentage \([\mathrm{\%}]\): The blending radius is calculated as a fraction of half the segment’s path length, analogous to the definitions for Cartesian and PTP blending (see Cartesian Blending Parameters).

  • Absolute \([\mathrm{m}]\): In absolute blending, the blending distance in the Cartesian segment is converted into a percentage value, which is then also applied in the PTP blending.

Note

PTP-LIN blending is not symmetric: the blending parameter is applied independently to the previous and next segment. This means the blending distance from the transition point may differ on each side.

A key difference to pure Cartesian or PTP blending is that the segments are cut at the blending point independently for the previous and next segment. The cut motion profiles are then transferred as subsegments to the combined motion object: the first subsegment follows the previous command and decelerates to standstill, while the second subsegment starts from standstill and accelerates into the next segment. Both subsegments are interpolated simultaneously within the combined segment (see superposition described above).

Blending Path Geometry

The exact geometry of the blending path is not precisely defined. The blending points indicate where the robot enters and exits the blending zone. It is to be expected that the robot will not leave the original path immediately after the first blending point and may return to the original path before the second blending point.

The actual trajectory depends on several constraints. These include the path length, velocity and acceleration of the adjacent segments, as well as general settings such as the length of the interpolation filters (see System Parameter).

Note

Currently, the time override also affects the path geometry.

In general, slower movements and shorter segments produce a narrower blending segment.

Furthermore, the blending path may differ depending on whether the transition is from LIN to PTP or from PTP to LIN.

Edge Cases for PTP-LIN Blending

This section describes specific situations that require special consideration when using PTP-LIN blending.

Very Short Segments

Currently, problems may arise when very short segments (below \([\mathrm{1°}]\) or \([\mathrm{1cm}]\)) are blended.

Influence of TimeOverride

For PTP/Lin Blending, we have observed that the TimeOverride has little influence on the geometry of the blending segment.

4.1.5. Blending with Interpolating Segments

In principle, blending can also be used if the previous segment is already interpolating.

However, there is no guarantee that the blending calculation will be successful or that the specified blending parameters can be applied.

Blending attempts to be performed using the remaining segment length (minus a tolerance that is expected to be traveled during path planning).

The success of the blending therefore depends largely on the interpolation progress of the previous segment.

It may also happen that there is no longer enough time left to calculate the blending. This can be the case, particularly with short segments.

Note

Blending performance can depend heavily on whether voraus Robot Control is running on a real-time capable system or not.