whitewolfcheng / tlmpc

1 stars 2 forks source link

Learning Model Predictive Control (LMPC) for autonomous racing

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.

Prerequisites

The packeges needed for running the code can be installed using pip

pip install cvxopt

Description

The Plant

The vehicle is modelled using the dynamics signle track bicycle model and the tire forces are modelled using the Pacejka formula.

The Path Following

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 Learning Model Predictive Controller

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.

Results

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).

References

This code is based on the following: