5. Releases

This chapter provides an overview of the latest product releases, including key updates and changes. It also outlines recommended product bundles to ensure optimal compatibility and performance.

5.1. 2.21.0 - October 2025

This section details the release notes for the Docker image voraus.core, version 2.21.0. It describes the changes, fixes, and improvements introduced in this version and provides information on the components it has been tested with.

5.1.1. Release Notes - 2.21.0

Release Version: 2.21.0

Release Date: October 2025

Preamble

  • This release is for customers who use the voraus.core //virtual, voraus.core //FANUC or the voraus.core //KUKA.

  • Not all changes and improvements described in these release notes have been tested on a physical system; some have been verified through virtual testing.

  • New features have been added with this release.

  • Various bug fixes and improvements to the stability and robustness have been achieved with this release.

Requirements

Enhancements

  • Add partnumber as an optional parameter to the robot config file:

    • Listing 3 Exemplary entry in a Robot.json
      {
      "partnumber": "Partnummer12345-42.1",
      }
      
    • The part number is implemented as a string.

    • If the parameter is not set, “unknown” is used.

    • The part number is communicated via the OPC UA endpoint: Robot/RobotPartnumber, NodeID: 100015

  • Multiple parameter sets: It is now possible to define multiple user limit sets. The limit sets must be stored as JSON files in the following path: VORAUS_DATA_DIR/userLimitSets/.

    • All values are defined in the units [m], [°], [W], and [Nm], velocities in [m/s] and [°/s], and accelerations in [m/s^2] and [°/s^2].

    • For axis limits, 6 values must currently still be specified. The values for unused axes should be set to high values.

    • Listing 4 Exemplary MyLimit.json
      {
          "name": "MyLimit",
          "isActive": true,
          "axesAcceleration": [210.0, 210.0, 210.0, 210.0, 210.0, 210.0],
          "axesVelocity": [140.0, 140.0, 170.0, 180.0, 180.0, 180.0],
          "axesPositionMin": [-220.0, -310.0, -160.0, -310.0, -220.0, -360.0],
          "axesPositionMax": [220.0, 130.0, 160.0, 130.0, 220.0, 360.0],
          "axesTorqueRelative": [10.0, 10.0, 10.0, 5.0, 5.0, 5.0],
          "axesTorqueAbsolute": [200.0, 200.0, 200.0, 100.0, 100.0, 50.0],
          "tcpVelocityTranslational": 2.0,
          "tcpVelocityRotational": 360.0,
          "robotPower": 5000
      }
      
    • An overview of the limit parameters can be found at the section Limit definitions, also:

      • Limits are usually only monitored. If a limit is exceeded, the robot stops and an error is triggered. Please note that axes accelerations can be exceeded by a certain factor before an error is triggered, and external forces are not currently monitored.

      • Not all limits lead to an adjustment of the trajectory.

      • Not all limits can be used by every robot. Some limits require additional sensors (e.g., for external forces).

    • Key parameter: The “name" must be a unique string, and "isActive" describes whether the limit should be active when starting robot control. The names “MACHINE" and “SAFETY" can not be used for user limits.

    • All other parameters are optional, as seen in this example:

      Listing 5 Exemplary SLS.json
      {
          "name": "SLS",
          "isActive": false,
          "tcpVelocityTranslational": 0.25
      }
      
    • Limit sets are read during the start-up of voraus Robot Control. Changes to the JSON files during runtime are only applied after the next restart.

    • A list of existing limit sets can be viewed in OPC UA under Robot/Limitations/ListOfLimitSets (Node ID: 107200, Vector of strings).

    • The settings of the limit sets can be viewed using the OPC UA method Robot/Commands/Limitations/GetLimitSet (Node ID: 107004).

    • User-defined limit sets can be activated or deactivated using the commands Robot/Commands/Limitations/ActivateUserLimitSet (Node ID: 107002) and Robot/Commands/Limitations/DeactivateUserLimitSet (Node ID: 107003):

      • A limit set can only be activated/deactivated when the robot is at a standstill. The robot must also not be in ACTIVE or GRAVCOMP mode. MACHINE & SAFETY limit sets cannot be activated or deactivated.

      • These changes are not persistent. After a restart, the configuration of the config files is restored.

    • From all activated limit sets, the most restrictive limit is determined in each cycle and set as the active limit.

    • Active limits are published via OPC UA at Robot/Limitations/ActiveLimits/...

Bug Fixes and Improvements

  • A problem with jogging around the z-axis has been fixed.

  • Unnecessary standstill time after PTP commands that end in standstill has been removed.

Known Issues

  • The tcpVelocityRotational limit does not slow down the robot during PTP movements. In addition, limit violations may occur in blending segments.

  • The tcpForce limit is not monitored yet.

