New Features
Actin Studio
Added actinStudio
actinStudio will replace actinViewer in Actin 7.0. It was added in Actin 6.4 to provide a transition to Actin 7.0.
Actin Viewer
Added a 3D View Cube to Actin Render Windows
The ViewCube is a cube-shaped widget placed in a corner of the window which will work as a 3D orientation indicator and controller. When acting as an orientation indicator, the ViewCube turns to reflect the current view direction as the user re-orients the scene using other tools. When used as an orientation controller, the ViewCube can be clicked on the faces, edges, or corners to easily orient the scene to the corresponding view. This will enable the users to quickly orient the virtual 3D environment as needed.
EtherCAT
Added Options to Publish Control Word of CiA402 Servo to Data Store.
The CiA402 servo will publish control word value to the data store if the user assigns names to the corresponding elements in CiA402 servo's XML description.
Extensions
QML Client for Jogging gRPC Service
A new JoggingClient
QML component has been added to Actin Extensions to provide a QML interface to the Actin Jogging gRPC Service.
Motion Script
Add EcScript try
This command is used to try running a script and to handle the error if neccessary.
Command format: (try <try_script> <except_script>)
The command will run the <try_script>
first, and if the <try_script>
fails, it will run the <except_script>
. If both scripts fails, the command will return FAILED
. Otherwise, it will return SUCCEEDED
.
Expand EcScript move_pose
New format: (move_pose <manip_id:u32> <ee_set_id:u32> <ee_id:u32> <target_pose:pose> (<speed_factor:real> <accel_factor:real>))
Position tolerance is not mandatory any more in move_pose
. If no tolerance is provided, a default position tolerance EcBIG
is used. From the user point of view, this command just sets the related parameters and returns immediately.
Add a Series of EcScript Commands exists_data_store_
Command syntax: :bool (exists_data_store_<type> <key:string> <path:string>)
This command checks whether a data store element of <type>
(e.g. bool/u32/real/u32_vec/real_vec/string/trans/rot/pose) with <key>
and <path>
exists in the data store. If such element exists, it returns TRUE
; otherwise, FALSE
.
QML
Various New QML Components and Utilities
The following new QML components have been added to Actin QML:
- Ec.Qml.QmlCore
- ClipboardProvider: read/write interface to application clipboard
- TextDocumentInfo: read/write interface to
modified
property of QMLTextDocument
- Ec.Qml.QmlFoundation
- CoordSysXFormValue: value type analog of
CoordSysXForm
QML component
- CoordSysXFormValue: value type analog of
- Ec.Qml.QmlActinRender
- RenderTcpFrames: renders tool offset frames for stated system end-effectors
- Ec.Qml.QmlExperimental
- EcScriptSyntaxHighlighter: applies ECScript syntax highlighting to given QML
TextDocument
- EcScriptSyntaxHighlighter: applies ECScript syntax highlighting to given QML
Also, the following new utility methods have been added to the Ec.Qml.QmlCore
QML module:
- EcQt.actinVersion(): get major, minor, and patch Actin version numbers
- EcQt.expandEnvStrings(text): perform environment variable expansion on given string
- EcQt.readTextFile(callback, url): asynchronously read data from given text file
- EcQt.systemFont(type): get system-appropriate font for given type case
- EcQt.writeTextFile(callback, content, url): asynchronously write data to given text file
And the EcQmlCallbackDelegate
class have been moved from the qmlExperimental
library to qmlCore
. (For backwards compatibility, a forwarding header for the class has been added to qmlExperimental
.)
Finally, the children
property of the NodeTraversalFilter
QML component (in Ec.Qml.QmlExperimental
) has been renamed filteredNodes
to avoid shadowing the children
property from its base component osg.Group
.
QML Client for Process Manager gRPC Service
A new ProcessManagerClient
component has been added to Actin QML to provide a QML interface to the Actin Process Manager gRPC Service.
Improvements
Actin Viewer
Update Speed Controls to Correspond Mockups
Speed Factor value edit controls in the Active Control Parameters Plugin dock widget toolbar were simplified to match GUI design mockups. Removed labels "1%" and "100%" and added the "%" suffix to the spin box.
Update Tab Menu UI to Correspond Mockups
Tab Menu background color updated for the whole bar width. Removed borders between tabs. Increased icon size for each tab.
Missing Border Paddings in Ribbon Groups
Added 24-pixel width padding to both left and right borders of the Ribbon group.
Look and Feel Improvements
Updated spacing, colors, and style elements in certain plugins
Improve the Default Background Color for actinViewer
The default background color was changed to better fit the style for actinViewer
Updated Icons
Updated icons related to dynamic simulation features
Active Control Parameters Bottom Bar Control Widgets Missing Spacing
Added spacing between widgets in Active Control Parameters Bottom Bar.
Optimize Widget Sizes
Minimized sizes of Friction Properties Widget and Joint Configuration Dialog.
Add Empty State to Recent Files Table in Welcome Screen
Added empty state to recent files table in Welcome Screen. When there are no recently opened files special message is displayed.
Improvement While Saving Changes in MotionScriptPlugin
The short cut key usage for saving (Ctrl+S) changes inside motion Script editor is enabled. User can save the changes while editing scripts using Ctrl + S keys. It happens only if the editor has focus.
Update Home Screen for Actin Viewer
Updated Home Screen for Actin Viewer to correspond mockups. Removed all tabs except File, status bar, Active Control Parameters Bottom Bar when a file is not opened.
Fixed Dragger Size
The size of the dragger remains same while zooming in and zooming out.
Core
New EcLabelPool Data Accessor Method
A new method labelIndexMap()
has been added to EcLabelPool
to provide direct read-only access to the m_LabelIndexMap
data member. The existing methods usedLabels()
and usingLabels()
, which provided only indirect access to this data member, have been marked deprecated.
Optimization of EcLabelPool Memory Usage
The EcLabelPool
class, which maintains the manipulator and link labels used by a stated system, has been updated to use Boost flat containers (rather than std
tree-based containers) to reduce the amount of heap memory allocations whenever the label pool grows.
Add Method to Check if an EE Supports Relative Mode
Added a new virtual method to EcEndEffector for derived types to indicate whether or not the type supports relative end effector mode. This is purely informative for callers and/or guis to check and inform the user.
Improvements to Ec::indices
The Ec::indices()
utility in "foundCore/ecRange.h" has been updated with the following improvements:
- Protection against undefined behavior due to signed integer overflow.
- Generalization (via new
Ec::range()
utility) to ranges starting with values other than zero. - Full-featured iterator (
Ec::RangeView::iterator
) that can be used with STL and Boost container adaptors and iterator algorithms.
Dependencies
Added EC_MANGLE_SPDLOG CMake Option
If EC_MANGLE_SPDLOG is set to true, the third-party dependency library spdlog will be patched during the configure-time build to change the namespace "spdlog" to "ecspdlog". This allows Actin to be used in customer environments where the customer also uses their own version of spdlog.
EC_MANGLE_SPDLOG is set to OFF by default for all platforms except Debian 10, which defaults to ON. This means the Debian 10 release binaries ship with the spdlog namespace mangled. This change should be transparent to customers.
Motion Script
Stricter Definition of Script Executor State Entry/Exit Callbacks
The PRE_ENTRY
and POST_EXIT
event hooks for EcMotionScriptExecutor
, as well as the associated beforeEntry
and afterExit
RCF invokes for EcControlTaskMotionScriptExecution
, did not conform to best practices for state machines and were largely redundant with the ON_TRANSITION
event hook (and onTransition
RCF invoke).
The PRE_ENTRY
hook and beforeEntry
invoke have been renamed to POST_ENTRY
and onEntry
, respectively. (The old names have been preserved as deprecated aliases.) The hook now executes immediately after a script executor state has been entered, rather than immediately before.
Likewise, the POST_EXIT
hook and afterExit
invoke have been renamed to PRE_EXIT
and onExit
, respectively. (The old names have been preserved as deprecated aliases.) The hook now executes immediately before a script executor state exits, rather than immediately after.
QML
State Filtering for StatedSysManipFilter
The StatedSysManipFilter
QML component has been updated to support filtering EcManipulatorSystemState
values, as well as EcStatedSystem
instances, by manipulator label. This allows the user to obtain the original stated system and associated state updates from a single source and perform all filtering within QML. (Prior to this update, the unfiltered system would need to be obtained from one source and the filtered state updates from another source.)
RCF
Added Actin Version Number and Build Number to actinRcf Output
The actinRcf application will now show the Actin version number and build number at the beginning of the console output.
Print Path and Update Callback Id Along With Parse Errors in runMotionScript Task
The runMotionScript task now prints the path and update callback id if the script has parse errors.
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.4.0.
- Fix Qhull Dependency for Installers
- Fix a Bug in S Profile Joint Trajectory Where 8 Phases Were Planned
- Release Memory for Stated System Copy After Path Planning Is Completed
- Check for Extraneous Roots in S-Curve Tool
- Move_pose With xEE Does Not Converge
- Use EcMath Methods in EcMotionScriptReal approxEq
- Fix Parsing With Different Line Endings
- Fix Bug in EcJointLimitConstraintSolver for Floating Base
- Fix Derefence of Null Pointer
- Fix Bug Introduced in #1592
- Buffered Motion Does Not Come to Full Stop
- Fix Header Extension Consistency
- Cannot Disable CiA402 Servo Slave When It Running in IP Mode
- Acontis Ethercat Errors
- Fix Warning in EcPositionControlSystem20::calculateVelocityState
- Hot Fix of Rrt_connect_plan for UTRC
- Related Issue of Actin_core#1920
- Base Pose Should Be Interpolated in Extended Modifier
- Time Delay in Receiving Executor State
- Build Error Due to Missing Include
- ActinRcf Doesn't Return the License on Exit
- Fix qmlSamplePlugin
- Add Thread Safety to EcXmlObjectQWrapper
- activeControlParam Widgets Go Blank When the Current Manipulator Is Deleted
- ManipConfigPlugin Ee Placements Not Updating
- Creating System Simulation From Position Control System Uses Hardcoded Value for Time Step
- Import and Export for Selected Manipulator Not Working in Control System Dialog
- Some Plugin UI Remains Open on File Close
- Control Descriptor UI - No Option for Fixed Base
- Attachment UI - Seems to Ignore Additions
- actinViewer Crashes in 6.4 After Exporting Twice in cameraPlugin
- Actin Viewer - Use of Shift Key Anywhere Activates Grabber Guide Mode
- Actin Viewer - Joint Configuration Data Entry Requires Radians Input, but Displays Degrees
- EcScript : Wait Required Before Changing Ee_set in ActinViewer
- Import Control System, Double Click on Control Descriptor Crashes actinViewer
- Articulated Manipulators Are Not Dynamically Simulated in 6.3 and Above
- Control Parameters Plugin Control Descriptor Empty
- Deprecated Warnings Repeatedly Printed
- Actin Studio/Viewer Crashes While Changing Diffuse Color
- Manipulator Dropdown - Names Not Updated After Manip Name Change
- Fix Splash Actin Studio Screen - Empty State
- Editing of Numeric Fields in Property Editor in Shape Primitive Plugin Is Not Correct
- Modals Have Padding That Shouldn't Be
- Cannot Add Manipultor Through the Manipulator Combination Plugin
- Fix the Data Plot Update Issue
- ASAN Crash Deleting a Manipulator
- Plotting Data Makes ActinViewer Not Responding
- Fix the Resets Default Home Pov Issue in viewCubePlugin
- Scale Dialog -Title
- Actin Viewer - Control Description Editor Should Not Use Spinners for Floating Point Value Entry.
- manipulatorCombinationPlugin Not Working
- Move jointControllerPlugin and linkInteractionsPlugin Button to Model Tab
- Control Description Editor Spacing
- File Menu Should Have an Exit Menuitem
- State Dialog Expands Weirdly on First Startup
- Fix the Issue With Dataplots
- Move Shape Widget in shapePrimitivePlugin Not Accepting Move
- Dragger Is Not Being Displayed When We Select a Manipulator and Click Move
- Actin Viewer UI - Widget Title Inconsistent - Edit Visible Shapes
- activeControlSystemParam Plugin Toolbar Not Shown if We Load actinViewer With Command Line Argument --noautoloadPlugins
- Control Parameters Plugin Doesnt Show Manipulators or Control Descriptors
- Dragger Move Dockwidget Issue