Given this some more thought.
The software should create a database of the 2D road surface/area that it can see. This means breaking up the entire driven area into smaller squares (we’ll call them cells). Each cell has several attributes assigned to it. Necessary attributes are: type of surface (road, grass/runnoff) which determines drivable or not, and outlines the drivable area that the car can use to drive.
Other optional attributes can be things like friction of pavement (which could change based on asphalt or concrete, or wet/dry)
If the grid is small enough, the cells could be used to keep track of the car’s previous path, which it can use as an weighted average (based on lap times) to generate a faster route (given road conditions)
As far as implementing this, the easy and more importantly doable way to do this is to mount several small camera to a RC car. The RC car is easier to control by a computer then a real car, and test can be carried out on the driveway, or basement.
In software, the computer keeps track of how the real world is moving relative to the camera (not how the camera/car moves relative to the real world). The controls (steering, throttle, brake) will be running in a closed loop control system. If a steering input is given, then the world will move a certain amount, and the camera will register that movement, and in turn tell the software if and how much the camera has moved, and adjustments are made accordingly.
So really the software just needs (like it’s that simple) to be able to track some features like the edge of the road.
So far, the only sensing I’m contemplating is seeing the edge of the road. The car will eventually need to see forward as well.
So for now, I’m thinking 3 cameras. Two side cameras that each can see to one side of the car to track how far the car is to edge of track. So the bottom of the view would be the side of the car, and the rest of the view can be partly forward looking.
The third camera could be looking forward. Maybe need a pair of stereo camera… don’t know. This can come later.
I guess adding a GPS receiver doesn’t hurt. This may actually be required if there are no registrable road edges to speak of, the GPS will be able to place the vehicle (roughly) in the right location on the track, so it still has an idea about where it is.
The GPS coordinates could also be saved in the cell database, and used as a way to improve the accuracy of the signal, based on previous readings in the same cell.