The idea is to define a set of layers that abstract different aspects of what is need to drive a car. It's my personal view on the problem and I'm open for feedback ;)
Oscar is a Tamiya RC car that I built to start defining the bottom layers of my stack. Initially we got:
- Vehicle layer: control things like velocity and steering.
- Driver layer: the entity sending the commands(initially just me and a game controller)
Layers that can follow down the road
- Perception layer: it's nice when car can see and be aware of the surroundings right? What if the driver is not be in the car, could be a car with no windows or just a blind driver who wants to go the supermarket.
- Navigation layer: Drivers want to drive, somebody else could be in charge of directions.
- Boss layer: In a sad world drivers don't have much freedom, they work for some bossy boss who is telling them where to go all the time.
- Friends layer: In a happier world drivers take their own decisions and also have fellow driver friends with whom they can talk to know what everyone is up to and take on missions as a big happy friendly community.
The "OS" in Carlos could also stand for "operating system." Now THAT would be something - an open-source OS for cars.