The ROS 2 Hardware Acceleration Stack presents a series of extensions to ROS 2 which allow to leverage hardware acceleration and create custom compute architectures providing a faster ROS 2 execution and a timing-safe event-driven programming interface. The stack is composed of 4 key elements:
||Allow ROS 2 Nodes to dynamically negotiate the message types used by publishers and subscriptions, as well adaptively modifying the behavior of publisher and subscriptions to align with accelerators|
||Architectural pillars and conventions required to introduce hardware acceleration in ROS 2 in a scalable and technology-agnostic manner. Presents one interface for all hardware acceleration vendors.|
||An extension to rclcpp that will make it easier to convert between ROS types and custom, user-defined types for Topics, Services, and Actions.|
||Production-grade multi-platform ROS support with Yocto|
While leading the ROS 2 Hardware Acceleration Working Group, Acceleration Robotics has contributed and maintains open source implementations of various components of the stack above. A complete implementation of the ROS 2 Hardware Acceleration Stack including support, documentation, examples as well as reference designs is realized within our product ROBOTCORE™. The section below discuss in more detail each one of its capabilities.
Type negotiation feature allow ROS 2 Nodes to dynamically negotiate the message types used by publishers and subscriptions, as well adaptively modifying the behavior of publisher and subscriptions. With type negotiation ROS 2 Nodes can a) publish different types of messages depending on the graph, b) publish multiple formats at the same time, c) enable only necessary publishers and subscriptions, d) delay publisher and subscription preferences while waiting for additional information from the graph.
REP 2008 - ROS 2 Hardware acceleration architecture and conventions: One interface for all hardware acceleration vendors
Implementing the open architecture for hardware acceleration of REP 2008, the stack deals with vendor proprietary libraries for hardware acceleration in robotics. This provides a common consistent API for creating accelerators, which helps accelerate computations, increase performance and abstract away the complexity of bringing ROS computational graphs to any of the supported silicon architectures. All while delivering the common ROS development flow.
REP 2007 - Type Adaptation Feature: No ROS type conversion for intra-process communications unless necessary
Type Adaptation introduces a series of extensions to ROS 2
rclcpp that will make it easier to convert between ROS types and custom, user-defined types for Topics, Services, and Actions. In the scope of the ROS 2 Hardware Acceleration Stack, type adaptation feature helps avoid unnecessary type conversions when interacting between Nodes and accelerators, which speeds up the dataflow in the graph.
REP 2000 - ROS 2 Releases and Target Platforms, Yocto enablement: Production-grade multi-platform ROS support with Yocto
Instead of relying on common development-oriented Linux distros (such as Ubuntu), Yocto allows to build a customized Linux system for each robotics use case with ROS, providing unmatched granularity, performance and security. We contributed a port of the Yocto recipes of ROS 2 Humble which we leverage within ROBOTCORE™ to build production-grade ROS 2 custom operating systems for robots.
If you’re interested to learn more about it, join the next meeting of the ROS 2 Hardware Acceleration WG.