Release of URCap SDK 1.12.0, Polyscope 5.10 and 3.15

Dear valued UR community,

Universal Robots is delighted to announce, that we are now releasing a new software, to continuously deliver more value to you and our customers. The new release consist of:

  • PolyScope 5.10.0 for e-Series
  • PolyScope 3.15.0 for CB3
  • URCap SDK 1.12.0 including URCap API 1.12.0 for both platforms
  • StarterPackage 1.12

Release notes for the e-Series:

KEY FEATURES

  • Software support for 3PE Teach Pendant: Support article HERE.
  • Improved payload settings: Added pre-set payloads, inertia settings, visualization of payloads, and new payload selection node, simplifying applications with variable payloads.
  • Singularities visualization in Freedrive: Helps user understand and avoid singularities
  • Validation of URCaps: Users are prevented from installing incompatible or corrupt URCaps
  • Security: Various new security settings prevent unauthorized network access to the robot and execution of files from connected USB storage
  • UR Script runtime interpreter: Enables the execution of runtime defined statements from within primary programs. Support article HERE.
  • Motor control optimizations at low speeds : For increased stability in path tracking at low speed movements. To understand more about the Motor Control Optimizations at low speeds, check the service note regarding this HERE.

POLYSCOPE GUI

SOFTWARE SUPPORT FOR 3PE TEACH PENDANT

Universal Robots Teach Pendant with built-in 3-Position Enabling Device is sold separately

Fixes an issue when an external mode selection switch is used with 3PE Teach Pendant on SW 5.9.3 and 5.9.4. Existing customers purchasing 3PE Teach Pendant must update robot software to 5.10 or higher.

PAYLOAD

This version introduces new installation screen for configuring payloads. The “Payload” screen replaces payload section that was part of the TCP screen.

Payloads can now be created independently of a TCP. There is also the ability to specify a custom inertia matrix.

The 3D graphics on the payload screen will visualize the inertia and center of gravity of the selected payload. This will give a rough visualization of the weight distribution of the payload.

Configuring the inertia of heavy payloads enhance the robots motion performance and reduces risk of vibrations and protective stops.

There is also a new program node screen for setting the payload. This replaces the functionality that used to be in the Set program node. Old programs will continue to work and look like they did before, but the payload on the Set node will not be updated with the changes. They should manually be converted to the new node. All new programs will use the new node.

The initialize screen has been updated to reflect the new payload enhancements

The following script commands were added:

  • set_target_payload(Mass, CoG, Inertia)
  • get_target_payload_inertia()

IMPROVED VISUALIZATION IN CONSTRAINED FREEDRIVE

There are new shapes appearing in the 3D graphics on the Move tab, when using Constrained Freedrive.

These shapes indicate when the robot is in singularity (red), or near singularity (yellow).

There are also shapes highlighting joints which are causing the different types of singularities. (Elbow, Head and Wrist)

IMPROVED ERROR HANDLING FOR URCAPS

Prevention of installation of incompatible/erroneous URCaps
Users are prevented from installing URCaps that will not work with their robot.

A URCap will not be installable from the URCap Settings screen in the following cases:

  • The URCap requires a higher version of the URCap API (than the version provided by PolyScope)
  • The URCap is not compatible with the robot series (generation) of the user’s robot
  • The URCap package file (.urcapfile) has an internal error or the file is not a valid URCap package file
  • An identical URCap is already installed with a different file name
  • The URCap cannot be installed due to file or file system related issues (such as not enough available disk space)

Note: It is only possible to prevent the installation of a URCap, which is incompatible with the robot series of the user’s robot, if the URCap has specified its compatibility. This might not be the case for all URCaps.

IMPROVED FEEDBACK FOR URCAP STARTUP ERRORS

Provided better feedback when a URCap fails to start after it has been installed. Information about the startup error appears in the following places in PolyScope:

  • An error dialog is displayed when PolyScope starts
  • The Log tab contains a corresponding log entry
  • In the URCap Settings screen, the URCap with the startup error is indicated with an error status icon in the “Active URCaps” list and the error message is provided in the top of the “URCap Information” panel.

LOG TAB IMPROVEMENTS

Improved the layout and information provided in the Log tab when an error occurs in a URCap.

Changed how URCap information is displayed (i.e. URCap name, URCap version, etc.) for the following type of errors:

  • An unhandled/uncaught Java exception in a URCap
  • A compile/runtime error in the script code generated by a URCap

