Actin 6.3.0 Release Notes

2021 August 16

Energid is pleased to present Actin 6.3.0.

New Features

Actin Viewer

Return of the Workcell Calibration Plugin to the Actin SDK

The Workcell Calibration plugin of Actin Viewer has been reintroduced to the Actin SDK. It had been previously removed from the SDK during the 6.0 release due to issues with stability and usability.

This plugin allows the user to calibrate tool offsets, named frames, and manipulator poses using the active end-effector. It is not part of the default set of Actin Viewer plugins and must be loaded manually from the Load Plugin menu of Actin Viewer.

Refresh of the Workcell Calibration Plugin

The Actin Viewer Workcell Calibration plugin has been revised and updated with the following changes:

  • The stability of the plugin has been improved: several bugs that would cause Actin Viewer to crash have been fixed.
  • The appearance of the plugin has been improved: controls are now laid out in a more intuitive manner and are sensitized and desensitized appropriately.
  • The plugin now respects the current Units settings (length, angle, mass, etc.) of Actin Viewer. Previously it assumed the units would never change from the defaults.
  • The plugin now respects the currently active manipulator and end-effector (from the Actin Viewer status bar) when recording calibration TCP poses. Previously it always used the first end-effector of the manipulator selected by the plugin.
  • It is now possible to import calibration TCP poses from the system clipboard (in EcScript format [e.g. ((0.1m 0.2m -0.1m) (RPY 30deg -62deg 142deg))]) as an alternative to recording them from the current end-effector position. This provides a way to retrieve TCP poses from actual hardware using applications such as ActinViz.
  • It is now possible to directly edit user frames defined by the plugin both before and after saving them. Previously user frames could only edited from the Named Frames plugin after they were saved by the Workcell Calibration plugin.
  • The orientation values of calibration TCP poses are now displayed on the Tool Offset tab of the plugin. Previously only the position values were visible.

Added a Graphical Interface to Edit Joint Velocity and Acceleration Limits

The new "Control Parameters Plugin" (controlParametersPlugin.ecp) has been added to Actin Viewer. When this plugin is loaded, it will create the "Control Parameters" button in the "Control" tab. This button will launch an intuitive interface for editing joint velocity and acceleration limits for each control descriptor.


The G-Code Parser Has Added Support for G4, M62/M63, and M66.

The Actin G-code parser now supports G4 (dwell), M62/M63 (set digital output), and M66 (wait for digital input).

Convenience Function to Create EcMatrixColumn From EcVector.

Users can construct an EcMatrixColumn directly from an EcVector or std::vector object without providing the specific type using Ec::makeMatrixColumn.

Added a Method to Set Orientation Using Angle Times Axis

The new method setFromAngleAxis sets the orientation using a single EcVector. The magnitude is the angle, the direction is the axis.


Added Data Store Callbacks for Enabling CiA402 Servo and Setting Modes of Operation of CiA402 Servo. Added Options to Publish Joint Index and Station Address of CiA402 Servo to Data Store.

The CiA402 servo class is now publishing two new data store callbacks, ENABLE and SET_MODES_OF_OPERATION. The ENABLE callback will transfer the servo to ENABLED state. The SET_MODES_OF_OPERATION callback will set the value of the modes of operation PDO. The CiA402 servo will also publish joint index and station address to the data store if the user assigns names to the corresponding elements in CiA402 servo's XML description.

Added Option to Publish the Status Word of the CiA402 Servo Slave

If a user assigns a name to the corresponding element, the status word of the CiA402 servo will now be published to the data store.

Motion Script

Added Move_direct That Supports Jerk-Limited Joint Space Motion

A new EcScript move_direct has been added that supports both T-profile (trapezoidal velocity) and S-profile (s-curve velocity) motion. In T-profile, the script can plan a trajectory from arbitrary initial velocity. In S-profile, the script can plan a trajectory from an arbitrary initial velocity and acceleration.

New DISABLED State for Motion Script Executor

The EcMotionScriptExecutor class has been updated to support a new DISABLED state. This state can be entered from any other executor state via a DISABLE command. Doing so will halt any running script and bring all managed manipulators to a full stop. Within the DISABLED state, all commands are rejected except ENABLE. Issuing the executor an ENABLE command in this state will cause the executor to transition to the IDLE state.

The main use case for the DISABLED state is to prevent usage of the script executor while hardware resources are unavailable or still being configured.


QML Client Method for New WatchEePose RPC

The ControlSystemGrpcClient QML component has been updated to have new openEePoseStream() and closeEePoseStream methods, which provide an interface to the WatchEePose() RPC.

New QML Client Method for GetEePose RPC

The ControlSystemGrpcClient QML component has been updated to have a new getEePose() method. This method is identical to the the existing getEePoseString() method, except that it returns the actual result of the GetEePose() RPC, rather than a stringified form of it.


Added Transition Conditions Using Uint8_t and Vector Elements.

U8 and U8Vector elements are now supported in transition conditions.

Added invokeUntil Control Task

We have added a new invokeUntil control task. This task will block the thread and keep calling the invokes every other sleep time, until either the conditions are met, or the time-out time is reached.

Added an Icon to the actinRcf Executable on Windows.

Added an icon to the actinRcf application on windows to allow easy identification as an application meant for end-users.


