RobotLocomotion/drake — pull request #544 by rdeits (2014-11-10 06:27:40+00:00)
Title: Footstep planner upgrade and new mixed-integer program class

This branch introduces a significant overhaul to the new footstep planner (based on the humanoids14 paper). All of the mixed-integer footstep planning problems are now instances of the new MixedIntegerFootstepPlanningProblem class, which is a subclass of the new MixedIntegerConvexProgram. This structure makes it very easy to experiment with different footstep planners which use different notions of reachability or different approximations of rotation. For example, two footstep planners with similar structure but different rotation methods can be seen in `/software/drake/systems/robotInterfaces/+footstepPlanner/linearUnitCircle.m` and `/software/drake/systems/robotInterfaces/+footstepPlanner/humanoids2014.m`.

The MixedIntegerConvexProgram introduced here is currently just a very basic container which can make it easier to construct programs symbolically using yalmip or non-symbolically using matrix manipulation, and to transition from one form to another. To see what that lets you do, and why it might be a good idea, check out the simple demonstration in `/software/drake/solvers/test/testMixedIntegerConvexDemo.m`.

Currently, MixedIntegerConvexProgram does not lie in the same hierarchy as NonlinearProgram. We've talked about how to unify the structures, but for now it's using a somewhat different structure that I'd like to keep experimenting with before we decide to unify the different approaches.