Release note Software version 3.8.x.x

The latest software version is at the top of this article.

RELEASE NOTES 3.8.0 - 05/12-2018

Released Versions

  • UR Software:
  • URCap Software Platform:
    • URCap API: 1.5.0
    • URCap SDK: 1.5.0
  • URSim: 3.8.0
  • URSim Virtual Machine: 3.8.0
  • Manual: 3.8.0
  • Support Log Reader: 3.6.110

Summary of updated content regarding this release:
User Manual 
Script Manual 
Offline Simulator 
Robot Image Software 
Robot Software 
Support Log Reader



Key features

  • Dual Conveyor: Extended the Conveyor Tracking functionality to allow tracking of two different conveyors, not simultaneously
  • URCap API: Added support for Tool Center Points (TCPs)
  • URCap API: Added support for guiding users to move the robot to a specified target position through the 'Automove' screen


PolyScope GUI

  • Dual Conveyor Tracking

Enabled possibility to define two different conveyors in the installation


  • Included the option to select the conveyor to track in the Conveyor Tracking program node.

  • Added support for users to create a TCP name
  • Changed the layout of Modbus I/O Tab to show all Modbus Signals created in an installation, including register-type signals. 
    • Made the connection status and signal addresses available on the I/O Tab.
    • Added possibility to filter the signal based on the type and Modbus Unit.

  • Added I/O actions for Modbus Signals which were previously only available for physical I/Os.
    • Modbus Signals now appear on the Installation → IO Setup Tab and can be filtered using the drop-down menu.



  • Created new string manipulation functionalities:
    • Created a new script function (str_cat) that returns the concatenation string of two operand (e.g., type string, bool, integer, float, list_of_values, or pose).
  • Enabled new string utility built-in functions:
    • str_at allows direct access to the character in a string.
    • str_len returns the length of a string.
    • str_empy verifies if a string is empty.
  • Enabled new string search built-in functions:
    • str_find returns the index of the first occurrence of one character or string within another string.
    • str_sub returns a sub-string within another string
  • Enabled new string conversion built-in functions:
    • to_str converts a number (integer or float) into a string.
    • to_num converts a string into a number (integer or float, according to the presence of a '.')
  • Added a new concept of encoders
    • Added two new built-in functions to the setup encoders called encoder_enable_set_tick and encode_enable_pulse_decode
    • Added a new built-in function called encoder_get_tick_count to query the current tick count of an encoder
    • Added a new built-in function called encoder_set_tick_count to set an absolute tick count to an encoder. This function is useful (e.g. for feeding the readings from a MODBUS sensor to the encoder), but only usable if the encoder is enabled for setting the tick count
  • Updated the Conveyor Tracking functions
    • Enabled the two built-in functions track_conveyor_linear and track_conveyor_circular to accept an extra optional argument to designate the encoder to hook up to the Conveyor Tracker. If this argument is omitted it is assumed the encoder no. 0 is used.
    • Depreciated the three-built-in function conveyor_pulse_decode, set_conveyor_tick_count and get_conveyor_tick_count. They are all hard coded to work with encoder no. 0