Limitations for the use of the KUKA robot
  • Do not use the KUKA smartPad for jogging while the RSI script is running or paused (for example, to leave violated safety planes or for teaching). The robot moves back to the last commanded RSI pose as soon as the RSI script is continued. If you want to jog via the KUKA smartPad, please stop the RSI script beforehand and restart it after the jogging is finished.

  • Always reset voraus.operator error first before starting or restarting the RSI script on the KUKA smartPad. Otherwise, the robot may try to move and will most likely stop immediately, which may result in a loud “crack” from the robot, indicated by torque error on the smartPad.

Limit definitions

Limit

Size

Unit

Used for

axesAcceleration

For each axis

Maximal axes acceleration [rad/s^2] (ROTATIONAL), [m/s^2] (PRISMATIC)

  • Acceleration of PTP commands

  • Limit for axes jogging acceleration

  • Rapid stop deceleration

  • Fallback deceleration in several stop methods

  • Plausibility checks

axesVelocity

For each axis

Maximal axes velocity [rad/s] (ROTATIONAL), [m/s] (PRISMATIC)

  • Check against:

    • measured values

    • commanded values

  • Limit for PTP commands

  • Limit for jogging velocities (Cart & Joint)

  • The velocity slowdown of the current interpolating object

  • Transition into the stop ramp

axesPositionMin

For each axis

Minimal axes position [rad] (ROTATIONAL), [m] (PRISMATIC)

  • Position checks

    • Path planning

    • Measured values

    • Commanded values

  • Jogging slow down

axesPositionMax

For each axis

Maximal axes position [rad] (ROTATIONAL), [m] (PRISMATIC)

  • Position checks

    • Path planning

    • Measured values

    • Commanded values

  • Jogging slow down

axesTorqueRelative

For each axis

Maximal difference between measured and commanded torque on load side [Nm] (ROTATIONAL), [N] (PRISMATIC)

  • Check against:

    • measured values

axesTorqueAbsolute

For each axis

Maximal absolute measured torque on load side [Nm] (ROTATIONAL), [N] (PRISMATIC)

  • Check against:

    • measured values

    • commanded values

tcpVelocityTranslational

Scalar

Maximal TCP translational velocity [m/s]

  • Check against:

    • measured values

    • commanded values

  • Limit for Cartesian motion commands

  • Limit for jogging velocities (Cart & Joint)

  • The velocity slowdown of the current interpolating object

tcpVelocityRotational

Scalar

Maximal TCP angular velocity [m/s]

  • Check against:

    • measured values

    • commanded values

  • Limit for Cartesian motion commands

  • Limit for jogging velocities (Cart & Joint)

  • Comming soon:

    • Slow down for PTP

    • Fix problems in blending

tcpForce

Scalar

Maximal TCP measured force [N]

NOT CHECKED YET!

elbowVelocityTranslational

Scalar

Maximal elbow translational velocity [m/s]

  • Check against:

    • measured values

    • commanded values

  • The velocity slowdown of the current interpolating object

  • Limit for jogging velocities

robotPower

Scalar

Maximal robot mechanical power [W]

  • Check against:

    • measured values

5.1.2. Release Bundle - 2.21.0

The Docker image voraus-core in the version 2.21.0 has been successfully tested with:

And therefore is compatible with the voraus.pioneer Examples in version 1.2.0. It can also be used with the:

5.2. 2.20.0 - September 2025

This section details the release notes for the Docker image voraus.core, version 2.20.0. It describes the changes, fixes, and improvements introduced in this version and provides information on the components it has been tested with.

5.2.1. Release Notes - 2.20.0

Release Version: 2.20.0

Release Date: September 2025

Preamble

  • This release is for customers who use the voraus.core //virtual, voraus.core //FANUC or the voraus.core //KUKA.

  • Various bug fixes and other improvements have been achieved with this release.

Requirements

Breaking Changes

  • rtsettings.json is now a mandatory config file. It is shipped by default. Robot control will terminate during startup if this file is missing or broken.

  • Jogging commands are now velocity-limited to not violate workspace limits (e.g., axis position limits).

  • Benchmark logs are now written into the log directory (/var/log/voraus/rt_benchmarks/).

Enhancements

  • Allow manually controlled commands in rescue mode (not on voraus.operator yet).

  • Add EtherCAT dcDelta (Distributed Clock) benchmark to evaluate synchronization.

Changes

  • Removed the encryption from the voraus-error-handler, so that feedback for missing licenses can be provided.

Bug Fixes and Improvements

  • A path planning bug has been fixed.

  • The histogram size of the motion planner benchmark has been adjusted.

  • The write directory of some EtherCAT benchmark files has been adjusted.

  • A ‘missing vision log file’ bug has been fixed.

