AI of several cars in a city

Hello,

I try to program a car so that it can navigate alone in a city among other identical models.
For the moment, the car is able to move alone and stop if there is an obstacle in front of it. I set up a manually activated traffic signal system. Whenever the car is in front of one, it makes a random decision between going left, right or going straight.

Here is where I am:

My problem:
I do not know how to get the vehicle to turn. I do not know how to do it so that it follows the road, because for example if I change its rotation, it will always continue straight, or if it is a little off the track it will not put itself in its place.

From my many research I conclude that it should set up checkpoints, but from the point of view of the script, how to make the car follow them well? And despite that how to make him take turns (good angle, good speed), because for now I’m just applying a force to the car staying under a fixed speed limit, which is much easier than taking a turn.

Thank you for your possible answers !

There is so many ways of doing it.

I would consider roads as grid in shown example.
Weather consider this crossroad as 1x1, or 3x3 is up to you.
I would just get local position of car, in respect to crossroad.
Then get possible directions.
Knowing possible directions, you will know where direction should be positioned on the local position reference of crossroad.
Then use that local reference, and pass to the car.

For simplicity I consider 1x1 grid for whole crossroad.
0.0 is middle. 0,-1 is bottom, -1,0 is left, 0,1 is top and 1,0 is left.
So you move from bottom top, so you target is from 0,-1 to 0,1.
You move right, so you move from 0,-1 to 1,0 etc.
Rest of logic is rather straight forward, to keep on right hand side of the road.