Drake
MixedIntegerFootstepPlanningProblem Class Reference

A general structure for various footstep planning approaches. More...

Inheritance diagram for MixedIntegerFootstepPlanningProblem:
Collaboration diagram for MixedIntegerFootstepPlanningProblem:

## Public Member Functions

function MixedIntegerFootstepPlanningProblem (biped, seed_plan, has_symbolic)
Construct a new problem, optionally with internal symbolic representations of all variables. More...

For each index j in step_indices, add a cost of the form: relative_weights(j) * (footsteps(:,j) - xgoal)' * w_goal * (footsteps(:,j) - xgoal) More...

Add a convex conic constraint that sin^2 + cos^2 <= 1. More...

Add mixed-integer linear constraints requiring that sin and cos live on the piecewise linear outer approximation of the unit circle with num_slices sides. More...

Add mixed-integer linear constraints requiring that sin and cos live outside the piecewise linear inner approximation of the unit circle with num_slices sides. More...

Add mixed-integer linear constraints implementing the piecewise linear relationship between yaw and cos(yaw), sin(yaw) described in "Footstep Planning on Uneven Terrain with Mixed-Integer Convex Optimization" by Robin Deits and Russ Tedrake (Humanoids 2014) More...

Constrain the values of sin and cos for the current poses of the feet. More...

Restrict the set of sector transitions based on the reachability of Atlas. More...

Add basic limits on delta z and delta yaw between footsteps. More...

Add quadratic constraints to restrict the relative foot displacements in X and Y. More...

Add second-order conic constraints to restrict the reachable set of foot poses with an ellipse instead of a set of circles (as in addXYReachabilityCircles). More...

Add a binary variable for each footstep which, if true, forces that footstep to the final pose in the footstep plan. More...

Add regions of safe terrain and mixed-integer constraints which require that each footstep lie within one of those safe regions. More...

function fixRotation (obj)
Fix the rotations of every step (see footstepPlanner.fixedRotation()) More...

Add linear constraints describing the reachable polytope (see footstepPlanner.fixedRotation()) More...

function getFootstepPlan (obj)
Solve the problem if needed and retrieve a footstep plan with the corresponding solution. More...

Public Member Functions inherited from MixedIntegerConvexProgram
function MixedIntegerConvexProgram (has_symbolic)
Construct a new mixed-integer convex program. More...

function addVariable (obj, name, type_, size_, lb, ub, start_)
Build a struct to hold the sizes and indices of our decision variables This is a new approach that I'm experimenting with, which should offer a mix of the advantages of symbolic and matrix-based optimization frameworks. More...

function addLinearConstraints (obj, A, b, Aeq, beq)

Add polygonal approximations of second-order cones. More...

Polycones only support approximations of cones with two variables on the left-hand side and one on the right-hand side. More...

function setLinearCost (obj, c)

function setLinearCostEntries (obj, idx, val)

function addCost (obj, Q, c, objcon)

function convertPolyCones (obj)
Build linear constraints for our polygonal cone approximations. More...

function solve (obj)

function solveGurobi (obj, params)

function getGurobiModel (obj)

function extractResult (obj, x)

function solveYalmip (obj, params)

function solveMosek (obj)

function getMosekModel (obj)

function setSolver (obj, solver)

function compareSolvers (obj)

## Public Attributes

Property biped

Property nsteps

Property seed_plan

Property weights

Property max_distance

Property pose_indices

Public Attributes inherited from MixedIntegerConvexProgram
Property vars

Property nv
the number of variables More...

Property c
the linear cost vector c'x More...

Property Q
the quadratic cost matrix x'Qx More...

Property A
linear inequalities Ax <= b More...

Property b

Property Aeq
linear equalities Ax == b More...

Property beq

quadratic constraints x'Qc x + q' x <= rhs More...

Property objcon
constant term in the objective More...