Changed the information displayed for unhandled/uncaught Java exceptions in URCaps:

  • The log entry text is now "Unhandled exception occurred in URCap ‘’ (where “” is the name of the URCap) instead of showing information about the exception
  • In the panel to the right of the log entry, information about the exception is provided in the “Explanation” section and a “Stack Trace” header is added for the section showing the stack trace

SECURITY

Added settings for configuring the security of the robot. Users are now able to set/change an Admin password equivalent to the ‘root’ password used for accessing the Linux system of the robot. Furthermore, three additional security related panes are added to the system settings

This functionality includes:

  • Ability to enable/disable execution of magic files on USB-sticks
  • Restricting inbound network access based on subnet and port ranges
  • Configuration of SSH including management of authorized keys
  • Enabling/disabling remote access to the standard services of the robot such as the Dashboard Server and the Primary/secondary client interfaces

MOTOR CONTROL OPTIMIZATION AT LOW SPEEDS

  • This improvement applies to robots built with PolyScope version 5.4.0 and higher.
  • The “Calibration revision” of each joint must be higher than v12.0. Users can check this in the file robot_calibration_summary.txt. To check the robot joint’s “calibration revision” please follow the guideline HERE.

URCAP SOFTWARE PLATFORM

URCAP API

ADDED SUPPORT FOR GETTING JOINT POSITIONS OF WAYPOINT NODES

  • URCaps can access the joint positions of a Waypoint Node corresponding to the defined Cartesian location of the waypoint
  • See the new getJointPositions() method in the existing FixedPositionDefinedWaypointNodeConfig interface (in the
    ur.urcap.api.domain.program.nodes.builtin.configurations.waypointnode package)

ADDED CONFIGURATION SUPPORT FOR THE “HIDE FOLDER PROGRAM TREE” OPTION ON FOLDER NODES

  • URCaps can configure the “Hide Folder Program Tree” option thereby controlling whether or not the subtree of the Folder Node is hidden (i.e. whether or not the child nodes under the Folder Node are visible in the Program Tree in PolyScope)
  • URCaps can read the configuration of the “Hide Folder Program Tree” option
  • See the new isSubtreeHidden() and setSubtreeHidden(boolean) methods in the existing FolderNode interface (in the com.ur.urcap.api.domain.program.nodes.builtin package)

ADDED @SINCE TAG TO JAVADOC

Introduced the @since tag in Javadoc for API interfaces/classes and their members, such as methods and enums. The @since tag specifies which version of the URCap API a particular API functionality was added. This enables a developer to identify from which version a given functionality is available.

The following changes has been introduced:

  • The Javadoc header for all interfaces/classes now contains the @since tag with the version in which the interface/class was introduced
  • The Javadoc for any member (e.g. a method or enum) added to an interface/class after it was introduced now contains the @since tag with the version when the new member was added

Note:

  • Javadoc for a member of a interface/class will only contain the @since tag, if the member was added to the interface/class in a later version than when the interface/class was introduced.
  • If the Javadoc for an interface/class member does not contain the @since tag, the member was available from the version specified by the @since tag in the Javadoc header for the interface/class.

POLYSCOPE SUPPORT FOR URCAPS

ROBOT SERIES COMPATIBILITY

Enabled URCaps to specify their compatibility with Universal Robots robots from the e-Series and CB3 robot series.

This functionality is introduced to provide a good user experience for the URCap installation process by ensuring that users cannot install a URCap that is not compatible with their robot (and/or Universal Robots offline simulator). Users will be prevented from installing an incompatible URCap. When specifying the robot series compatibility for a URCap, it should be considered, if the URCap depends on specific hardware and/or software functionality, which is only available on a specific robot series (e.g., only available on e-Series robots).

The following new functionality is introduced:

  • A URCap must now mandatorily specify which robot series the URCap is compatible with (i.e. which robot series the URCap can run on)
  • A URCap can specify its compatibility using two new boolean compatibility flags which are defined as properties in the pom.xml Maven configuration file in the URCap project
  • More detailed information is available in the URCap SDK:
    • See the new “12.1: Robot Series Compatibility” section in the (Swing- and HTML-based) URCap tutorial
    • See the new upgradeURCap.sh script for updating an existing URCap to support the new compatibility flags

Note:

  • A URCap must specify its compatibility with both the e-Series and CB3 robot series
  • URCaps depending on URCap API version 1.12.0 (which is included in this release) or higher will be prevented from starting or being installed, if the compatibility flags are not present/specified. Existing URCaps using older URCap API versions will not be affected.

IMPROVED URCAP ERROR HANDLING

