The core of robots resides in their computing systems including both the hardware and the software levels. This entails computer architectures, algorithms but also frameworks for development. With robotics called to be the next major driver for computing demand and ROS 2 the standard framework for robot application development, the ability to build faster ROS 2 graphs with hardware acceleration in an open and vendor agnostic manner will be instrumental for the development of robotic systems. We at Acceleration Robotics discuss the technology enablers that empower this, group them into the ROS 2 Hardware Acceleration Stack and present ROBOTCORE™ as its implementation.
The ROS 2 Hardware Acceleration Stack
Enter the ROS 2 Hardware Acceleration Stack, 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:
Standard/convention | Title | Rationale |
---|---|---|
REP 2009 | 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 to align with accelerators |
REP 2008 | ROS 2 Hardware Acceleration Architecture and Conventions |
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. |
REP 2007 | Type Adaptation Feature |
An extension to rclcpp that will make it easier to convert between ROS types and custom, user-defined types for Topics, Services, and Actions. |
REP 2000 | ROS 2 Releases and Target Platforms |
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.
REP 2009 - Type Negotiation Feature: adaptively modify pub/sub behavior for accelerators
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.
ROBOTCORE™ Hardware Acceleration Framework for ROS
ROBOTCORE™ implements the ROS 2 Hardware Acceleration Stack and allows to easily leverage hardware acceleration in a ROS-centric manner and build custom compute architectures for robots, or "robot cores" (IP cores, or Intellectual Property cores, sometimes also referred to as chipware). With support for various silicon vendors, with ROBOTCORE™ roboticists can adapt one or simultaneously more of the properties of their computational graphs (e.g., its speed, determinism or power consumption) optimizing the amount of hardware resources and, as a consequence, the performance in an accelerated computational graph dataflow.
Get in touch to learn more.