Autonomous Drifting 
Optimal control of a highly nonlinear system. 


This was a class project I did with Corey Walsh, Samir Wadhwania, and Martina Stadler for 6.832: Underactuated Robotics taught by Russ Tedrake 

Drifting If you were to drive your car forwards really fast and then turn the wheel sharply, the back wheels would have so much momentum that they would stop gripping the road and start slipping sideways. This can be very dangerous, if uncontrolled, but expert drivers can make cars do incredible things. As the world transitions to autonomy, we need to have controllers that can handle accidental drifting to prevent crashes, and eventually to have controllers that drift on purpose. At high speeds, drifting can be far more efficient at going around turns. Project Overview We wanted to control high speed drift maneuvers on a 1/10th scale car. The project involved modeling, planning and control. Plus the added difficulty of using hardware forced us to tackle a number of engineering challenges. Our system used motion capture data, transmitted wirelessly, to track the pose of the car and reducing the end to end latency was a nightmare. Below is a demonstration of a neural network model I made that learns the car dynamics soley from motion capture data. We also explored hand made models like the magic formula.
Once we developed a model of the car, we used solvers in drake to generate optimal trajectories from a given starting to end location. Then we used LQR to stabilize the car around those trajectories:
Here is the car stabilizing donuts:
Our controller is not perfect as you can see in the video above. It has a constant offset plotted here: image:https://c2.staticflickr.com/2/1928/30716400607_f7318de9c2_o.png However, it is significantly better than an open loop controller: image:https://c2.staticflickr.com/2/1934/45657289001_8e70221a24_b.jpg Plus it can stabilize from a variety of starting conditions: image:https://c2.staticflickr.com/2/1951/44932343244_37cd1e276e_b.jpg