Building a production-grade operating system for robots requires a perfect mix of customization, performance, and security. With Yocto and ROS 2, this becomes achievable. In this post, we're diving deep into the integration of ROS 2 Humble into Yocto and PetaLinux, and why hardware acceleration plays a vital role in this process.

Yocto releases

Introduction to Yocto and OpenEmbedded

When it comes to building industrial-grade embedded systems, multidisciplinary engineering teams often lean on the robust capabilities of Yocto, a project designed explicitly for constructing embedded Linux systems. But why? The key reason is that Yocto empowers you to create a tailor-made Linux system aligned with your specific needs, giving you control right from the bootloader, through the Linux kernel, and up to userspace libraries, such as those enabling ROS 2 support.

Yocto allows you to build a customized Linux system for your use case, providing unmatched granularity at the cost of complexity.

If ROS 2 Humble is on your radar and you wish to truly harness the capabilities of your industrial Linux embedded systems, read on.

Why Yocto/PetaLinux? Why complicate yourself so much?

Navigating the world of Yocto/PetaLinux might feel like stepping into a labyrinth. But once decoded, the rewards in terms of quality, security, and customization are unparalleled. Let's demystify some terminology:

  • Yocto: An open source project facilitating the creation of custom Linux systems for embedded products, regardless of their hardware architecture.
  • Poky: The reference embedded distribution for the Yocto project.
  • OpenEmbedded: The engine behind the Yocto project that facilitates building images.
  • BitBake: The task executor and scheduler used by OpenEmbedded.
  • Recipe: Essentially, a set of instructions detailing how to build packages.
  • Layer: A cluster of related recipes.
  • OpenEmbedded-Core (OE-core): The foundational data of BitBake recipes and classes common to various OpenEmbedded systems, including Yocto.
  • Honister: The codename for Yocto's project version 3.4. For more on Yocto releases, see here.
  • PetaLinux: AMD/Xilinx's extension of Yocto, tailored for their hardware.
  • meta-ros: The OpenEmbedded recipes for both ROS 1 and ROS 2.

For a more exhaustive list, see Yocto Project Terms.

Embracing Yocto, with its detailed approach, offers not just a leaner system in terms of size, but also a more efficient execution environment where everything is under your control. This is pivotal for robots – real-time systems that require deterministic performance, high quality, and top-notch security.

Why Yocto/PetaLinux is a great fit for hardware acceleration in robotics?

At its core, hardware acceleration involves designing custom compute architectures to improve robot's computing performance. By designing custom acceleration kernels, robots can achieve faster response times. This becomes even more potent with embedded FPGAs and GPUs.

Blending hardware acceleration with the granularity of Yocto helps in creating high-performance, production-grade robotic systems.

Yocto, when paired with hardware acceleration, delivers high performance production-grade robotic systems.

meta-ros layers for ROS 2 Humble Hawksbill, now support for langdale

Acceleration Robotics champions the cause of designing high-performance robot brains through custom compute architectures. This is achieved via hardware acceleration solutions, regardless of whether they're built on FPGAs or GPUs. Such bespoke high-performing Linux distributions, combined with ROS, can be accomplished using meta-ros layers.

We've been a part of the ROS community since the ROS 1 era, contributing to meta-ros, and even took the initiative to port meta-ros to ROS 2. This dedication continued with our contributions to ROS 2 Humble beta testing and introducing a Pull Request that updated meta-ros for ROS 2 Humble compatibility with the Honister Yocto release.

Given the numerous support requests we've received, we thought it'd be helpful to share that we've contributed back again a series of recipe updates that bring meta-ros for ROS 2 Humble compatibility with the Langdale Yocto release. Support for Langdale is available at https://github.com/ros/meta-ros/tree/langdale.

The rise of meta-ros?

The increasing demand for meta-ros stems from its ability to bridge the gap between the customizability of Yocto and the functionalities of ROS. ROS robotics companies and developers increasingly view meta-ros as an essential tool to build high-performance, secure, and reliable robotic systems, as evidenced by the numerous support requests and the continuous updates to ensure compatibility with newer Yocto releases. Here're are some of the relevant community contributions worth highlighting:

  • meta-ros for ROS 2 Iron and Yocto Kirkstone (branch)
  • meta-ros for ROS 2 Humble and Yocto Kirkstone (branch)
  • meta-ros for ROS 2 Humble and Yocto Mickledore (branch)

In conclusion, as robotics applications continue to evolve and demand more from their operating environments, tools like meta-ros will undoubtedly become indispensable. The ROS community, with its rich history of collaboration and innovation, is well poised to lead the charge, ensuring that robotics solutions are both cutting-edge and reliable.