Road Subsystem REF - 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 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.