The Learning Model Predictive Control (LMPC) is a data-driven control framework developed at UCB in the MPC lab. In this example, we implemented the LMPC for the autonomous. The controller drives several laps of a race track and it learns from experience to improve the lap time.
The packeges needed for running the code can be installed using pip
pip install cvxopt
The vehicle is modelled using the dynamics signle track bicycle model and the tire forces are modelled using the Pacejka formula.
1) Lap 1: a PID path following controller is used to drive the vehicle around the track. 2) Lap 2: the data from lap 1 are used to estimate a LTI model used to design a MPC for path following 3) Lap 3: the data from lap 1 are used to estimate a LTV model used to design a MPC for path following
The data from the previous laps are used to build a safety set and a terminal cost which are used to initialize the LMPC. Futhermor, the LMPC uses a LTV model identified from data.
The LMPC used forecast to plan the vehicle trajectory looking few seconds into the future. This trajectory is planned in order to minimize the lap time, but it is constrained to land in a set of safe states. In the animation below we see the closed-loop trajectory (in black) of the vehicle after 5 laps of learning. The LMPC plans an open-loop trajectory (in red) which minimizes the lap time and lands in the safety set (in blue).
This code is based on the following: