Simplify the platform coordination and prevent late
(big bang) integrations
Working towards safety certification of a ROS 2 fork, Apex.AI developed tools that allow us to work smarter, wrapping complicated workflows into simple command-line interfaces for easier use by developers. These tools help us achieve what few automotive OEMs thought possible: Certifying an open-source project to the stringent ISO 26262 ASIL D requirements.
One of the tools that Apex.AI develops is the Platform Automation Tool “PAT.” A tool that simplifies the bring-up of automotive ECUs running automotive applications, the provisioning of applications, and the distributed launching of these applications.
We ensure that all developers have a common, consistent development environment, so why not have a consistent integration workflow when working with different embedded devices, HPC devices and virtual machines?
As the number of automotive platforms increases, validating the software and platform becomes more time-consuming because developers need to have intimate knowledge of each platform. Furthermore, in emerging technologies, such as self-driving vehicles, the compute platforms are heterogeneous, having many different RTOSs and testing strategies, resulting in constant requirement changes. The resulting complexity slows down the development process and delays validation to a late stage in development when defects are the hardest to fix. Working with different automotive customers, we found that software and platform challenges increase as we shift towards software-defined cars.
So, how do we simplify the coordination of different suppliers working on software for a platform and prevent late (big bang) integrations?
At Apex.AI, we have consolidated the workflows for different platforms into a common tool, abstracting away the subtleties of validating software on each platform such that we can test early and often on real hardware as early and often as possible. The common tool enables us to quickly integrate new platforms to augment our cloud infrastructure and continuous integration (CI) system. PAT is a tool that consolidates the workflows around flashing, booting, and provisioning heterogeneous devices, abstracting the specific steps while giving developers the confidence of working in a clean, reproducible environment. Along with the bring-up steps, PAT makes it easier to automate launching processes across distributed targets, which means users can easily control and monitor the processes running on different ECUs, virtual environments such as cloud or on-prem instances.
Lidar perception stack execution setup using PAT
PAT is a plugin-based tool that unifies the workflow, establishing a consistent set of APIs for developers. This unified workflow has allowed Apex.AI to build high-quality software faster than traditional automotive suppliers.
Consider an OEM company workflow where they want to deploy and execute automotive applications on heterogeneous distributed targets that mimic the pre-production environment to validate software and hardware integration without any process overhead.
To enable this use case, PAT allows the user to define a configuration file that contains the target-specific attributes. In an automotive environment, a single ECU is the target device. This means the user can define a complete application-specific environment and the relationship between each target in one single configuration file. Each time the new version of the application is ready, using these defined configurations, users can simply deploy and launch the applications on distributed targets by running a single PAT command. This makes it easier for any non-technical user to configure and gather data for further analysis.
Similarly, a use case could be simplified, where a developer, during the software implementation phase, wants to seamlessly deploy software packages on different ECUs in an ECU farm and then execute unit tests, performance tests, and production applications, along with monitoring processes on different ECUs. The use case looks very straightforward. One could say “why not just copy and execute the applications?”
True, but consider where requirements keep changing and developers need to quickly test on different computing platforms, having many different OSs and requirements. So, how does a developer minimize the time and effort with no intimate knowledge of each platform? What you need is a lightweight tool that consolidates the full workflow and provides developers with a common integration interface to interact with different targets.
This is where the PAT plays an important role in simplifying the coordination between different targets. At a high-level PAT does the following:
PAT workflow
CI/CD use-case - executing applications
Application execution flow in CI
Engineers can easily integrate executing applications running on different targets in CI to build workflow for quick SiL and HiL testing. Similar to application execution use-case, users can extend PAT to run different types of validation/integration tests such as low level unit-tests or performance tests. At Apex.AI we extend our CI infrastructure to use PAT to perform in-vehicle software deployment and execution of integration tests. The complete workflow can be defined in the PAT configuration file as shown in an example above.
How do we achieve target commonality?
At Apex.AI, we study different platform architectures and find the commonality between different architectures; for example, interface to each target, different ways to flash an ECU, different bootloader support, etc., to resolve the challenges that an embedded software company faces during validation. In addition, we generally work closely with different customers and partners to define a common strategy to avoid issues in later stages.
Platform support
In conclusion, PAT is a platform-agnostic, easy, and straightforward tool that unifies the workflow used for developer, SiL, HiL, and fleets testing, deploying, and validating software on different devices and OSs.
Currently, PAT is being used by our team and customers. Other companies can leverage what we’ve learned in building our Platform Automation Tool (PAT) to easily build workflows and scale validation of their software.
If you are interested in PAT, contact us!
We are also growing our team worldwide. Visit Careers.
Comments