Release note Software version 5.2.x.x

Backwards Compatibility

  • After installing SW 5.2, it is not possible to downgrade to older versions of software
  • Leading white spaces in string literals are no longer ignored.


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


RELEASE NOTES 5.2.1 - 21/03-2019

Released Versions

  • UR Software:
  • URSim: 5.2.1
  • URSim Virtual Machine: 5.2.1
  • Manual: 5.2.1


  • Fixed the issue with Teach Pendant Configuration
  • Fixed issue in embedded system


RELEASE NOTES 5.2.0 - 05/12-2018

Released Versions

  • UR Software: 5.2.061336
  • URCap Software Platform:
    • URCap API: 1.5.0
    • URCap SDK: 1.5.0
  • URSim: 5.2.0
  • URSim Virtual Machine: 5.2.0
  • Manual: 5.2.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

  • Safe Home: Enabled new safety setting named Safe Home where a position can be set to trigger a safety output.
  • Dual Conveyor: Extended Conveyor Tracking functionality to allow tracking of two different non-simultaneous conveyors.
  • Powered Tool Output: Enabled support to use Tool Digital Outputs as a source of power.
  • Normal Mode:
    • UR3e: 600 mA
    • UR5e: 1000 mA
    • UR10e: 1000 mA
  • Dual Power Pin Mode:
    • UR3e: 600 mA
    • UR5e: 1500 mA
    • UR10e: 2000 mA
  • NPN/PNP/Push-Pull for Tool Outputs: Enabled support to change the Output Mode for Tool Digital Outputs.
  • 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

  • Added support for assigning a user-defined name to a TCP.
  • Enable the user to define and edit a customized Home Position (in the Installation Tab) to use as a Safe Home that triggers a safety output.

  • Enabled ability to sync the defined Home Position to the safety system (i.e., a Safe Home Position). With a Safe Home Position, Configurable I/O pins can be assigned to indicate if the robot is at rest at the Safe Home Position.
  • Added a new Home program node so users can easily move the robot to the Home Position.

  • Dual Conveyor Tracking
    • Enabled possibility to define two different conveyors in an installation.

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

  • Enabled the use of Tool Digital Outputs as a power source. Users can make select selections in the Tool I/O page on the Installation Tab.
  • Filtered out pins of Digital Output menus when Dual Pin Power is selected.
  • Enabled ability to specify the Tool Digital Outputs to use NPN, PNP, or Push Pull.
  • Made changes to the Tool I/O screen on the Installation Tab.
    • Added Tool Output Voltage selection.
    • Added Analog Inputs domain selection.

  • Made changes to the I/O Tab.

  • Changed the layout of the 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.
    • Added the ability to filter the signal based on type and Modbus Unit.

  • Added I/O actions for Modbus Signals which were previously only available for physical I/Os.
    • Made Modbus Signals appear on the Installation → IO SetupTab 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). Use the "+" operator to concatenate two strings. Other types allowed.
  • Enabled new string utilitybuilt-in functions:
    • str_atallows direct access to the character in a string.
    • str_lenreturns the length of a string.
    • str_empyverifies if a string is empty.
  • Enabled new string search built-in functions:
    • str_findreturns the index of the first occurrence of one character or string within another string.
    • str_subreturns a sub-string within another string
  • Enabled new string conversion built-in functions:
    • to_strconverts a number into a string.
    • to_numconverts a string into a number.
  • 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 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 functions "conveyor_pulse_decode", "set_conveyor_tick_count",and "get_conveyor_tick_count". They are 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: (See new API interface 'TCPContributionModel'):
    • 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
    • See new API interface 'TCPContributionModel'
    • 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
    • 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.
    • 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.
    • Added option to specify the target robot position as a pose.
    • Added option to specify the target robot position as a joint position vector.
    • 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:
    • 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.
    • 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:
  • 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 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.



  • Created new and updated URCap samples:
    • Added new 'Tool Changer' URCap sample demonstrating the new API features 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 about the samples
    • Changed the "default" value for the IP address text field 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 the issue with the filter for +58V monitoring which occasionally faulted while turning on
  • Fixed the issue with the incorrect Elbow Joint position that faulted during startup
  • Fixed the issue that occurred when pressing and releasing the E-Stop while in back drive that caused a Robot State machine critical error
  • Fixed the issue when turning on SCB with no fuse or a blow fuse
  • Fixed the issue with the I/Os when they would not turn off while running with external power if an external power source was the supplied
  • Fixed the Tool/Elbow speed violation issue that reported in mm/s but should be in m/s
  • Fixed the issue that occurred when pressing and releasing the E-Stop button quickly while having the Robot Arm powered which could result in a fault from the safety system.



  • Fixed the issue where the program does not resume after pressing the E-Stop button.
  • Fixed the issue where a MoveP failed if it was the first node of a program.
  • Reduced jerk in trajectories with hard accelerations.


PolyScope GUI

  • Fixed the issue where, after selecting an analog output in "Set Node," it was not possible to select any other radio button except "No Action".
  • Fixed the issue where running a program with a MoveJ node and point feature resulted in compiler error when using Step Play.
  • Fixed the issue where removed Init variables did not clear initial values for variables defined.
  • Fixed the issue where modifying an installation did not stop the current program.
  • Fixed the issue where an unsaved program cannot find the installation in a sub-directory.
  • Fixed the issue where the installation preamble for playing a program was incomplete.
  • Fixed the issue where no notification was given when the Payload entered is too high.
  • Fixed the issue where Installation variables were being auto-saved.
  • 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 an installation and a 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 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 issue where a program could be executing while on the 'Automove' screen after the "Move here" button was tapped in 'Features' on 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 on the Tool Center Point screen in the Installation Tab where the text on the 'Finish' button did not correspond to the description text in the 'Payload Estimation' wizard (i.e., "magic wand" icon) for several non-English languages.
  • Fixed the issue where it was possible to enter a speed greater than the allowed maximum limit (180 deg/s for UR5 ,UR10 and 360 deg/s for UR3) from Movej and Waypoint nodes.
  • 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 invisible exit button in Recovery Mode when using the Japanese language.
  • Fixed the inadequate suggestions for e-Series error codes.
  • Fixed the issue where some of the items under the 'URCaps' section in the Installation Tab were not visible when too many URCaps were installed. Now, users can scroll through the items when needed.


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.
  • Fixed the issue with Swing combo boxes in URCap toolbar contributions where the item list would not be visible in some situations if the list was short.
  • Fixed the issue where an input validation error message in a URCap toolbar contribution would appear behind the toolbar.
  • 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 Calibration Manual).



  • Fixed incorrect error messages that occurred in protective stops.