Actin 6.1.0 Release Notes

2020 December 22

Energid is pleased to present Actin 6.1.0.

New Features

Actin Viewer

Convert Old Format Simulation File

The simulation file format has been changed. When an old format file is opened, Actin Viewer prompts the user to convert to the new format. The original simulation file is kept as fileName.ecz.bak

Orientation Display and Preference

An option is provided to configure the orientation type preference, and that preference will be used in all of the places where orientation is displayed


Enforce Joint Limits via Hard Constraints Directly From the Joint Rate Limit Filter.

The joint rate filter is now capable of using inequality constraints to strictly enforce joint limits, allowing the manipulator to slide along joint limits. This feature can be enabled by toggling the useJointLimitConstraints boolean in the control expression description.

Added Reporting of the Shape ID's Involved in Collisions

Previously, only the manipulator and link ID's were reported when a collision was identified. This change added the shape ID's as well, allowing collisions to be understood more thoroughly, especially for parts with large links with many shapes. To identify the shape ID's, the new overloaded functions of EcManipulatorProximityTool must be used, which include references to these shape ID's.

Return Error Codes From EcActinLogConfig Functions and New Convenience Functions

EcActinLogConfig::applyToGlobal() now returns an error code. EcActinLogConfig::applyToGlobal(fileName) and EcActinLogConfig::applyFileToGlobal(fileName) are convenience functions for reading a logging configuration XML file.

Implement Operating System Functions (Reserve Memory, Set Thread Affinity/Priority, Etc) for QNX

Primarily copies posix functions from the linux implementation and uses the same or similar on QNX.

Log Error Messages From Incorrect Logging Usage

Previously, incorrect logging usage would result in stderr messages, and these messages would not show in configured log sinks. As an example, EcLOG_WARN("{}{}", "arg1"); Would print argument index out of range to stderr. It was very difficult to track down the source of this error message. Now the same incorrect usage will log as an error to the 'eclog' tag in configured log sinks. Additionally, platforms that support the "backtrace" library will log stack information to assist in tracking down the incorrect usage. Now the logged message might look like this: [error][eclog]: MyClass::myFunction() (myFile.cpp:123): argument index out of range


Add Support for Interpolated Position Mode to CiA402 Servo Slave

CiA402 servo slave now supports IP mode (interpolated position mode). An example using IP mode with Festo linear rail is also added.

Improve CiA402 Servo Functionalities.

Rename slaveAddress to stationAddress. Publish servo state and modes of operation display to data store.

Add Adapter Instance Option to Acontis EcMaster Layer

Make adapter instance XML configurable.

Add CiA402 Servo Group

To use CiA402 servo group groups individual CiA402 servos of a same manipulator can speed up the coordinate control and simplify the XML configuration.

Add Support for EtherCAT I/O Devices

Support for 8bit/16bit/32bit/64bit EtherCAT I/O devices are added.

Make Cycle Time XML Configurable for Acontis EcMaster Layer

Make cycle time XML configurable for Acontis EcMaster Layer

Motion Script

Add File Name and Line Number Information to EcScript Parsing Phase Error Messages.

Print file name and line number to error message when parsing EcScript.

Added Move_direct Motion Script

Added the move_direct motion script which performs synchronized motion in the joint-space using the trapezoidal velocity profile. This script performs similar to the move_joint script, except it avoids the use of motion filters in execution.


Named Frame Support for QML Client to Control System gRPC Service

The following new methods have been added to the ControlSystemGrpcClient QML component:

  • getNamedFrameKeys(): retrieve named frame name list for stated system
  • getNamedFrameString(): retrieve location of given named frame in stated system


Add a Public Method to Register All RCF Motion Scripts

Previously, RCF motion scripts were registered internally in EcBaseRtSystemController class and therefore it was difficult to use many motion scripts outside of that. A new public EcRtMotionScriptsUtil::registerMotionScripts() method was added to register all motion scripts, allowing users to use the scripts anywhere.

Add Transition Condition Check for 8-Bit/16-Bit/64-Bit Unsigned Integers

Transition condition check for 8-bit/16-bit/64-bit unsigned integers can be used in RCF state machines.


Actin Viewer

Enhancement in UI for Joint Torques in Data Plot Plugin

Joint Torques should be disabled without dynamic simulation on


Deprecate EcExpressionJointLimitFilter

EcExpressionJointLimitFilter class has been deprecated.

Remove logConfiguration XML Element From EcRtProcess

The logConfiguration XML element allowed configuring the logging for the process; however, it is not ideal to combine the log configuration with the RCF XML. actinRcf now provides a command-line option to specify a log configuration file independent from the RCF XML, so logConfiguration is no longer needed.

Remove Deprecation Warnings in Examples

Usages of deprecated methods have been removed in the following examples

  • ecCollisionAvoidanceExample
  • ecForceControlExample
  • ecProgrammaticConstructionExample

Revert Deprecation of EcSystemSimulation::setControlMode Method

Deprecation of EcSystemSimulation::setControlMode method that is used to set the control mode of all end effectors in the active end effector set has been reverted.


Remove Trapezoidal Profile Support From EcSynchronizedJointInterpolationTool

Support for trapezoidal profile in EcSynchronizedJointInterpolationTool has been removed. Path-planning related classes that used the trapezoidal profile in EcSynchronizedJointInterpolationTool have also been removed.

Remove the Actin::GMockCrashHandler Project

Actin::GMockCrashHandler was used to build a gtest main that provides support for gmock and the catches crashes in the crash handler. The ec_setup_googletest CMake macro automatically takes care of adding gmock and the crash handler to all of our gtest projects; therefore, Actin::GMockCrashHandler is no longer needed.

Removed Unused App