When an unhandled/uncaught Java exception occurs in a URCap, a “filtered” stack trace (only showing code lines in the URCap) is now provided in the console output for the exception. Previously, the stack trace contained internal code lines from PolyScope.

Better feedback is now provided when a URCap fails to start during PolyScope startup after it has been installed/deployed, e.g. using Maven. The following type of errors are detected:

  • The URCap requires a higher version of the URCap API (than the API version provided by PolyScope)
  • The URCap is not compatible with the (robot series of the) user’s robot
  • The URCap needs a 3rd party dependency which is not available or not available in the correct version
  • The required robot series compatibility flags are missing (not specified) in the URCap’s pom.xmlfile
  • An invalid value has been specified for a required robot series compatibility flag
  • The URCap encountered an exception in the Activator
  • The URCap file (.urcap file) has an internal error or the file is not a valid URCap file. Typically, the OSGi bundle manifest file (META-INF/MANIFEST.MF) is invalid, e.g. due to wrong/missing data or invalid syntax.
  • Wrong Activator path specified in the URCap’s pom.xml file
  • An identical URCap with same symbolic name and version is already installed with a different file name

Many of the errors detected at startup can also be detected when installing a URCap from the URCap Settings screen in PolyScope. If such an error is detected during installation, the URCap will be prevented from being installed. The following errors can be detected at install time:

  • The URCap requires a higher version of the URCap API (than the API version provided by PolyScope)
  • The URCap is not compatible with the (robot series of the) user’s robot
  • The required robot series compatibility flags is missing (not specified) in the URCap’s pom.xml file
  • An invalid value has been specified for a required robot series compatibility flag
  • The URCap file (.urcap file) has an internal error or the file is not a valid URCap file.
  • The URCap cannot be installed due to file or file system related issues (such as not enough available disk space)

Information about the startup error is provided in the following places:

  • An error dialog is displayed when PolyScope starts
  • The Log tab in PolyScope contains a corresponding log entry
  • In the URCap Settings screen in PolyScope, the URCap with the startup error is indicated with an error status icon in the “Active URCaps” list and the error message is provided in the top of the “URCap Information” panel
  • The error is logged to the console

Note: All JAR files ( .jar files) in the .urcaps folder will be considered a URCap and attempted to be started when PolyScope boots up. This implies the following minor behavior changes for files present in the .urcaps folder:

  • Any “regular” JAR file (a file which is not a URCap) will generate a startup error when PolyScope starts up
  • Any non-JAR file will be ignored, i.e. it will not be attempted to be started

URCAP SDK

DOCUMENTATION

Changed how section references are displayed in all SDK documents:

  • Section references are now shown in blue with both the section number and title, e.g. “14. Troubleshooting”.

Updated the (Swing- and HTML-based) URCap tutorial:

  • Added information about robot series compatibility for URCaps:
    • Updated section “11. Creating new thin Projects using a Maven Archetype” and added new section “12.1. Robot Series Compatibility” with description of robot series compatibility and how to specify a URCap’s compatibility
  • Updated section “11. Creating new thin Projects using a Maven Archetype” with images of the dialogs that appear when the newURCap.sh script is used
  • Corrected the reference to the Universal Robots+ website in section “2. Prerequisites”

Updated the “URCap Gripper Driver” document (gripper_driver.pdf file) and “URCap Screwdriver Driver” (screwdriver_driver.pdf) documents:

  • Added new section “2. General Information about URCap Development” which provides references to general information about development of URCaps in the URCap tutorial.

Updated the “Using a Device in a Template” document (using_device_in_template.pdf file):

  • Added new section “4.1: Capability Support” which describes how to access and configure a capability supported by a PolyScope device from a template program node

SCRIPTS

  • Added new upgradeURCap.sh script which provides a convenient way of updating existing URCap to support the new robot series compatibility flags
  • Updated the newURCap.sh script:
    • Added a new “URCap Compatibility” dialog where the new URCap’s compatibility with the e-Series and CB3 robot series can be specified
    • The script will automatically add the corresponding robot series compatibility flags to the pom.xml file in the generated new URCap project
    • Updated the text in the list in the “API Version” dialog to reflect the compatibility chosen in the new “URCap Compatibility” dialog

URCAP SAMPLES

Specified robot series compatibility for all URCap samples:

  • Updated all URCap samples to support the new robot series compatibility flags
  • All samples specify that the URCap is compatible with both e-Series and CB3 robots

The HTML-based Ellipse URCap sample now configures the TCP setting of the Move node to “Use active TCP” instead of “Ignore active TCP”.

CONTROLLER