URCap Software Platform


  • Improved support for TCPs:
    • All functionality is in the new 'domain.tcp' Java package
    • Support for contribution of TCPs to PolyScope:
      • Enabled URCaps to add their own TCPs with a suggested name to the installation in PolyScope
      • Enabled URCaps to remove their own TCPs from the installation in PolyScope
      • Enabled URCaps to update the Tool Output Flange offset of their own TCPs
      • PolyScope integration:
        • A TCP added by a URCap cannot be modified in any way by the user or other URCaps (i.e., it cannot be removed, renamed, or have its Tool Output Flange offset changed).
        • TCPs 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 PolyScope screens where a TCP can be selected (i.e. in the 'TCP Configuration) on the installation screen, using 'Set' and 'Move' program nodes. User-defined TCPs are listed in the top of the TCP drop-down menu followed by TCPs added by URCaps.
        • Note: Removing a TCP or updating the Tool Output Flange offset of a TCP while loading an installation is not allowed. Such attempts are ignored. This is to ensure the original TCP configuration in the installation is always properly loaded.

  • Enabled possibility of TCPs added by a URCap to be removed from an installation when the loaded installation depends on a URCap which is not installed. This occurs when a user taps the 'Remove from Installation' button in the "Missing URCap" installation screen (that replaced the UI provided by the URCap installation contribution).

  • Access to the list of TCPs:
    • URCaps can access the list of all TCPs in PolyScope including all user-defined TCPs and all TCPs added by URCaps
    • See new API interface 'TCPModel'
  • Added support for storing TCPs in the data model.
    • A URCap program node holding a reference to an unresolved TCP in its data model automatically becomes undefined. A TCP can be unresolved if a different installation (that does not contain the TCP) is loaded or if the TCP is removed.
    • Added a new method 'set_tcp(TCP)' in the 'ScriptWriter' API interface (in the 'domain.script' Java package)
  • Made support for requesting the user to move the robot to a desired target position through the 'Automove' screen
    • Added option to specify the target robot position as a pose.
      • The Automove function moves the robot TCP to the target position linearly in Cartesian space. If this is impossible, the robot moves to the target linearly in joint space.
      • The current joint positions of the robot are used as a starting point for inverse kinematics to calculate a target joint vector corresponding to a desired pose, which takes the currently active TCP offset into account.
    • Added option to specify the target robot position as a joint position vector.
      • In this case, the Automove function moves to the specified joint position vector linearly in joint space without taking the currently active TCP offset into account.
    • See the new API interface 'RobotMovement' in the new 'userinteraction.robot.movement' Java package. This interface is accessible through the new 'getRobotMovement()' method in the 'UserInteraction' API interface (in the 'userinteraction' Java package).
  • Listing of URCap program node types in the 'Structure' view in the Program Tab:
    • Improved the standard built-in sorting of URCap program node types in PolyScope, so all node types contributed by a URCap are grouped together and sorted/ordered.
    • A URCap can now explicitly specify a custom ordering of its program node contributions:
      • This new API feature is supported for program node contributions with Swing- as well as HTML-based user interfaces.
      • Using this new feature is optional.
      • For Swing-based URCaps, see the new method 'setDisplayOrderId(double)' in the 'ContributionConfiguration' API interface in the 'contribution.program' Java package.
      • For HTML-based URCaps, the program node service also implements the new 'ProgramNodeServiceConfigurable' API interface in the 'contribution' Java package. This interface provides access to the 'ProgramNodeConfiguration' API interface (also in the 'contribution' Java package), which allows for specifying a custom node ordering.
  • Deprecated the method 'set_payload(double)' in the 'ScriptWriter' API interface due to side effects caused by the script code generated by this method
  • Provided access to API providers in the 'URCapAPI' API interface for contributions with HTML-based user interfaces:
    • Added getters for the context-specific API providers offering access to API functionality relevant to installation and program node contributions. These are the same API providers used by contributions with Swing-based user interfaces.
    • See new methods 'getInstallationAPIProvider()' and 'getProgramAPIProvider()' in the 'URCapAPI' API interface (in the 'domain' Java package)
    • All existing methods in the 'URCapAPI' interface are deprecated
    • Note: In future API versions, no new API functionality will be added and directly accessible in the 'URCapAPI' interface. The new providers accessible in this interface must be used instead.
  • Made various updates and improvements to Javadoc
  • Changed the behavior after a request has been made to start or stop a daemon. Now, when the request execution finishes, it automatically triggers an update (re-rendering and invocation of 'isDefined()' methods) of the Program Tree. This ensures the correct "defined/undefined" state is reflected for any program node contribution with an implementation of the 'isDefined()' method that depends on the run state of the daemon.



  • New/updated URCap samples:
    • Added new 'Tool Changer' URCap sample demonstrating the new API features for contributing TCPs to PolyScope and accessing the list of available TCPs
    • Updated the 'Ellipse' and 'Ellipse Swing' URCap samples to demonstrate how to request the user to move the robot to a specified target position through the 'Automove' screen.
    • See section "10: URCap examples overview" in the URCap tutorial for more details
    • Changed the "default" value for the IP address when the data model does not contain a user-defined IP address from an empty string to "" in the 'User Input' URCap SDK sample.
  • Added the "12.1: Advanced Compatibility" section to the URCap tutorial for Swing-based URCaps. The content corresponds to the existing section with the same title in the HTML-based tutorial.



Bug Fixes



  • Fixed issue where timestamp on safety messages were incorrect.
  • Fixed the issue where the program does not resume after pressing the E-Stop button.
  • Fixed issue where "key waypoint correction" would not work on some UR10 robots.


PolyScope GUI

  • Fixed the issue where a Dummy Field was being displayed in the Edit Pose Screen (on URSim).
  • Fixed the issue where modifying an installation did not stop the current program.
  • Fixed the issue where an unsaved program could not find the installation in a sub-directory.
  • Fixed the issue where an installation preamble for playing a program was incomplete.
  • Fixed the issue where no notification given when Payload entered is too high.
  • Fixed the issue where the Submit button was enabled when a text field was blank while trying to save a program.
  • Fixed the issue where it is required to keep installation and program in the same folder.
  • Fixed the issue where a dialog box–in rare situations–appeared with an unhandled null pointer Java exception when undoing changes in a program containing a suppressed fixed position 'Waypoint' node and a variable position 'Waypoint' node while the 'Graphics' Tab was open.
  • Fixed the issue where the name of a 'Waypoint' program node (e.g. "Waypoint_1") would not be "released" in some situations when undoing changes in a program containing a fixed position 'Waypoint' node and a variable position 'Waypoint' node while a different tab than the Command Tab was open.
  • Fixed the issue where it was possible to enter the Automove Tab while the robot was not fully initialized when the 'Move here' button was tapped on the Features screen of the Installation Tab or the Command Tab for a Waypoint program node. 
  • Fixed the issue in the 'Tool Center Point' Installation screen where it was possible to enter the "Teach TCP position" and "Teach TCP orientation" wizards (i.e.,"magic wand" icon) when the robot was not fully initialized. 
  • Fixed the issue where an undefined 'Move' or 'Force' program node in some situations would become defined again.
  • Fixed the borders around the 'Backspace' and 'Submit' buttons in the 'Expression Editor' keyboard.
  • Fixed the issue where a program could be executing while on the Automove screen after the "Move here" button was tapped on the Features screen in the Installation Tab or in the Command Tab for a 'Waypoint' program node. Any running program now automatically stops when the Automove screen is entered.
  • Fixed the issue where starting a program with a 'Pallet' program node in some situations would result in a "Value error: 'cnt_1' is not initialized to a value" runtime error. This could occur if the 'Set Initial Variable Values' option was deselected (after being selected) in the 'Robot Program' program root node.
  • Fixed the issue where the 3D robot movement simulation in the Automove screen showed a different starting position from the real robot.
  • Fixed the issue where it, in some situations, could take a long time to load a program containing program nodes from certain URCaps.
  • Fixed the problem when starting a program through an external input.
  • Fixed the issue where it was possible to enter speed greater than the allowed maximum limit (180 deg/s for UR5 ,UR10 and 360 deg/s for UR3) from Movej and Waypoint nodes.


URCap Software Platform

  • URCap SDK samples:
    • Fixed the issue where the text in IP address text fields and number fields was incorrectly left-aligned instead of right-aligned in the 'Localization Swing' and 'User Input' samples. This was fixed for the "IP Address" and "Positive number" fields in 'User Input' sample and the "Enter your height" field in 'Localization Swing' sample. The sample User Input are now aligned with the PolyScope User Inputs.
    • Fixed the issue in the 'Localization' and 'Localization Swing' samples where the text in the 'Units' drop-down menu was truncated in Japanese
    • Fixed the issue in the 'My Daemon' (HTML-based) sample, where tapping the 'Start Daemon' and 'Stop Daemon' buttons froze PolyScope because it blocked the call to start/stop the daemon.
  • Aligned the behavior of user input validators created by URCaps using the 'InputValidationFactory' API interface as well as custom validators implemented by a URCap with PolyScope. When a text field has a validation error, the text field will still be red, but now no validation error message will be displayed in the following situations:  
    • The text field is empty (e.g. because the text field was cleared by the user)
    • A virtual keyboard accepting IP addresses will not display any error message
  • Fixed the issue where calling the 'get()' method on a contribution provider ('ContributionProvider' API interface) in the constructor for a program node contribution, in rare situations, could return another existing contribution instance. A "This method should not be called directly from ProgramNodeContribution constructor" IllegalStateException exception will now be thrown instead. 
  • Fixed the issue where the name of a variable would not be "released" in some situations when the variable was stored in the data model and used to configure a program node that failed to be inserted in the Program Tree.
  • Fixed the issue where it could take long time to load a program containing program nodes from certain URCaps in some situations.



  • Fixed tolerance for validation of the Dual-Arm Calibration (See the Calibration Manual).



  • Fixed incorrect error messages that appeared during protective stops.