Really got me interested in the applications of optimization outside of linear programming and attempting to make humanoid robots walk.
Excellent and similar path optimization examples, and they appear to have been solved in < 5 minutes using a 2003 computer and AMPL. Plus, there's free source code online and in his book on the topic.
They optimized for both minimum time and maximum exit velocity for a 90° turn, shown below.
In practice with high friction coefficients (F1 racing, for example) the “racing line” method on the left is seen. However, in rally car scenarios with low friction, alternative methods seem to be preferable resulting in the drifting-style racing seen on dirt tracks.
The Physics of Racing Series by Brian Beckman (physics guy who writes software for Microsoft Research but races on the side and developed the Forza physics engine)
Also talks about the dangers of eulerian integration, and advises using the Runge-Kutta model in a nice graphical explanation
It appears that drift is not endorsed by professional racers (at least on asphalt).
Many more on the internet, but not as good as the above for brevity.
Implementation
Initially I spent a good amount of time investigating the strategies behind a lot of the bots in the TORCS racing game (a good tutorial here). However, it appears many of them are just finding a few heuristics and twiddling the numbers to see how well they improve over time (one group did use CMA-ES). Quickly abandoned in favor of doing a simple model for this class.
Tried to implement as much as I could of the above two papers!
Using the bicycle model, which ignores the roll dynamics of the car.
Results
Forthcoming…stuck on getting the integration methods working correctly and into fmincon. I did get good results for the tire model though! You prevent skidding by staying in the linear region before those humps taper off (about 8 degrees in this car model) and you lose traction.
My Other Project
Think the above lacks depth? I agree. However, I have a decent excuse…
I was working on pumping out a paper for a different project for the last two weeks. While not explicitly covered in this class, it was basically looking at the optimal estimator for a signal with additive gaussian noise with significant variance. Oh, and you have a poor bit depth when you sample the signal, so it ends up looking like an optimal un-dithering problem!
For an example, how would you extract poor David to the right?
The quick explanation is that we can extract the pulse of an individual just from looking at RGB video of their face. After some point tracking for stabilization, we are able to see that the underlying color change due to the pulse is actually below the bit resolution of the camera and that averaging over a neighborhood of pixels (and reducing the overwhelming gaussian noise) is actually the best way to extract the underlying signal.
Only one other paper talked about taking the mean of a region of pixels, and I showed why it was an optimal estimator and gave suggestions on how to get a good estimate of the pulse frequency over the whole face.