Release note Software version 3.12.x.x

Release notes for Universal Robots Software 3.12.X.X

Please review the following Product Alert for CB3 robots prior to upgrading Polyscope to 3.12.x.x

RELEASE NOTES 3.12.1 - 25/02-2020

Released Versions:

UR Software: 3.12.1.90940

URCap Software Platform:

URSim: 3.12.1.90940

URSim Virtual Machine: 3.12.1.90940

Robot Image: 3.12.1.90940

UR Firmware 3.12.7 (no change)

Bug Fixes

Controller

Fixed UR script issue introduced in the software version 3.12 where
speedj() and speedl() would end incorrectly, in some cases resulting in a
buzzing sound from the joints.

Fixed issue introduced in the software version 3.12 where stopj()
and stopl() would work incorrectly during conveyor tracking, online path
offset and force mode, sometimes resulting in a singularity exception.

Key Features

URCap API: Added support for using gripper devices in template program Nodes

URCap API: Added support for registering a "regular" URCap as a conformant PolyScope gripper device

URCap API: Improved support for Features

New dashboard server commands

New URScript utility functions

Improved monitoring of power consumption in the control box power supply

PolyScope GUI

Magic scripts are executed only from USB root folder.

It is now possible to specify a custom name for an I/O that has an action assigned.

Reduced the amount of disk space taken up by an installed URCap

URCap Software Platform

URCap API:

Improved support for grippers:

Added support for the Grip Detected and Release Detected feedback capabilities for Gripper driver contributions.

These two capabilities can optionally be registered, if the gripper
can inform whether it has detected that an object has been
gripped/released after a grip/release action has been triggered

See new the 'GripperFeedbackCapabilities' interface in the 'contribution.driver.gripper.capability' Java package

When one or both of these capabilities are registered, the user will
be able to enable handling of grip/release detection in the Gripper
program node. This provides the possibility of:

Specifying a timeout value for the grip/release action (in the Grip/Release Timeout Node)

Defining the processing steps to perform when the grip/release action timed out (under the Grip/Release Timeout Node)

Defining the processing steps to perform when the a grip/release was detected (under the Grip/Release Detected Node)

Introduced the concept of PolyScope devices:

The new 'Device' base interface represents a physical device supported by PolyScope

Currently, gripper devices are the only supported type of device

See new 'domain.device' Java package

Added support for getting the list of installed gripper devices available in PolyScope:

See the 'getGrippers()' method in the new 'GripperManager' interface in the 'domain.device.gripper' Java package

Added support for Gripper Nodes:

URCaps can create and insert a Gripper Node for a selected gripper device into the Program Tree

URCaps can read and configure the gripper action selection (i.e. grip or release) of the configuration for a Gripper Node

See the 'getGripperProgramNodeFactory()' method in the new
'GripperManager' interface in the 'domain.device.gripper' Java package

See the new 'domain.program.nodes.contributable.device.gripper' Java package

Added support for storing gripper devices in the data model:

URCaps can store and retrieve 'GripperDevice' objects and other device types ('Device' objects) in the data model

A URCap program node holding a reference to an unresolved gripper
device in its data model automatically becomes undefined. A gripper
device can be unresolved if the URCap that added the device is not
installed.

See new methods 'set(String, Device)' and 'get(String, T,
Class<T>)' in the 'DataModel' interface in the 'domain.data' Java
package

Added support for registering a "regular" URCap as conformant with a PolyScope gripper device:

A URCap can register its program node contribution/service as conformant with a PolyScope gripper device

This allows the URCap to act as well as be treated and seen the same
way as a URCap implementing the 'GripperContribution' interface

Registering as a PolyScope gripper device will enable other program
node contributions (could be contributed by a different 3rd party URCap)
to use the conformant program node contribution for e.g. creating a
template node

The registered conformant program node contribution will get the following abilities:

It will be included as a device in the list of installed PolyScope grippers

It can be inserted as a Gripper Node into the Program Tree by another program node contribution

It can have the gripper action configured by another program node contribution

See new 'contribution.gripper.conformant' Java package

For URCaps with a Swing-based UI, see the new
'getDeviceRegistrationManager(Class<T>)' method in the
'ContributionConfiguration' interface in the 'contribution.program' Java
package

For URCaps with a HTML-based UI, see the new
'getDeviceRegistrationManager(Class<T>)' method in the
'ProgramNodeConfiguration' interface in the 'contribution' Java package.
Note that the program node service must additionally implement the
'ProgramNodeServiceConfigurable' interface.

Improved user feedback for Gripper driver contributions:

