Robot Motion Control Task#

Overview#

Robotmctask is a comprehensive C++ library designed for robot motion control task development. It provides APIs that enable robot developers to build sophisticated robot applications with integrated AI inference engines and EtherCAT protocol support.

Key Features:#

  • PLCOpen Compliance: Support for PLCOpen motion control function blocks

  • Multi-Task Support: Concurrent handling of multiple motion control tasks

  • Real-Time Integration: Seamless shared memory communication between real-time and non-real-time domains

  • AI-Powered Control: Built-in inference engine support for intelligent motion control

  • Simulation Ready: Comprehensive motion control simulation capabilities

Architecture Overview#

The architecture is as following:

Robot Motion Control Architecture

Two key blocks have been introduced to support the core architecture:

  • libectask is a dynamic library that provides a set of public APIs for EtherCAT real-time task creation. Key capabilities include:

    • EtherCAT Integration: Creates motion function blocks to operate EtherCAT slaves using ENI configurations

    • Network Topology Support: Handles slave configurations and network topology definitions

    • Flexible Memory Management: Supports custom shared memory callbacks for data restructuring between real-time and non-real-time domains

    • AI Pipeline Integration: Enables AI inference callback registration within real-time tasks

  • libinference is a shared library offering advanced inference capabilities with:

    • Modern C++ Interface: New C++ classes for streamlined inference implementation

    • Reinforcement Learning Support: Integrated RL classes optimized for robotic applications. To facilitate quick demonstrations of code functionality, provide a stable-standing ONNX model based on real robot. This model maintains whole-body balance by controlling the lower limbs while the upper body performs hand movements. Such a model enables humanoid robots to remain stable through reinforcement learning when the upper limbs are engaged in VLA tasks.

    • Performance Analytics: Built-in statistical collection for performance monitoring

    • Intel OpenVINO integration: Default inference engine with extensible architecture

    • Extensible Design: Bases classes enabling custom AI model development

Network Topology#

The following diagram illustrates a typical fieldbus topology for humanoid robot applications:

Humanoid Robot Network Topology

Getting Started#

Requirements#

The software runs on standard PCs or servers. Since it is primarily developed in C++, porting to other operating systems is straightforward.

Running#

Please check README file for details.

Examples#

One example using Robot Motion Control Task is provided.

  • mc_rl_sample: A comprehensive demonstration showcasing:

    • Multi-Topology Configuration: Robot task setup with multiple topologies using different ENI files

    • Distributed Control: Three separate ectasks controlling distinct EtherCAT topologies:

      • Left/Right Arm Control

      • Leg control systems

    • Dual Arm Integration: Joint state publishing via shared memory for VLA(Vision-Language-Action) models or simulator integration

    • Custom Motion Algorithms: Leg control with registered callbacks for customized motion algorithms and inference pipelines

License#

The source code is licensed under Apache License . See LICENSE file for details.