Release Notes

Motion Plus 1.2.0 (Release Candidate)

The 1.2.0 release candidate requires Polyscope 5.21 and the urcap file MotionPlus-1.2.36.urcap.

New Features and Improvements

  • Linear axes are now available. Up to six axes (rotary or linear) are supported.

  • All the axes in a group no longer need to be enabled when jogging an axis group. Now only the axes whose target positions are commanded to change must be enabled.

  • Small performance improvements in the controller execution time while running programs that manipulate axis groups.

  • We have relaxed the conditions for when protective stops are produced when an axis has a fault, is unexpectedly disabled, or status updates are no longer received from EtherCAT drives. They now occur only if a URScript attempts to jog the afflicted axis. This should make it easier to recover from protective stops involving the external axes.

  • The calibrate_linear_axis command has a new argument called is_mounted with a default value of false to help users calibrate linear axes when the robot is mounted to the axis.

  • EtherCAT start error details are now displayed on the URCap installation page, rather than in popup message dialogues.

  • Maximum filename length increased from 25 characters to 70 characters in Export Log dialog of MotionPlus URCap installation page.

  • Timeouts for Start Service and Stop Service buttons for MotionPlus URCap installation page increased from 10 seconds to 30 seconds.

  • URCap will now check the UR SW version on startup and disable itself if an incompatible version is detected.

  • Added new URScript functions ethercat_read_axis_sdo() and ethercat_write_axis_sdo() to read and write SDOs for an external axis drive.

  • URCap frontend log messages are now captured in the PolyScope log file.

  • Added support for infinite timeouts to ethercat_* functions.

Bugs Fixed

  • Fixed a bug where a movel_with_axis_group performed with frame tracking on and only changes the orientation of the TCP in the tracked frame could cause rapid changes in axis velocity

  • Fixed a bug where a user could encounter an “axis position is not known” error while the EtherCAT master is running immediately after calling axis_group_update_axis().

  • Fixed a bug where a user could encounter an error saying “An enabled external axis is no longer receiving drive status updates” after running a MotionPlus program then changing installation files and running a non-MotionPlus program.

  • Fixed an issue where a protective stop would occur if an external axis goes into Safe Torque Off while the robot is paused or in Safeguard Stop.

  • Fixed a bug where a spike in velocity could occur if an axis_group_speedj or an axis_group_movej immediately follows a movec_with_axis_group and the axes are still moving.

  • Fixed a numerical issue where a discontinuity in axis velocity could occur between two xxx_with_axis_group commands if no change in axis velocity is needed between the two commands.

  • Fixed a bug where a system with multiple axis groups configured and one axis group is performing coordinated motion with the robot and the others are jogging could result in the Polyscope speed slider being ignored by the jogging axis groups.

  • Fixed a bug where the robot joints could not be jogged on the Polyscope jogging screen after an axis faults and with the robot attached to the axis.

  • Fixed a regression where pressing the Polyscope stop button while running servoj_with_axis_group would not correctly transition to the robot stopped state.

  • EtherCAT master could crash during initialization due to malformed log statements.

  • EtherCAT master could send out extra PDOs when UR Program was temporarily blocked (e.g. closing many XML-RPC connections) causing some EtherCAT drives (e.g. Mitsubishi) to fault.

  • The ethercat_home_axis() function would return before homing had fully completed.

  • Runtime error for external axis being unexpectedly disabled would be raised if one left an axis enabled at the end of a program and then loaded and started a new program not using the EtherCAT Master.

  • Selected EtherCAT network interface would be forgotten by MotionPlus Service if service crashed and then restarted itself.

  • EtherCAT master would sometimes deadlock on shutdown.

  • Warning popup for Simulated EtherCAT network being used as fallback would erroneously appear whenever an installation file was loaded that did not contain a saved EtherCAT interface.

  • The ethercat_home_axis() function could take longer than the requested timeout to actually time out.

  • MotionPlus Service could crash if ethercat_home_axis() was called before EtherCAT Master was started.

  • Stopping the program while EtherCAT homing was in progress would not cause the homing operation to stop too.

  • EtherCAT error 305.9 would sometimes be reported after the EtherCAT Master was started.

  • MotionPlus Service could crash if ethercat_config_axis() was called within an invalid slave address.

