The Berkeley Autonomous Race Car (BARC) Project

During my PhD I had the opportunity to test control algorithms on the Berkeley Autonomous Racing Car (BARC) platform developed at the MPC lab by my colleague Jon Gonzales.

The BARC is an open source low cost platform developed for teaching vehicle dynamics and control algorithms. It is a platform for learning how to implement control algorithms in the real world and to understand the main challenges that we need to face when dealing with experimental systems.

In the past years, Jon and I lead several projects spanning control, estimation and low level actuation. We were lucky to work with wonderful people which were very excited to work on the BARC. Each student did a great master thesis and brought an important contribution to the BARC project.

Follows a list, in chronological order, of the students that worked on the Learning Model Predictive Control (LMPC) framework for autonomous racing on the BARC.


Visiting Master Students

Max (Maximilian Brunner) worked both on hardware and theory. Firstly, he implemented the first version of the state estimator and the low level controller. Afterwards, he extended the LMPC theory to handle repetitive tasks. Please refer to this paper for further details.
Martin (Martin D'Hoffschmidt) explored the possibility of incorporating Deep Neural Network (DNN) in the LMPC framework. First, he developed (in C) a library for training and then evaluating DNN. Afterward, he implemented the LMPC where the vehicle model was a DNN. Finally, he designed a "curiosity cost" which would encourage the LMPC to explore new regions of the state space. All his work has been tested in simulation with the high fidelity software CarSim.
Michael (Michael Garstka) worked on Adaptive LMPC. The key idea is to build a controller which at the same time computes the control action and adapts the vehicle model used in the forecasting process. Michael successfully demonstrated on the experimental set-up that his adaptive strategy is able to improve the performance of the controller.
Felix (Felix Nobis) worked on obstacle avoidance. He designed and implemented a new strategy for learning when obstacles can appear or disappear on the track. Indeed, when an obstacle is placed on the race track the set of safe point shrinks. The problem is challenging as, when the obstacle can appear everywhere on the track, the recorded data do not represent safe regions. Felix successfully tested his algorithm on the BARC simulator.
Francesco (Francesco Ricciuti) continued the work on obstacle avoidance. He focused on speeding up the LMPC solver time and adapting the safe set definition when moving obstacles present on the track. Finally, he tested the controller on the BARC platform.
Shuqi (Shuqi Xu) worked on identifying and testing modeling strategies for autonomous racing. He developed several strategies based on physics law and\or machined learning. Furthermore, he developed a multi-frequency controller which is able to run in real-time (shown in the video). Finally, he co-developed the latest version of the state estimator used in the BARC platform.
Lukas (Lukas Brunke) worked on competitive multi-agent autonomous car racing using LMPC. He developed strategies for state exploration, safe set selection and improved the obstacle avoidance behavior. He demonstrated on the BARC simulator shown that the autonomous vehicle were able to perform multiple overtaking maneuvers.