Release Notes

Motion Plus 1.1.0 (Release Candidate)

New Features and Improvements

Major Changes

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

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.

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.

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.