Known Issues

Limitations for the use of the KUKA robot
  • Do not use the KUKA smartPad for jogging while the RSI script is running or paused (for example, to leave violated safety planes or for teaching). The robot moves back to the last commanded RSI pose as soon as the RSI script is continued. If you want to jog via the KUKA smartPad, please stop the RSI script beforehand and restart it after the jogging is finished.

  • Always reset voraus.operator error first before starting or restarting the RSI script on the KUKA smartPad. Otherwise, the robot may try to move and will most likely stop immediately, which may result in a loud “crack” from the robot, indicated by torque error on the smartPad.

5.2.2. Release Bundle - 2.20.0

The Docker image voraus-core in the version 2.20.0 has been successfully tested with:

And therefore is compatible with the voraus.pioneer Examples in version 1.2.0. It can also be used with the

5.3. 2.19.0 - August 2025

This section details the release notes for the Docker image voraus.core, version 2.19.0. It describes the changes, fixes, and improvements introduced in this version and provides information on the components it has been tested with.

5.3.1. Release Notes - 2.19.0

Release Version: 2.19.0

Release Date: August 2025

Preamble

  • This release is for customers who use the voraus.core //virtual, voraus.core //FANUC or the voraus.core //KUKA.

  • New features have been added with this release.

  • Various bug fixes and improvements to the stability and robustness have been achieved with this release.

Requirements

Breaking Changes

  • Fixed ID-Parameter of the following OPC UA commands. The ID-Parameter now starts counting from 1 instead of 0, as stated by the parameter description. All requests that were, contrary to the function description, called with an ID of 0 will now fail:

    • EnableForbiddenVolume

    • RemoveForbiddenVolume

    • DisableForbiddenVolume

    • SetForbiddenVolumeCuboid

    • SetForbiddenVolumeCylinder

    • SetForbiddenVolumeSphere

    • EnableBoundaryPlane

    • RemoveBoundaryPlane

    • DisableBoundaryPlane

    • SetBoundaryPlane

Enhancements

  • Crash logs for the simulation.

  • Runtime data is saved to the voraus data directory and is still available after a restart. This includes the time override, stop parameters, and the active tool. The default directory in the Docker container is /root/data/voraus/voraus-robot-control/.

  • A new OPC UA command was added to set a desired time override with transition duration.

    • Robot/Commands/Control/SetTimeOverrideWithTransitionTime

    • NodeID: 100276

  • Increase the number of digital I/O modules:

    • Total number of modules: 2 Input, 2 Output.

    • Total number of IOs: 8 Inputs, 8 Outputs.

  • OPC UA error data - the list of pending errors is returned under “Error.ErrorListJSON”.

    • Can be read from the voraus.core - ErrorHandler (port 48404). Currently, this only provides a hardcoded list of errors. In the future, it will return the list of all pending errors of all components.

  • OPC UA fieldbus data - the OPC UA endpoints have been added under “Fieldbus.EtherCAT” for bus diagnostics.
    • If it is configured as a real fieldbus, the data is read out.

    • In the virtual example, parameters are loaded.

  • Functions have been added Robot.Commands.Fieldbus -> ResetMissingFrameInformation

  • Functions have been added Robot.Commands.Fieldbus.EtherCAT WriteSDO/ReadSDO functions for the SEW SDO interface.

  • An interface for FoE has been added to Robot.Commands.Fieldbus.EtherCAT.

  • Change the cycle time from 2ms to 1ms.

  • Robot stops are now configurable:

    • Stop ramps can be configured for different stop sources (ErrorStop, SS1, and UserStops). Prioritization of error sources: SS1 > ErrorStop > UserStop

    • Stop methods are: Rapid stop (all axes stop with max. acceleration), axes stop time-based (synchronous axis stop with defined duration), and on-path stop with defined duration.

    • On-path stop can only be executed for existing motion profiles (move commands & jogging).

    • It is not possible to change from an axis stop to an on-path stop.

  • Heartbeat - Keep-alive signal (OPC UA):

    • Clients can register themselves to send periodic heartbeats.

    • If a heartbeat signal from a client is not received in the specified interval, an error is raised.

    • OPC UA commands are located at Robot-Commands-Heartbeat, and status information is available at System- HeartbeatManager.

  • Add a new argument ForbiddenVolume to the SetForbiddenVolume commands in voraus-robot-control OPC UA interface. This argument is only a placeholder for the future division into forbidden volumes and workspaces. It is intended to avoid breaking changes in the future.

  • New ENV variable VORAUS_RC_FIELDBUS_INTERFACE_NAME to define the EtherCAT interface name. The config.json file no longer needs to be mounted.

  • Calculation of effective mass in task-space. The calculated value is published on KinematicsAndDynamics OPC UA node.

  • The linear velocity and position of the target point for effective mass are published on KinematicsAndDynamics OPC UA node.

  • Added an alternative link layer implementation, which can be enabled by specifying the environment variable ECAT_LINK_LAYER=MMAP. Evaluation of this implementation is ongoing; it might be removed in the future or used by default. The environment variable must be added to the Helm chart:

    env:
    name: ECAT_LINK_LAYER
    value: MMAP
    