Added InvokeCallbacks RPC to the Data Store Service.

This RPC allows the user to invoke callbacks at specified key and path from the data store on the service process.


Actin Viewer

Panels Can Now Be Closed While a Simulation Is Running

Specific dock widgets were disabled while the simulation started running which prevented them from being edited. We have added the ability to close any dock widget when the simulation is running.

Improved the Appearance of Buttons in Actin Viewer

We improved button styling in the main tabbed interface to make buttons and drop-downs easier to find and use.

Added Icons to the Actin Viewer Tabs

Added easy to understand icons to the new tabs in Actin Viewer. These changes make it easier to find entries within the tabs.

Added a Public Method Which Makes the Motion Constraint Dragger Visible at All Times.

The Motion constraint dragger can now be configured to show always even if the robot is behind other objects. Previously the dragger is not visible if the robot is hidden by other objects. This enables the user to visualize and jog the robot using dragger when the robot is hidden behind other objects in a simulation.

This feature is enabled by calling onDraggerShowAlways() which has been added to endEffectorControlPlugin.

Added File Management Keyboard Shortcuts to Actin Viewer

We added the ability to save, open, and close files using keyboard shortcuts.

Layout Improvements for the Primary Frame Plugin

We improved the layout and style of the Primary Frame Plugin to match the style of our redesigned interfaces.

Added File Option to Main Menu

We have added the "File" option to the main menu to more closely resemble similar software. We made this change to make Actin Viewer more intuitive for new users.

Added "New Script" Button to the Motion Script GUI

We removed the option to clear the script and added the ability to create a new empty file. This prevents users from accidentally overwriting their current script with an empty one.

Improved the Appearance of the File Menu

Added clear sections in file menu, seperating file options, application options, and support.

Added Line Numbers to the Motion Script Editor

Line numbers were added to the Motion Script Editor to make debugging easier. This functionality is especially helpful when users are attempting to find parsing errors.

The Ability to Copy All Text Within the Motion Script GUI

The output panel of motion script GUI has been enhanced to allow the user to copy all the text within the motion script GUI.

Status Plugin Button and Action Are Now Visible on All Tabs

The status plugin was previously only visible on the Simulation tab. The Actin Viewer UI has been updated to display the status plugin button and action regardless of which tab is selected.

Manipulators Are Now Automatically Upgraded During the Process of Importing Them Into the Current Simulation

Manipulators saved with older versions of Actin Viewer can now be imported directly into the currently opened simulation. During import they are automatically upgraded to the latest XML version.

Added File Save Progress Indicator

We added a progress dialog that appears while saving the simulation file. This is useful when saving large files to prevent the appearance of an unresponsive GUI.

Unification of Plugin Dock Widget Activation Toggle Buttons

The behavior of toggle button has been made uniform for all Actin Viewer plugins. When checked for the first time, a plugin's dock widget is activated, and when it is unchecked, the dock widget is closed.

Improvements to the Layout of the Velocity Control Description UI

The "Velocity Control Description" dialog (edit control description from the position control system) interface was updated to be more intuitive to the user and more consistent with the updated Actin Viewer style.

Improved Icons and Color Theme for Actin Viewer

The Actin Viewer UI has been enhanced with new icons and colors to match Actin Viewer's dark color theme. We are now using red, green, and blue color codes for the dragger, named frames, and collision highlights.

Motion Script GUI Now Includes the Same Syntax Highlighting as ActinViz

The color codes used for syntax highlighting by ActinViz have been ported into the Actin Viewer Motion Script GUI.

Usability Improvements to the Position Control System UI

The Actin Viewer "Position Control System Properties" dialog (Control -> Control System) interface was updated to provide an interface that is more intuitive and more consistent with similar UIs within Actin Viewer.


Performance Improvements to the EtherCAT Slave Class

The EtherCAT servo base class and the CiA402 servo class were refactored to accelerate PDO transfer and process and to avoid holding multiple lock at once.


Override EcPositionControlSystem20::setCurrentState to Avoid Unnecessary Calcs

The base class version does several calcs to make sure all control modes work correctly. EcPositionControlSystem20 only supports PROFILED_POSITION control so this issue removed calcs not relevant for that mode.


Improvements to Control System gRPC Service

The Control System gRPC Service has been updated with the following minor improvements:

  • Attempting to open an RPC stream with period of 0 will now result in an INVALID_ARGUMENT error; this is to avoid excessive CPU and network usage by a stream.
  • The period of an RPC stream now dictates a maximum rate at which message will be written to the stream, rather than a fixed rate: a message will only be written to a stream if the control system state being monitored by the stream has changed since the last stream period.


Deprecate Use of externalTimeStep in EcPositionControlSystem

The external timestep was only relevant with calculateState, which has already been deprectated, and using extrapolation times in calculateStateTimesteps which is also being deprecated.

Remove Support for Non-Vector Container Transfers via Shared Memory Transfer Layer

Previously the transfer templates allowed several "container-like" classes for doing shared memory transfers. This may have worked correctly but there are no unit tests confirming this. We're not aware of any current use cases for non-vector containers so we have removed support until we add tests to confirm that the other containers work correctly.

Resolved Issues

Over the course of this release we have resolved a number of issues. We are including an overview of the highest profile issues that have been fixed for Actin 6.3.0.