The emergence of an ecosystem of software components for autonomous driving around ROS 2
The robotics world of today is built on ROS. With the initial release in 2007, its first version has gained widespread adoption and has been accompanied by a completely redesigned successor, ROS 2, in 2017. In addition to the core modules, a mature ecosystem of additional packages is available and supported. They cover functionality such as sensor interfaces, standard preprocessing functions, or even complex localization of motion planning algorithms.
Today, it is one of the go-to frameworks for prototyping autonomous driving functionality for many reasons:
Its well-structured APIs make it easy to get started. In addition, there are many configuration options for advanced users to tweak the system's performance.
The ecosystem provides a lot of debugging and introspection tools. Its easy to output the data published on individual topics or visualize it graphically to build an understanding of the current behavior of the system. The same is possible for data that has been recorded during runtime.
The functionality available via third-party packages allows developer teams to focus on their core objectives and reuse existing components in other areas.
The widespread adoption makes it easy to cooperate with researchers, advanced engineering departments and integrate with existing customer solutions.
These advantages have convinced many software vendors as well as system integrators to build their autonomous driving systems on top of ROS. System integrators can use the available ecosystem to boost their development speed and leverage the advantages of shared validation and certification efforts provided by the vendor-based approach. In addition, the availability of prototyped implementations allows testing of the overall vehicle early in the development process.
We are participating in this ecosystem with the modular driveblocks software stack. It is built as a platform and middleware agnostic C++ library. In addition, we offer an off-the-shelf integration with ROS 2 to allow our customers to integrate the components easily. There are two models for customers to leverage the modular driveblocks software stack:
Within the “component-based” model (on the left of the above picture), customers can pick the modules they need from the modular driveblocks software stack and integrate them with their existing autonomy stack. This approach helps to accelerate internal development and allows to fill technology gaps. Another strategy is to use the driveblocks components as a redundant path to an internally developed software component. This allows covering increased robustness and safety requirements.
Within the “pre-configured stack” model (on the right of the above picture), customers have access to a full set of algorithms to automate their respective vehicles. With this approach, customers can move from configuring and building up their vehicle to driving it autonomously within a short time frame. They can concentrate their engineering resources on integrating the software with the vehicle rather than re-building all the code from scratch and therefore deliver value to their customers on a much faster timeline.
While the focus of ROS 2 is to speed up the iteration speed of the development team during early project stages and give them all the tools they need, production-grade software requires certification and thorough performance and quality management. We have therefore partnered with Apex.AI to integrate our components with their certified and automotive-grade fork of ROS 2. This allows the driveblocks mapless autonomy platform to serve the needs of different customers and pick the right base software for their project. Other integrations are available upon request.