Changes

  • Updated OPC UA library (open62541) to version 1.4.6.

  • The Python package opcua has been dropped and replaced in favor of asyncua.

  • Error handling: The list of possible errors now contains all system-control errors.

  • Adjusted motion profile filter length from 90 ms to 220 ms. Recommended from SEW to reduce jerk: Update of the config.json file from voraus-robot-control.

  • Changed the implementation of the rtBenchmark generation:

    • The timestamp format of the generated benchmark directories changed from MM.DD_HH:mm to YYYY-MM-DD–HH-mm-ss.

    • Known Issue: The histogram of the motion planner benchmark is currently limited to 2.5 ms; all measurements greater than this duration are capped. This is only a visual issue; it has no impact on the statistics (max, avg, p99).

  • File version of the main voraus-robot-control config changed from 190003 to 190004, and the VerboseTimingInformation field was removed (path to the file: /etc/voraus/voraus-robot-control/config.json).

Bug Fixes and Improvements

  • Improving the robustness of the shutdown process.

  • Improving the robustness of the error handler.

  • Bug fix for the limitation of higher movement speeds: the tolerance for the axis following the error might have been exceeded. The tolerance could be exceeded, but this has effectively disabled the axis position validation.

  • The command Move Circular has been improved so that:

    • Fewer errors occur.

    • The calculation methods CENTER and ANGLE_DIRECTION are more tolerant of inaccurate circle definitions.

  • Blending has been improved:

    • The calculation has been improved to be able to blend with a higher probability.

    • A bug has been fixed that occurred when a movement command was blended with 100% on both sides (acceleration problem).

    • Bug fix for a “Blending-Nullptr” problem.

    • Various input validations and bugfixes for the jogging and blending interfaces.

    • Orientation blending path length:

    • Example:

      • pos1: z_rot = 0°, pos2: z_rot = 90°

      • Move: pos1 → pos2 → pos1 with 100% Blending

      • Expected z_rot: 0° → 45° → 0°

      • Previously z_rot increased to > 45° in blending segment

    • An acceleration error after failed blending has been fixed.

  • The stop command has been improved:

    • Movement commands are now rejected while the robot executes the stop command.

    • Rapid stop and axis stop time-based brake ramps are smoothed. The acceleration jump at the end of the brake ramp has been replaced by a smooth transition to a standstill. This slightly increases the braking time of the rapid stop.

    • Stop ramps (rapid stop & axis time-based) have been improved.

    • During the break ramp, a quick stop will now be triggered if the expected break time is exceeded. Previously, this duration was fixed to 1 s.

  • The list of possible errors now contains all system-control errors.

  • Fixed duplicated loading of tool collision models.

  • TCP slows down as soon as it enters the slowdown area of a volume or plane and approaches the constraint.

  • Fixed duplicated loading of tool collision models.

  • Standstill detection has been improved. The brakes should not be enabled before the robot is in a standstill (noticed during brake tests).

    • Note: The resulting standstill tolerance value is slightly higher than in the prototype tests.

  • Stability improvement when the IPC boots up.

  • Fix spam in log: “Execute … with stop method: …”.

  • Improved error messages for boundary plane violation errors.

  • FieldBusSEW: A missing slave in an EtherCAT package does not directly trigger an error. The absence is only logged. Ultimately, other mechanisms will trigger once the slave is missing for multiple frames.

  • Fixed an issue in voraus-system-control that prevented a controlled stop of the voraus-core container, resulting in no benchmark statistics being written.

Known Issues

Limitations for the use of the KUKA robot
  • Do not use the KUKA smartPad for jogging while the RSI script is running or paused (for example, to leave violated safety planes or for teaching). The robot moves back to the last commanded RSI pose as soon as the RSI script is continued. If you want to jog via the KUKA smartPad, please stop the RSI script beforehand and restart it after the jogging is finished.

  • Always reset voraus.operator error first before starting or restarting the RSI script on the KUKA smartPad. Otherwise, the robot may try to move and will most likely stop immediately, which may result in a loud “crack” from the robot, indicated by torque error on the smartPad.

5.3.2. Release Bundle - 2.19.0

The Docker image voraus-core in the version 2.19.0 has been successfully tested with:

And therefore is compatible with the voraus.pioneer Examples in version 1.2.0. It can also be used with the