Property cones
indices of second-order cones (see http://www.gurobi.com/documentation/5.6/reference-manual/matlab_gurobi) More...

Property polycones
indices of polygonal approximations of second-order cones. The structure of these constraints are designed to mimic the second-order constraints in obj.cones, but they use a polygonal linear outer approximation of the conic constraint. The number of pieces in each approximation is set by N. More...

Property symbolic_constraints
a list of symbolic constraints constructed with yalmip More...

Property symbolic_objective
a symbolic objective term constructed in yalmip More...

Property x_sol

Property solver

Protected Attributes inherited from MixedIntegerConvexProgram
Property has_symbolic

Property symbolic_vars

## Detailed Description

A general structure for various footstep planning approaches.

For example implementations, see footstepPlanner.humanoids2014, footstepPlanner.linearUnitCircle, and footstepPlanner.fixedRotation

## Constructor & Destructor Documentation

 function MixedIntegerFootstepPlanningProblem ( biped , seed_plan , has_symbolic )

Construct a new problem, optionally with internal symbolic representations of all variables.

Parameters
 biped a Biped. seed_plan a blank footstep plan, provinding the structure of the desired plan. Probably generated with FootstepPlan.blank_plan() has_symbolic whether to keep symbolic variables
Return values
 obj

## Member Function Documentation

Constrain the values of sin and cos for the current poses of the feet.

Return values
 obj
 function addInnerUnitCircleInequality ( obj , num_slices , use_symbolic )

Add mixed-integer linear constraints requiring that sin and cos live outside the piecewise linear inner approximation of the unit circle with num_slices sides.

Return values
 obj
 function addOuterUnitCircleCone ( obj , use_symbolic )

Add a convex conic constraint that sin^2 + cos^2 <= 1.

Return values
 obj
 function addOuterUnitCircleEquality ( obj , num_slices , use_symbolic )

Add mixed-integer linear constraints requiring that sin and cos live on the piecewise linear outer approximation of the unit circle with num_slices sides.

Return values
 obj
 function addQuadraticGoalObjective ( obj , goal_pose , step_indices , relative_weights , use_symbolic )

For each index j in step_indices, add a cost of the form: relative_weights(j) * (footsteps(:,j) - xgoal)' * w_goal * (footsteps(:,j) - xgoal)

Return values
 obj

Return values
 obj

Add linear constraints describing the reachable polytope (see footstepPlanner.fixedRotation())

Return values
 obj
 function addSectorTransitionConstraints ( obj , use_symbolic )

Restrict the set of sector transitions based on the reachability of Atlas.

Return values
 obj
 function addSinCosLinearEquality ( obj , use_symbolic )

Add mixed-integer linear constraints implementing the piecewise linear relationship between yaw and cos(yaw), sin(yaw) described in "Footstep Planning on Uneven Terrain with Mixed-Integer Convex Optimization" by Robin Deits and Russ Tedrake (Humanoids 2014)

Return values
 obj
 function addTerrainRegions ( obj , safe_regions , use_symbolic )

Add regions of safe terrain and mixed-integer constraints which require that each footstep lie within one of those safe regions.

Return values
 obj
 function addTrimToFinalPoses ( obj , use_symbolic )

Add a binary variable for each footstep which, if true, forces that footstep to the final pose in the footstep plan.

This allows us to trim it out of the footstep plan later. A linear objective placed on those trim variables lets us tune the number of footsteps in the plan.

Return values
 obj
 function addXYReachabilityCircles ( obj , use_symbolic )

Add quadratic constraints to restrict the relative foot displacements in X and Y.

This is the reachability method described in "Footstep Planning on Uneven Terrain with Mixed-Integer Convex Optimization" by Robin Deits and Russ Tedrake

Return values
 obj
 function addXYReachabilityEllipse ( obj , use_symbolic )

Add second-order conic constraints to restrict the reachable set of foot poses with an ellipse instead of a set of circles (as in addXYReachabilityCircles).

Return values
 obj
 function addZAndYawReachability ( obj , use_symbolic )

Add basic limits on delta z and delta yaw between footsteps.

Return values
 obj
 function fixRotation ( obj )

Fix the rotations of every step (see footstepPlanner.fixedRotation())

Return values
 obj
 function getFootstepPlan ( obj )

Solve the problem if needed and retrieve a footstep plan with the corresponding solution.

Return values
 plan

## Member Data Documentation

 Property biped
 Property max_distance
 Property nsteps
 Property pose_indices
 Property seed_plan
 Property weights

The documentation for this class was generated from the following file: