Release Notes
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)
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)
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
Added ethercat_home_axis() function that can perform any of the CiA402 homing methods. See here for details and limitations. The ethercat_home_axis_direct() is scheduled to be deprecated in favor of ethercat_home_axis().
EtherCAT
Removed
server_port
andserver_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.