Introduced new dialog displayed when loading an old installation on a
robot with a newer version of a Gripper URCap where some of the
registered custom user inputs are deprecated (using the
'deprecateUserInput(UserInput)' method in the
'CustomUserInputConfiguration' interface). The intention of the dialog
is to inform the user that the configuration "format" for the setup of
the gripper has changed and that the old setup potentially has been
adapted.

Added warning message in the Gripper Node to inform the user when
the custom setup of the gripper in the Installation is incomplete or
contains error, e.g. because no selection has been made in a combo box
input

The "The Robot Cannot Proceed with Normal Operation" dialog now pops
up if the robot is powered off when the Test, Grip Now or Release
Now button is pressed in Gripper Node

Improved support for Features:

Added support for contribution of Features to PolyScope:

URCaps can add their own Features with a suggested name to the installation in PolyScope

URCaps can remove their own Features from the installation in PolyScope

URCaps can update the pose for the position of their own Features

See new 'FeatureContributionModel' interface in the 'domain.feature' Java package

PolyScope integration:

Features added by URCaps are displayed in the new URCap section in the Features installation screen

A selected URCap Feature cannot be modified in any way by the user
or other URCaps (i.e., it cannot be removed, renamed, or have its
position changed)

Features contributed by URCaps are grouped by the URCap "owner" in
terms of the name of the URCap and its developer in all drop-down lists
in programs Nodes where a Feature can be selected, e.g. 'Move' Nodes.
User-defined Features are listed in the top of the feature drop-down
lists followed by features added by URCaps.

Note: Removing a Feature or updating the pose of a
Feature while loading an installation is not allowed. Such attempts are
ignored. This is to ensure the original Feature configuration in the
installation is always properly loaded

Added support for storing Features in the data model:

A URCap program node holding a reference to an unresolved Feature in
its data model automatically becomes undefined. A Feature can be
unresolved if a different installation (that does not contain the
feature) is loaded or if the Feature is removed.

See new methods 'set(String, Feature)' and 'get(String, Feature)' in the 'DataModel' interface in the 'domain.data' Java package

Added support for getting a corresponding 'TreeNode' instance for
child program node ('ProgramNode' instance) in the sub-tree under a
'TreeNode' instance:

This can for instance be used to gain access to the sub-tree under a
child program node encountered while traversing the sub-tree of the
parent node using the program node visitor

See new method 'locateDescendantTreeNode(ProgramNode)' method in the
'TreeNode' interface in the 'domain.program.structure' Java package

Added support for configuring a program node contribution's ability
to be used in the built-in PolyScope program debugging/execution control
functionality:

URCaps can configure whether or not the user is allowed to single
step or set a breakpoint (pause) on its own URCap program node as well
as any of the child nodes in the sub-tree under it

URCaps can configure whether or not the user is allowed to start the
program directly from its own URCap program node as well as any
selected child node in the sub-tree under it

See the new 'ProgramDebuggingSupport' interface in the new 'contribution.program.configuration.debugging' Java package

For URCaps with a Swing-based UI, see the new
'getProgramDebuggingSupport()' method in the 'ContributionConfiguration'
interface in the 'contribution.program' Java package

For URCaps with a HTML-based UI, see the new
'getProgramDebuggingSupport()' method in the 'ProgramNodeConfiguration'
interface in the 'contribution' Java package. Note that the program node
service must additionally implement the
'ProgramNodeServiceConfigurable' interface.

Extended the 'URCapInfo' interface with new methods for getting
information about the name of the URCap and the name of the vendor of
the URCap

Made various updates and improvements to Javadoc

: Reduced the amount of disk space taken up by an installed URCap

URCap SDK:

URCap samples:

Added new URCap samples:

'Grip and Release Swing': Demonstrates how to use gripper devices in
a template program node. The sample shows how to use the following new
API features

Getting the list of installed grippers available in PolyScope

Inserting a Gripper program node for a specific gripper device

Configuring a Gripper program node for grip and release actions

'Create Feature Swing': Demonstrates how to contribute a Feature to
PolyScope as well as how to store a Feature in the data model

Updated URCap samples:

Updated the 'Advance Gripper' URCap sample:

Updated the sample to demonstrate how to support the new Grip Detected and Release Detected feedback capabilities

Changed the implementation of the methods that generates script code
for performing grip and release actions to print out the gripper action
parameters to the console instead of showing them in a popup (through
script code)

Updated the following URCap samples to demonstrate how to allow the
user to use the built-in PolyScope program debugging/execution control
support for starting from and pausing/breaking on a selected program
node in the program tree:

'Ellipse' and 'Ellipse Swing'

'Cycle Counter' and 'Cycle Counter Swing'

Extracted strings used as ids for registering custom user inputs into constant fields in the 'Custom Gripper Setup' sample

