Actin 5.3 Release Notes

Actin 5.5

Energid is pleased to present Actin 5.5.

New Features

New toolpath motion primitive with G-code support

A toolpath defines the tool orientation, trajectory, speed (or feed rate), and travel direction. Actin 5.5 supports toolpaths defined in G-code, an industry standard widely adopted by manufacturers that are familiar with CNC machining. The toolpath files can be generated in third-party CAD/CAM software packages based on part models. Actin will convert imported toolpath files into robot motion automatically.

User defined Motion Script functions

Users can now write custom functions in Motion Script. A list of Motion Script variables can be passed to the function by value or reference. The function body can include any supported motion script.

Ability to compose a Motion Script from multiple files

The new include command allows users to include pre-written Motion Script (.ecs) file into other Motion Scripts. Environment variables are supported when defining the filename parameter to the command. This will allow users to compose more complex scripts and reuse scripts in more advanced applications.

New Motion Script editor in Actin Viewer

Users can now use the motion script GUI plugin to more easily create motion scripts to task an Actin model. The interface now has “.ecs” file save, save as, and open options, as well as syntax highlighting, improved icons and layout, a toolbar quick access button, as well as context menu options to insert motion scripts from the current state of the model.

5.5 - Motion Script - 1

This context menu feature allows users to “teach” motion script by interacting with the model. When inserting a “move_pose” for example, users can move a manipulator’s “active” end effector to a desired pose, then insert a “move Pose”. the motion script will be inserted using the proper syntax, with the actively selected manipulator index, end effector set index, and end effector index, as well as the active end effector placement pose, and the active speed factor. This context menu behavior is supported through multiple motion types.

5.5 - Motion Script - 2

Users can also more easily define a pose from either a link frame or named frame. the “get_frame” command can be inserted after the user browses to the available frame with a gui widget. The proper “get_frame” syntax will be inserted to get the frame at the selected link in system frame.

5.5 - Motion Script - 3

Users can also insert the active joint position state, as well as the active end effector pose, end effector position, and end effector orientation. This is useful for modifying existing motion script, if updating motions is required.

Actin gRPC Services

gRPC is an open source, high- performance RPC framework developed by Google that can support many popular programming languages like Python, Java, and C++. gRPC utilizes Protocol Buffers, Google's data interchange facility for serializing structured data.

Actin gRPC services are written to complement the Actin Robot Control Framework (RCF). Prior to this release, the main external interface to a RT System Controller application was shared memory, requiring any client to be co-located on the same machine as the controller and making cross-language interaction difficult. With gRPC services, the clients and controller need only be on the same network, and the clients can be written in a variety of languages.

For this release, two gRPC services are being introduced to Actin RCF

  • Data Store Service: provides ability to get, set, and stream elements in the RCF data store
  • Motion Script Service: provides ability to load and play Motion Script programs on the stated system

For each of these services, reference clients written in C++ are also being provided. The Protocol Buffers IDL files for the services will also be available, allowing clients to be generated in any of the gRPC supported languages.


Enhanced documentation with updated training examples

The documentation has been updated to provide a better introduction to Actin concepts such as modelling, motion control, and tasking. The Actin Viewer documentation has been improved to emphasize its primary role of model tuning. the documentation for the training examples goes into further detail on how they could be expanded.

Actin reference design for Universal Robots e-Series robots

Added a reference design for the Robot Control Framework for Universal Robots e- Series robots. This reference design includes a simple QML UI that uses the new Actin gRPC services to transition the robot state, control the robot with Motion Script, and view its motion live in a rendered view. This is a great starting point for OEM integrations of UR robots leveraging the power of Actin for motion control.

Motion script enhancements

The following improvement to the Motion Scripts have been provided:

  • Script name abbreviations have been expanded for readability.
  • Documentation updates: Many scripts only have the Command format but lack the Example command.
  • For closed-loop control, updates were made to the motion scripts to use the sensor value in real-time.
  • The controller time can now be obtained from a motion script
  • Data map and data store support has been added for poses

Boost version independence

The Boost libraries shipped with the Actin libraries are now fully namespaced to avoid conflict with client versions of Boost. This has the following impact:

  • The header files of Boost are now available through includes named <ecboost/file> instead of <boost/file>
  • Boost macros are named with ECBOOST_ prefix instead of BOOST_ prefix
  • Identifiers are named ecboost::id instead of boost::id

Consumers of Actin APIs must adjust their code in the same respect.

This completion of Boost namespacing will allow the use of multiple versions of Boost in the same translation units as ecboost. Client code can use an independent version of Boost with non-actin APIs if desired. It also ensures that the ecboost version used by Actin can be upgraded independent of third-party Boost versions used by client code.

Conversion to Google Test

The boost unit test framework is dated; a paradigm shift to the Google Test framework (gtest) has occurred with the following advantages and features:

  • Individual unit tests can be run via the --gtest-filter command-line option.
  • Tests can be run in a random order using the --gtest-shuffle or --gtestrandom- seed command-line options.
  • Tests can be run repeatedly using the --gtest-repeat command line option.
  • Tests can be selectively disabled using the DISABLED_ macro
  • Test output can be redirected to an XML or json file using the --gtest_output command line option.

Resolved Issues

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

  • Resolved an issue where some joints may not complete their motions simultaneously in the coordinated joint motion mode in some circumstances.
  • Resolved an issue where some joints may speed up or slow down unexpectedly in the coordinated joint motion mode with S-Curve velocity profile.
  • Resolved an issue where the path returned by the path planning algorithm could cause a collision when the manipulator’s deceleration limit was a smaller magnitude than the acceleration limit.
  • Resolved an issue where the path planning algorithm would fail to find a path when a link did not have maximum and minimum angle constraints set.
  • Resolved an issue with the single pass IK implementation where setting the joint position state of a non-controlled manipulator would impact the calculated state of a controlled manipulator.
  • Removed legacy examples that could not be built due to CMakeLists.txt files that had been formerly omitted from the installer.
  • Fixed crash in squish test case due to drag and drop issue in squish test script
  • Corrected issue with using license.lic file on ubuntu
  • Added missing license file from prometheus bundle for VS2015-x86
  • TCP Position and Velocity Calculation now based on the active EE set (formerly this was the EE set from the XML file)
  • ecGenerateXmlObject macro now works for namespaced classes (formerly this only worked for anonymous namespaces)
  • Added EcPositionControlSystem::setCurrentState public method to set the state of an individual manipulator without impacting others in the stated system.
  • Added missing mutators/accessors for Motion Script classes


  • New toolpath motion primitive with G-code support
  • User defined Motion Script functions
  • Ability to compose a Motion Script from multiple files
  • New Motion Script editor in Actin Viewer
  • Actin gRPC Services
  • Enhanced documentation with updated training examples
  • Actin reference design for Universal Robots e-Series robots
  • Motion Script enhancements
  • Boost C++ library version independence
  • Conversion to Google Test

Over the course of this release we have resolved a large number of issues. Read the resolved issue list to review the highest profile issues that we have closed.

Related Content