CONSTRAINED FREEDRIVE SUPPORT IN UR SCRIPT

Existing freedrive_mode() script function is extended with 2 new parameters:

  • free_axes : 6-dimensional vector containing 0’s and 1’s, these indicates in which axes movement is allowed. The first three values represent the cartesian directions along x, y, z, and the last three defines the rotation axis, rx, ry, rz. All relative to the selected feature.
  • feature : pose vector that defines a Freedrive frame relative to the base frame. For base and tool reference frames predefined constants “base”, and “tool” can be used in place of pose vectors.

Constrained Freedrive mode with user supplied parameters can be activated in program. Script function has equivalent functionality to Freedrive available in PolyScope GUI.

Additionally get_freedrive_status() function can be used to inform operator that robot approaches singularity.

PUBLIC INTERFACES

  • Primary protocol breaking change. In the Robot State sub-package ‘Singularity Info’, the double singularityScale is now replaced by the two integers singularityType and singularitySeverity .

NEW BUILT-IN FUNCTION GET_INVERSE_KIN_HAS_SOLUTION

  • The new function can be used to check if get_inverse_kin can compute a valid solution and thereby avoid runtime exceptions if no solution is found. The new function should be used instead of is_within_safety_limits, which is now deprecated.

INTERPRETER MODE IN PROGRAMS

Interpreter Mode added to UR Script. Enables the execution of run time defined statements from within primary programs.

More information is available in UR Script manual.

Page with examples is available on the Support site HERE

EMBEDDED

  • System will monitor state of control box fan, and fault with the error code C274A1 if the fan is not spinning or disconnected.

BUG FIXES

POLYSCOPE GUI

  • Fixed issue with payload estimation when using imperial units where values would be converted incorrectly.
  • Fixed issue where Modbus signal can have both Input and Output actions
  • Fixed issue where editing Out Of Reach plane with certain value would result in Java Exception
  • Added an indicator of robot running with reduced functionality to the status LED text
  • Fixed issue where script file editor save button incorrectly disabled
  • Fixed issue where changing tracked thread did not update the UI properly
  • Fixed coloring of arrows on the move tab, when in Safeguard stop
  • Fixed issue where pressing the “Test” button in a Set node configured to generate a Single Pulse (i.e. “Set Single Pulse” option) would generate a syntax error (display an error dialog)
  • Fixed issue where the unsaved changes indicator for the installation became enabled when saving a program
  • Replaced the regular onscreen keyboard with the Expression Editor keyboard as input method to the expression field in the Until Expression node under the Screwdriving node
  • Fixed issue where loading a sub program containing a Screwdriving node with the direction set to “Loosen” would change the direction to “Tighten”
  • Fixed issue where it was not possible to insert a Call Sub Program node after a Folder node in the Program Tree
  • Moved the Screwdriving node from the “Advanced” commands section to the “Templates” commands section (in the left side of the Program Tab)
  • Fixed issue in the Command screen for the Until Tool Contact node where part of the text was overlapping in German
  • Fixed issue where part of the text in the “Readings” panel in the top of the Log tab was not fully visible in German
  • Fixed issue where features with an undefined position was selectable in the Move tab and the Pose Editor screen
  • Fixed issue where the “Unsaved Installation Changes” dialog would be displayed every time just before the robot was restarted/powered off, if the auto initialize (auto brake release) of the robot arm was enabled (under Startup) in the installation
  • Fixed issue where it was possible to add a Folder node at the top level in the Program Tree (i.e. at the same level as the Robot Program root node). Now, when the Robot Program root node is selected in the Program Tree and a new Folder node is added, the new Folder node will automatically be inserted under the Robot Program node.
  • Fixed issue where an incorrect position in some situations would be shown for a linked Waypoint node instead of the position of the Waypoint node it was linked to.
  • Fixed memory leak in balloontip for Safeguard Reset
  • Fixed an issue where Constrained Freedrive would follow wrong rotations of the selected feature.
  • Performance improvements on the Log screen.
  • Fixed issue where it was not possible to run a program, if two or more digital outputs were configured (in the “I/O Setup” installation screen) to generate a continuous pulse when a program is running. Attempting to start a program would result in a “Contextual error: The thread ContinuousPulseInstallationComponent is double defined” runtime exception.