Simplified the code for clearing the program sub-tree in the
'Ellipse', 'Ellipse Swing', 'Pick or Place' and 'Pick or Place Swing'
samples

Simplified the code that provides the node title for the Program Tree in the 'Tool Changer Swing' sample

Added document "Registering a Regular Contribution as a Conformant
Device" which describes how to register a regular URCap contribution as
conformant with a PolyScope device (registering_conformant_device.pdf
file)

Added document "Using a Device in a Template" which describes how to
use a PolyScope device in a template program node
(using_device_in_template.pdf file)

Controller

New URScript utility functions

In order to support usage of conveyor tracking, two URScript functions have been added:

Dashboard server

getUserRole - provides the active user role such as PROGRAMMER,
OPERATOR, NONE, LOCKED. User role can be set or cleared by
"setuserrole".

Bug fixes

PolyScope GUI

Fixed an issue with some USB drives causing "out of memory" exceptions when attached for extended period of time.

Fixed an issue where arrows in Move Tool did not get correct colours and labels when "Base" or "Tool" features are selected.

Fixed an issue where it was not possible to create two waypoints less than 0.05 mm apart.

Fixed issue where a successfull update of the joint firmware would result in error dialog show in PolyScope.

Fixed an issue, where the input/output fields of a Modbus Register signal was wrongly showing a formatting error.

Fixed a bug where waypoint could not be renamed if it used with a user defined feature.

The blue program indication arrow is now showing when executing waypoints.

Fixed a bug with copying variable waypoints between programs.

Fixed a bug where rotating wrist 3 on UR3 with infinite rotation, did not correctly show automove screen.

Fixed an issue where the "Save Program" file dialog would not be
displayed when "Save changes" was selected in the dialog appearing after
attempting to exit to the Welcome screen from the program with unsaved
changes.

Fixed an issue in the "Initialize Robot" screen where the "Active
Payload" number field would not maintain its warning state (yellow
background) when the field was pressed.

Fixed an issue in the Program Tree where the subtree containing the last executed node could not be minimized.

Fixes a minor memory leak within the Flight Recording feature.

Controller

Fixed an issue where first Modbus message on each signal was delayed by up to 1s.

Fixed "No Controller" issue when application is using a lot of secondary programs (either directly, or through one of URCaps)

Fixed an issue where XML-RPC call could result in controller crash

Fixed issue where breaking out of a "continuous if" and executing a
subsequent "wait" would cause an instant stop and often a protective
stop. Robot will now instead per default brake at a fixed rate. To
override this behaviour and explicitly control braking, use stopj() or
stopl() script commands

Fixed issue where requesting a higher acceleration from stopj() or
stopl() than the robot can deliver would sometimes result in a
protective stop. If such parameters are given, the stopj() and stopl()
will at runtime be limited to decelerate at a rate within the limits of
the robot.

URCap Software Platform

Fixed issue where a Gripper contribution could define a custom UI in
the Installation that did not fit on the screen. This could occur,
because any added non user input UI element, such as a text component or
a filler, was not taken into account in the maximum limit of 10 UI
elements allowed and hence the 'TooManyUserInputsRegistered' exception
was not always thrown. Now, the 'TooManyUserInputsRegistered' exception
will be thrown when appropriate.

Fixed issue where the "Unhandled exception in URCap" dialog was not
displayed, when a Java exception occurred within the scope of a call to
the implementation of the overridden
'configureContribution(ProgramNodeConfiguration)' method in a HTML-based
URCap with a program node service, that implemented the
'ProgramNodeServiceConfigurable' interface.

Fixed issue where pressing the Test or Grip Now/Release Now buttons
in the Gripper program node could result in a runtime exception. This
would occur, if the corresponding script code for the preamble, grip or
release actions (the result of calls to the
'generatePreambleScript(ScriptWriter)',
generateGripActionScript(ScriptWriter)'' and
'generateReleaseActionScript(ScriptWriter)' methods) generated by a
gripper contribution made use of conditional statements, such if- and
while-statements.

Fixed issue where the "There is an error with the URCap that
contributes this node" screen, which is displayed instead of the UI for
an Installation node contribution when an error occurs while entering
the URCap installation screen, would incorrectly be shown, if a Java
exception had occurred while the Installation contribution generated
script code for the program preamble. Now, the URCap UI will be shown
instead.

Fixed issue where the "Unhandled exception in URCap" dialog
displayed during startup of PolyScope, if the code of an Installation
contribution or Gripper contribution generated an unhandled Java
exception, would not remain on the screen (because it was quickly
closed).

URSim

Serial number length changed to 10 digits to match production robots.

Embedded

Fixed a bug were in very rare cases, robot could continue to move after a protective stop.