Motion Plus 1.1.0 (Release)

The 1.1.0 release requires Polyscope 5.19 and the urcap file MotionPlus-1.1.51.urcap.

New Features and Improvements

Major Changes

  • This release supports up to four rotational external axes. See here for important limitations.

  • We no longer recommend using an USB-Ethernet adapter for EtherCAT due to communication stability problems. Only the use of the control box primary ethernet port is supported for EtherCAT. See here for more info and details on integrating into applications that also require TCP/IP communication with the robot.

  • URCap will now check the Polyscope version on startup and disable itself if an incompatible version is detected.

World Model

  • A new special frame called “flange” has been added to the world model. It’s placed on the robot’s tool flange and can only be moved by moving the robot. See here and here for more info.

  • The reset_world_model() function now disables all the external axes before they are deleted from the controller’s world model.

Motion Control

  • When frame tracking is enabled and tracking an external axis, the MOTION path offset mode will compute the motion frame based on the velocity of the TCP in the tracked frame instead of the base frame of the robot.

  • Blends between movej(), movej_with_axis_group(), movel(), and movel_with_axis_group() with frame tracking enabled are now supported. See here for remaining unsupported blends when frame tracking is enabled.

  • The movep_with_axis_group() and movec_with_axis_group() commands have been adjusted to eliminate unexpected robot motions while performing coordinated motion with frame tracking enabled. The magnitude of the unexpected robot motions depended on how far the TCP is from the tool flange, the motion blend radius, and the velocity of the external axis. The changes made to the movep_with_axis_group() and movec_with_axis_group() commands are breaking changes from MotionPlus 1.0 in the sense that the orientation trajectory they follow in the tracked frame no longer exactly matches that of movep and movec, respectively.

    These animations show the behavior before and after this improvement when running a script of the general form:

    frame_tracking_enable(...)
    movep_with_axis_group(..., r=0.001, ...)
    movec_with_axis_group(..., r=0.001, ...)
    movep_with_axis_group(..., r=0, ...)
    frame_tracking_disable()
    

    Before (MotionPlus 1.0)

    Now (MotionPlus 1.1)

    img

    img

    These animations show the behavior before and after this improvement when running a script of the general form:

    frame_tracking_enable(...)
    movep_with_axis_group(..., r=0.0, ...)
    movec_with_axis_group(..., r=0.0, ...)
    frame_tracking_disable()
    

    Before (MotionPlus 1.0)

    Now (MotionPlus 1.1)

    img

    img

  • The movep() and movec() command (as well as their axis group counterparts) now allow minimum blend radii of 0.00005m (down from 0.001m).

Safety

  • High-torque hold is now disabled when the robot is stationary and an external axis starts moving. It’s reenabled when the axis is stopped. This makes the robot act softer if a part mounted in an external positioner runs into the robot.

Performance

  • Optimized the controller execution time for all robot and axis group motions to reduce “Runtime too much behind” errors.

  • Further optimized the controller execution time for movej_with_axis_group() and movel_with_axis_group() to reduce “Runtime too much behind” errors.

  • Eliminated a periodic and seemingly random jump in controller execution time while controlling an external axis.

Axis Homing

EtherCAT

  • Removed server_port  and server_host  parameters from all MotionPlus EtherCAT URScript functions.

  • Extra error details are now displayed on the URCap installation page when the EtherCAT Master encounters a runtime error. This should reduce the need to export and inspect the EtherCAT log for identifying errors.

Logging

URCap frontend log messages are now captured in the PolyScope log file.

Bug Fixes

World Model

  • Calling any move command (movel, movej, movep, movec) and providing joint angles as the goal argument after first calling the same command with a world model frame name as the goal argument no longer incorrectly reports that the input arguments are mangled.

  • Attaching a frame to an axis after enabling frame tracking on the axis no longer throws a runtime exception.

