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.