CONTROLLER

  • Fixed issue where resuming a program could immediately result in a protective stop.
  • Fixed issue where calling the set_payload() URScript-function without offset parameter, would make all subsequent calls to set_tcp() modify payload center of gravity even if payload center of gravity had been set in another way since the call.
  • Fixed issue where multiplication of a single row matrix would cause “Unsupported operand types”.
  • Fixed issue where RTDE joint mode data would incorrectly contain the joint mode of the Base joint in the fields for all joints.
  • When resuming program or increasing speed with the speed slider, acceleration will now be less aggressive, with less risk of triggering a Protective stop.
  • Fixed issue where moving robot in Freedrive mode when program is paused result in a Protective stop.
  • Robot brakes more softly when releasing the Freedrive button during movement. Before the robot was braking with maximum deceleration, which caused very hard stopping behavior.
  • PolyScope should no longer suggest joint angles outside the reach of the robot for a waypoint when changing TCP settings.
  • Fixed an issue where stop/pause buttons did not work when built in function for freedrive_mode() was invoked.
  • In older versions, detecting wrong payload (like dropped payload during the movement) may require considerable robot movement before the robot stops. From this version, in the same scenario, robot stops after a minimal movement.
  • Fixed an issue where resuming a paused program could result in “No Controller”.
  • Increased the workspace around the base in which the user can use Constrained Freedrive. Reduced the singularity zone by up to 30 %.
  • Improved responsiveness of constrained freedrive, when only moving in wrist 3.
  • When a cascade of faults or violations occur in the joints/embedded code, the initial fault (or if no fault, violation) will be shown in the Polyscope popup. The log still retain information on all faults and violations.
  • Fixed an issue where multiple calls to get_inverse_kin() with the same pose but varying the q_near parameter would always return the same first solution. The solution will now reflect the q_near reference joint positions at each function call.
  • Improved smooth transition when safeguard stopping for linear motions.

SOFTWARE PLATFORM

  • Improved robustness of the software update procedure; DNS and remote control settings now persist across updates

SUPPORT LOG READER (SLR)

  • Fixed issue where unexpanded log entries for errors in URCaps were displayed with HTML tags (such as <p> and <b>)

URCAP SOFTWARE PLATFORM

  • Fixed issues with the “Unhandled exception in URCap” error dialog displayed when an unhandled/uncaught Java exception occurred in a URCap’s implementation of the GripperContribution or ScrewdriverContribution interface:
  • Some of the information about the URCap could sometimes be incorrect or missing
  • Sometimes the shown stack trace contained internal code lines from PolyScope instead of showing a “filtered” stack trace (with only code lines from the URCap)
  • Fixed issue where the navigation arrow buttons (‘>’ and ‘<’) for switching between the different pages of available URCap toolbars could disappear when 5 or more URCaps with toolbar contributions were installed.
  • A tooltip error message was incorrectly displayed when the input field was cleared on the keypad
  • A tooltip error message was not displayed when an invalid value was entered with the keypad
  • Fixed issues with tooltip error messages for validation of the input fields for configuring gripper capabilities (such as width and force) in the Gripper node:
  • Fixed issue where an incorrect program node name was displayed for the “Play from selection” option when a Grip Detected or Release Detected node (under a Gripper node supporting the grip/release detection capability) was selected in the Program Tree
  • Fixed issue where PolyScope would fail to start, if an installed URCap’s implementation of the getTitle() method in the ProgramNodeService / SwingProgramNodeService interface returned the value null . Now, an error dialog with a runtime exception is displayed once when PolyScope starts up.
  • Fixed issue where the installation would be become inaccessible due to a recurring unhandled null pointer exception, if an installed Swing-based URCap’s implementation of the getTitle() method in the SwingInstallationNodeService interface returned the value null . Now an error dialog with a runtime exception is displayed once when PolyScope starts up.
  • Fixed issue where the UI provided by a URCap was not replaced by the “There is an error with the URCap that contributes this node” error screen (which displays information about URCap errors), if an installed HTML-based URCap’s implementation of the getTitle() method in the InstallationNodeService interface returned the value null .
  • Fixed issue where there was a small delay before child nodes appeared under their URCap parent node in the Program Tree the first time the URCap node inserted children into its sub-tree
  • Fixed issue where a URCap would still appear in the “Active URCaps” list in the URCap Settings screen after it was manually deleted from the .urcaps folder

EMBEDDED

  • Fixed issue with firmware upgrade from pre SW 5.5 releases
  • Improved robustness of brake release algorithm. It may in some cases increase brake release time a bit.

StarterPackage

  • Git version control system added
  • Shortcut to clone/pull community URCap samples

You can find the release notes for the CB3 here:
Release notes 3.15

We hope that you will appreciate the new functionality!
The Universal Robots Team

5 Likes

The highlight of the nice new feature and improvements is presented here