Road Subsystem - woven-planet/opensafety-mbse GitHub Wiki
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.
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.
- What is a road, exactly?
- Road Segments: Modeling left and right edges in crossing roads
- Modeling the legal direction of traffic
- Modeling lane divisions and the organized flow of traffic
- Modeling fundamental lane categories
- Modeling special usage lanes and subsystem recap
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.
tri.guidance.road.td.1a / Leon Starr / Version 2.2.1 / 2021-7-23
Subsystem range: 1-49 (for numbering relationships on class diagram)
- Barrier Type
- Bidirectional Lane
- Center Turn Lane
- Conduit
- Country
- Dedicated Bike Lane
- Division Transition
- Driving Lane
- Driving Lane Order
- End of Lane
- Exclusion Lane
- Flow Separator
- Forward Paired Conduit
- Hard Division Transition
- Inside Shoulder
- Island
- Known Map Road
- Lane Arrangement
- Lane Division
- Lane
- Lateral Lane Boundary
- Left Road Edge
- Median
- One Way Road Segment
- Paired Conduit
- Parking Lane
- Restricted Driving Lane
- Reverse Paired Conduit
- Right Road Edge
- Road
- Road Edge
- Road Map Specification
- Road Segment
- Shared Road Segment
- Shared Single Road Lane
- Shoulder Lane
- Soft Division Transition
- Start Of Lane
- Traffic Territory
- Two Way Road Segment
- Unidirectional Lane
- Unpaired Conduit
- Unrestricted Driving Lane
- R1
- R2
- R3
- R4
- R5
- R6
- R7
- R8
- R9
- R10
- R11
- R12
- R13
- R14
- R15
- R16
- R17
- R18
- R19
- R20
- R21
- R22
- R23
- R24
- R25
- R26
- R27
- R28
- R29
- R30
- R31
- R32
- R33
- OR34
- R35
- R36
- OR37
- R38
- R39
- R40
- R41
- OR42
- R43