The following apps are removed

  • graspingModelBuilder
  • hwPluginBuilder
  • imageSegementationApp
  • simMain
  • ec2OSG

Removed Unused Apps

The following apps are removed

  • conversionTool
  • heightShapeCreator
  • studyTool

Joint Speeds Removed From Joint Configuration

Joint Speed values are removed from the joint configuration dialog.

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.1.0.

  • Fix Breakage to gRPC Exports in Actin Installer
  • Example Build Warning Windows 6.0.2
  • Cosmetic Fix for EcPrompt
  • Forwarding Header Test Fail on 6.0.2 Installer
  • Forwarding Header Test Fail on 6.1.X Installer
  • Fix Install RPATH for OsgQtQuick Plugins
  • Missing Release Symbols for Installers
  • Update to Copy Data for New Tests
  • Actin_build Missing Clang-Format
  • QT_NO_DEBUG Define Not Exported to Installer Cmake Configuration
  • Release Win32 osgQtQuick Libraries Corrupted by CLCache
  • Sanitizer Flags Not Set Correct for CSAN Builds
  • Debug Builds Using Actin SDK Link to Wrong osgQtQuick Libraries
  • Exclude Example Plugins From
  • Fix Install RPATH for Actin QML Plugins
  • Add Build/osgQt/Lib64 Directory to LD_LIBRARY_PATH in
  • Remove Unnecessary Include From ecQmlExtensionPluginTemplate.h.In
  • Fix Extra Memory Allocations
  • Fix EcBaseProximityTool::checkAndRecordManipulatorCollision
  • Wrong Variable Name in CMake Warning Text
  • Crash When Combining Manipulators
  • EcEndEffectorSet::initializeJacobianState Doesn't Invalidate Jacobian
  • Fix Uninitialized Warning
  • Fix Memory Leak in EcIndividualManipulator
  • Memory Leak in Manipulator Unit Test
  • Ubsan Error During Motion Planning Unit Test
  • Fix Issues With NLOpt
  • Update for Changes in Stable#506
  • Model Is Invisible When Loading Simplified Geometry
  • Move_joint_seq Blending Calculations Uses Incorrect Speed/Accel Factors
  • Crash in exchangePositionController
  • Crash in Ecscript Print
  • Deprecate nonZeroPosDivisor in Manipulator
  • Fix Deprecated Warning in EcRrtPathPlanner
  • Undetermined License on Virtual Machines
  • Remove Major Version Warning When Reading XML Files
  • Fix Initializing Joint End Effectors in EcVelocityController
  • Fix Inconsistent Usage of ECS Log Tag
  • Joint Rate Filter Does Not Scale Velocities/Accelerations for Joint Limits Correctly
  • Ubsan Error in Geometry Unit Test
  • Build Fix
  • Crash When Using Joint Limit Avoidance Zone Map
  • Deprecate nonZeroPosDivisor in Control and Function
  • Fix Turntable Demo XML Due to Recent Code Change
  • Use EcLog Instead of Printf
  • Script Executor Does Not Reset State on Stop
  • Fix Motion Script Executor Pause/Stop Issues
  • Exclude Shadowing Warnings From Actin_rpc Extensions Build
  • Motion Script Executor Should Use Scaled Time, Not currentTime When Executing Motion Scripts.
  • Fix Warnings Due to Deprecation of parseScript
  • ecTimedThread Sometimes Can Spin on an Invoke
  • Remove Gtest Applications From the Installer
  • Fix Deprecation Warning Message in rtController/ecTimedThread.h
  • Configure Logging Early in actinRcf
  • EcTimedThread Should Use Steady_clock Instead of High_resolution_clock
  • Werror=reorder Errors in acontisEcMasterEthercat
  • Fix Warnings Due to Deprecated Header
  • Access to Static Members Must Be Guarded by a Mutex
  • Fix Typo in CMakeLists.txt Property Label
  • Fix Plant JAR Path in doxy.config
  • Fix Race Condition in ControlSystem gRPC QML Client
  • Training GraspObjects Folder Not Included in Installer
  • Fix logError Unit Test Failures
  • Avoid Dynamic Allocations in EcRealMatrix::invertSquareMatrix
  • Logger Sinks Added Later Not Working
  • Link Errors on Windows When Using EcTcpSocket
  • Missing Separators for Dates in Log
  • Fix a Typo Error
  • Wrong XML Tags in stateMachine Are Crashing the actinRcf Controller
  • Deprecate EcMath::nonZeroPosDivisor
  • Put Actin Version in Compressed XML Files
  • Fix Boost Warnings for Deprecated ENDIAN Macros
  • ActinViewer Crashes on Exit When simulationPropertiesPlugin Is Loaded on Ubuntu 18.04
  • Actin Viewer Crashes When Exchanging Manipulators
  • Deprecate nonZeroPosDivisor in Foundation and Sensor
  • Application Crashes on Exit When We Load simulationPropertiesPlugin and Exit
  • Fix the Warning on Exit of ActinViewer
  • Fix Activation Message in License Tools for Actin_core#1661
  • Attachment Dialog Named Frame Combo Box
  • Selection of Manipulator Link Is Not Correct in shapePrimtive and massProperties Plugin in Few Scenarios
  • Actin Viewer Does Not Close Cleanly - Windows Builds - Debug
  • Shapeprimitive Plugin Allows Export Shape to Obj File, but Not Import
  • Copy Paste of a Visible Shape in Bounding Volumes and Shapes Should Generate a Unique Identifier
  • Crash in actinViewer After Applying Collision Map
  • Crash in Motion Script GUI When Using Collision Exclusion Dialog
  • ShapePrimitivePlugin - Dragger Goes Invisible
  • Crash in Attachment Plugin
  • Fix the Documentation Typo Error
  • Property Editor Not Working Correctly on 20.04