Skip to content

Road Subsystem

Leon Starr edited this page Mar 1, 2022 · 33 revisions

Define: road. We're all experts in autonomous driving. Surely we all know what a road is, right?

Or maybe, just maybe, we all use wildly or, worse yet, subtly different definitions depending on what sort of problem we are focused on at the moment.

Forgetting about your particular algorithm or area of focus, there surely must be some set of fundamental real-world concepts... things in the driving environment in addition to road, like lane, lane division, median and so forth that we can all agree on. In fact, the names aren't so important, but the concepts are. The three sides of a triangle can be equally well described with a2 = b2 + c2 and b2 = d2 + q2. It's good to agree on names, but much more important to agree on the underlying elements. Our models propose both names and semantics (and any resultant rules and constraints among them). We are primarily concerned with the semantics, but we need the names to have a conversation.

Why is it so important for safety, testing and design purposes to pin down the meaning of a supposedly self evident term like a 'road'? We could just as easily ask why it is so important for aerospace engineers to have a definition for an ellipse. Now, we're no rocket scientists, but there are certain behaviors available to an Ego Vehicle on a 'road' that would be quite dangerous were it in, say a parking garage. Less extreme distinctions are also important. When a freeway splits off to an exit, are you looking at one road or two? Does it matter? What are the logical consequences of one definition vs. another? How many roads are you looking at when you observe a roundabout intersection with three entrances?

The Road Subsystem and its class model attempt to nail down a detailed, useful and algorithm/technology independent definition grounded in math and logic. This subsystem consists of a single class diagram and descriptions of each diagram element such as class, attribute, relationship and so forth. Every element on the diagram is described (or at least should be!).

This class model (below) describes the fundamental structure of the roadway: lanes, lane divisions, road segments, road edges, traffic flow, etc. Having defined roads and their structure, we obtain the lego-like semantic building blocks we will need to define more complex aspects such as intersections, lane turns, crosswalks and onward. These will be detailed in other connecting subsystems.

Road Subsystem Videos

The following short videos describe the fundamental concepts behind the Road Subsystem class model. It's a good idea to watch these before reading the models.

  1. What is a road, exactly?
  2. Road Segments: Modeling left and right edges in crossing roads
  3. Modeling the legal direction of traffic
  4. Modeling lane divisions and the organized flow of traffic
  5. Modeling fundamental lane categories
  6. Modeling special usage lanes and subsystem recap

Subsystem Workbook

The Road Subsystem Workbook is a condensation of everything currently modeled in the Road Subsystem. Most of it consists of a class model which is probably easier to reference in the wiki links below. We generate this workbook as part of our open source tool chain which is the same process by which we generate running code from the models.

Since the Road Subsystem is focused on describing the semantics and policies of the road environment, you won't see any driving maneuvers or other behavior in this subsystem. See the Ego Subsystem for those dynamic elements.

Class Model

tri.guidance.road.td.1a / Leon Starr / Version 2.2.1 / 2021-7-23

Subsystem range: 1-49 (for numbering relationships on class diagram)

Class descriptions
Relationship descriptions

Clone this wiki locally