![]() |
This delay between setting the steering angle and appearance of its desired effect inevitably leads to oscillation. The change in steering angle doesn't immediately change what we're trying to control--the lateral position of the car--so the robot changes it some more. Eventually it finds itself quickly traveling across the desired position so it starts steering in the opposite direction.
Control becomes much more stable if we aim for a point farther down the road.
Imagine a long pole extending in front of the car. Instead of trying to keep
the car on the line, we try to keep the tip of the pole on the line. More
precisely, if we define
to be the vector from the center of the
car to the tip of our pole, and
to be the vector from the center
of the car to a point ahead of the car on the racing line, then we can use the
angle between them as the steering angle.
![]() |
![]() |
![]() |
(13) |
![]() |
![]() |
![]() |
(14) |
![]() |