Abstract
In the automotive industry today, companies are fiercely competing to field ever more sophisticated autonomous features in their product lines. The hoped-for culmination of this competition is full autonomy at mass-market scales. The stakes here are high: the companies (and countries) that get there first will be in a commanding position to influence how autonomy-related capabilities evolve for decades to come. This high-stakes competition has resulted in significant pressure to innovate quickly with respect to key technologies for autonomous driving, such as perception and decision-making capabilities. This pressure has led to a ?black-box? approach to system design, with off-the-shelf software and hardware components, originally intended for other contexts, repurposed to implement autonomous-driving functions. One of the most widely used repurposed black-box components is ROS (the Robot Operating System). ROS enables separately developed software programs that implement different functions (e.g., camera-based perception, correct lane following, etc.) to be combined to form a system that provides broader capabilities (e.g., a car that drives itself). Unfortunately, as its name suggests, ROS was originally designed and implemented to support the development of robotics applications, which have very different requirements from autonomous vehicles. As a result, ROS lacks features needed to ensure safe automotive system designs. A key issue here is a lack of support for ensuring real-time safety, i.e., that certain functions (e.g., braking) are performed ?on time? (e.g., before an obstacle is hit). This project is directed at producing an alternative to ROS that takes real-time safety as a first-class concern.
Despite its name, ROS is really not an operating system (OS) but rather a set of user-level middleware libraries that facilitate constructing processing graphs typical of robotics applications. These libraries support modular system development via a publish/subscribe (pub/sub) notion of message communication between graph nodes that allows different software packages to be loosely coupled. This loose coupling enables software reuse, which has been a key to ROS?s success in enabling rapid innovation. ROS?s success convincingly demonstrates the importance of pub/sub in fueling innovation in autonomy. However, pub/sub must be safe to apply. This project is directed at this very issue, specifically in the context of multicore+acclerator platforms as used in autonomous vehicles. In such a platform, a CPU-only multicore computer is augmented with co-processors like graphics processing units (GPUs) that can speed up certain mathematical computations that commonly occur in AI-based software for autonomy. The specific aim of this project is to produce a pub/sub alternative to ROS that facilities real-time safety certification. Key research tasks include resolving fundamental resource-allocation concerns at the OS and middleware levels, producing analysis for validating response-time bounds in real-time pub/sub graphs, producing a reference pub/sub middleware implementation, and experimentally comparing this implementation to ROS. While evolving ROS itself is beyond the scope of this project, this project will expose fundamental tradeoffs of relevance to such an evolution.
Performance Period: 01/01/2024 - 12/31/2026
Institution: University of North Carolina at Chapel Hill
Sponsor: National Science Foundation
Award Number: 2333120