How to move train on curved tracks

I want to move a train along the tracks.
i have tried this with the waypoints but the train does not turn smoothly.
how can i move a car on curved tracks?

Use the waypoints to specify a cubic curve of some kind (hermit, bezier, etc) Then use the computed points along this curve to control how the train should move.