# Discussion¶

## Limitations and outlook¶

The lateral control we implemented in this chapter is a good starting point, but real highway lane-keeping systems are more sophisticated. In the Carla simulations you might have observed that the vehicle is sliding/drifting when driving curves at high speed. In this case, we are outside of the validity regime of the kinematic bicycle model, which is the basis our pure pursuit controller. Hence, it is no wonder that our lateral control is performing suboptimal here.

Control algorithms based on the dynamic bicycle model are more promising in this situation. You can learn about the dynamic bicycle model in the lectures on Vehicle Dynamics and Control by Prof. Georg Schildbach on youtube. A very sophisticated control method that can work with the dynamic bicycle model is Model Predictive Control (MPC), for which I recommend this youtube playlist by MathWorks as an introduction. I plan to write a chapter on MPC in the future.

Finally, I recommend Ref. [S+09]. It discusses several controls methods for automated driving, and has a nice empirical performance comparison table at the end of section 5.

## Control in a real ADAS system: openpilot¶

It is interesting to look at a real-world control system for automated driving: openpilot. The relevant code is available on github in openpilot/selfdrive/controls/. As you can see here, the software is using the dynamic bicycle model. Model Predictive control is used to plan a trajectory. Lateral control is based on this plan, and dependent on the vehicle a different algorithm is used. You will find lateral control with PID, LQR or INDI in the source code. Longitudinal control is done using a PIController.

## References¶

S+09

Jarrod M Snider and others. Automatic steering methods for autonomous automobile path tracking. Robotics Institute, Pittsburgh, PA, Tech. Rep. CMU-RITR-09-08, 2009.