Motion Control

  • A torque overload error is no longer reported in some situations between motions when frame tracking and path offset are enabled simultaneously. -movel_with_axis_group() no longer reports a runtime exception if the TCP motion is a pure rotation with no translation.

  • Motion computed by path offset when using the MOTION offsetting mode has been corrected if the Polyscope speed slider is less than 100%.

  • A runtime excpetion is no longer thrown if frame tracking and path offsetting was enabled together but no call to path_offset_set had been made.

  • An issue where path offsetting could erroneously report that the maximum acceleration limit was exceed under some conditions when also tracking an external axis has been addressed.

  • Path sanity protective stop is no longer thrown when disabling path offsetting while frame tracking under specific conditions.

  • Infinite axis group accelerations are no longer commanded when movel, movec, movep, or movej to movel_with_axis_group(), movep_with_axis_group(), movec_with_axis_group(), or movej_with_axis_group().

  • axis_group_movej() no longer runs indefinitely when zero acceleration and speed factors are provided.

  • axis_group_speedj() no longer runs indefinitely when a zero acceleration factor is provided.

  • Fixed a bug where resuming a paused servoj_with_axis_group() command with frame tracking enabled would then move to the wrong target.

  • Fixed a bug where calling axis_group_update_axis to change the zero-position pose or the type will then cause an error saying the axis position is unknown if another call that uses the axis position occurs immediately afterward.

  • Fixed a bug where a program that doesn’t control any axes would report that an axis became unexpectedly disabled when starting, if the MotionPlus service was stopped while axes are enabled.

EtherCAT

  • The ethercat_home_axis_direct() URScript function no longer temporarily disables the homed axis upon returning.

  • The Distributed Clock no longer becomes unsynchronized due to missed EtherCAT network commands taking excessively long to time out.

  • The TX PDO offsets and RX PDO offsets are no longer swapped. This prevented control of multi-axis EtherCAT drives.

  • The “Service State” label on the URCap Installation Page could be truncated while displaying an error message.

  • The MotionPlus service no longer crashes when trying to send a response to a disconnected XML-RPC client.

  • Sporadic and long delays in EtherCAT Master cycle time that could lead to EtherCAT drive faults during long-running programs have been addressed.

  • Corrected a spurious failure in detecting the number of slaves on the network that would disable the EtherCAT Master.

  • EtherCAT Master no longer adjusts SDO cycle time even when Distributed Clock was enabled.

  • A protective stop no longer occurs when attempting to run a program after an axis has faulted and MotionPlus EtherCAT service exited uncleanly

  • Addressed an issue where attaching an axis to another using the axis_group_add_axis() command would report that the current position of the parent axis is unknown and the EtherCAT Master needs to be started.

  • EtherCAT Master now reports “failed to get MASTER STATE” error when there is a problem with the EtherCAT network connection, rather than “number of connected slaves and configured slaves do not match” erroneously.

  • EtherCAT Master would report a “Failed to set MASTER STATE to OP” error when it should have been reporting “PDO receive timed out for N consecutive cycles”.

  • Addressed an issue where the MotionPlus service would crash after homing and indicate “XMLRPC: Failed with error code -500”

  • Corrected a long delay in EtherCAT Master cycle time during first use after robot reboot.

  • Fixed a bug where an error saying the axis position is unknown for an axis even after ethercat_start() is called and the positions are known.

  • EtherCAT master could crash during initialization due to malformed log statements.

  • The ethercat_home_axis() function would return before homing had fully completed.

  • Runtime error for external axis being unexpectedly disabled would be raised if one left an axis enabled at the end of a program and then loaded and started a new program not using the EtherCAT Master.

  • Warning popup for Simulated EtherCAT network being used as fallback would erroneously appear whenever an installation file was loaded that did not contain a saved EtherCAT interface.

  • EtherCAT master would sometimes deadlock on shutdown.

  • The ethercat_home_axis() function could take longer than the requested timeout to actually time out.