Universal Robots Forum

Release of URCaps SDK 1.4 and PolyScope 3.7 and 5.1

Dear Developers,

Universal Robots has just released PolyScope 3.7.0 for CB3, and PolyScope 5.1.0 for e-Series.
This is followed by a new URCaps SDK - 1.4.4, which contains API 1.4.0.

New features

This is a minor release, which include a number of new features in respect to the URCaps API;


  • Provided support for naming Waypoint nodes:
    • See the new ‘createWaypointNode(String)’ method provided by the ‘ProgramNodeFactory’ API interface in the ‘program’ domain Java package.
    • Introduced a new method, ‘createMoveNodeNoTemplate()’, in the ‘ProgramNodeFactory’ interface. This method creates a Move node with a non-default configuration. This means the resulting Move node does not contain a single Waypoint child node. This method can be used for applications where a Move node with a default configuration is not needed, such as in situations where all the child Waypoint nodes should have custom names.
      Note: At least one Waypoint child node must be under a Move node for the Move node to be valid.
  • Updated Javadoc with more details regarding:
    • ‘ContributionProvider’ API interface: Javadoc for the ‘get()’ method now specifies when the method should be called.
    • Javadoc for the following methods now states that an ‘IllegalStateException’ exception is thrown if the methods are called outside an ‘UndoableChanges’ scope in URCaps with Swing-based UIs:
      • ‘DataModel’ API interface: All ‘set(…)’ methods
      • ‘TreeNode’ API interface: All methods that manipulate the sub-tree (i.e., the methods ‘addChild(ProgramNode)’, ‘insertChildBefore(TreeNode, ProgramNode)’, ‘insertChildAfter(TreeNode, ProgramNode)’, and ‘removeChild(TreeNode)’).
      • All "set(…)" methods in API interfaces for built-in PolyScope program nodes.
    • ‘KeyboardNumberInput’/‘KeyboardTextInput’ API interfaces: Javadoc for all ‘show(…)’ methods now mention the ‘JComponent’ (Swing GUI component) passed to the method must be visible on the screen.


  • Updated the Ellipse and Ellipse Swing URCap samples to demonstrate how to assign a custom name to a Waypoint node.
  • Changed Loading and Copying URCap nodes:
    All modifications to the supplied non-empty data model in the constructor for installation and program node contributions are ignored during calls to the ‘createNode(…)’ methods in the installation and program node services in the following situations:
    • When loading a program node contribution
    • When loading an installation node contribution
    • When a program node contribution is copied in the program tree
  • This change is introduced to ensure the original node configurations are properly loaded or copied, and to align with existing behavior when loading and copying program node contributions containing sub-trees where the sub-tree generated in the node constructor is ignored and the original sub-tree is inserted instead.
  • This is introduced for both HTML-based and Swing-based URCaps.
  • Documented changes in the URCap tutorial (both versions) in sections "7.2: Making the Customized Installation Node Available to PolyScope" and "8.5/8.6: Loading Programs with Program Node Contribution"
  • Compatibility notice: This change might affect existing URCaps that make modifications to the data model directly in the installation or program node constructor


  • Fixed issue where adding a Swing JPanel to the JPanel provided by the ‘buildUI()’ method in the ‘SwingProgramNodeView’/‘SwingInstallationNodeView’ API interface resulted in an "AuthorizationException: Method not supported from URCaps exception.
  • Fixed issue where the first undo operation would not restore an empty data model for values with primitive data types (e.g., integer, double, etc.).
  • Fixed issue related to the dialog "IllegalStateException: No node currently selected" Java exception appeared when users interacted with the Command Tab screen for a URCap node after loading a program containing URCap program nodes from at least two different URCaps.
  • Fixed issue where the ‘setValue(double)’ method in the ‘AnalogIO’ API interface applied an incorrect value to the Analog Output.

For general release notes about new features and bugfixes for PolyScope, please refer to the general release notes for;
PolyScope 5.1
PolyScope 3.7

I would like to recommend you to check out the latest SDK, which is now available under the Download Center.

Happy development!