Drake
 All Classes Files Functions Variables
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...
 
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) More...
 
function addOuterUnitCircleCone (obj, use_symbolic)
 Add a convex conic constraint that sin^2 + cos^2 <= 1. More...
 
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. More...
 
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. More...
 
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) More...
 
function addInitialSinCosConstraints (obj)
 Constrain the values of sin and cos for the current poses of the feet. More...
 
function addSectorTransitionConstraints (obj, use_symbolic)
 Restrict the set of sector transitions based on the reachability of Atlas. More...
 
function addZAndYawReachability (obj, use_symbolic)
 Add basic limits on delta z and delta yaw between footsteps. More...
 
function addXYReachabilityCircles (obj, use_symbolic)
 Add quadratic constraints to restrict the relative foot displacements in X and Y. More...
 
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). More...
 
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. More...
 
function addQuadraticRelativeObjective (obj, use_symbolic)
 Add a quadratic cost on the relative displacement between footsteps. More...
 
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. More...
 
function fixRotation (obj)
 Fix the rotations of every step (see footstepPlanner.fixedRotation()) More...
 
function addReachabilityLinearConstraints (obj)
 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 addVariableIfNotPresent (obj, varargin)
 
function addLinearConstraints (obj, A, b, Aeq, beq)
 
function addCones (obj, cones)
 
function addConesByIndex (obj, idx)
 
function addPolyCones (obj, polycones)
 Add polygonal approximations of second-order cones. More...
 
function addPolyConesByIndex (obj, idx, N)
 Polycones only support approximations of cones with two variables on the left-hand side and one on the right-hand side. More...
 
function addConesOrPolyConesByIndex (obj, idx, N)
 
function addQuadcon (obj, quadcon)
 
function setLinearCost (obj, c)
 
function setLinearCostEntries (obj, idx, val)
 
function addCost (obj, Q, c, objcon)
 
function addSymbolicConstraints (obj, expr)
 
function addSymbolicCost (obj, expr)
 
function addSymbolicObjective (obj, expr)
 
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
 
Property quadcon
 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
 

Additional Inherited Members

- 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

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

For more info on the symbolic vars, see MixedIntegerConvexProgram

Parameters
bipeda Biped.
seed_plana blank footstep plan, provinding the structure of the desired plan. Probably generated with FootstepPlan.blank_plan()
has_symbolicwhether to keep symbolic variables
Return values
obj

Member Function Documentation

function addInitialSinCosConstraints ( obj  )

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
function addQuadraticRelativeObjective ( obj  ,
use_symbolic   
)

Add a quadratic cost on the relative displacement between footsteps.

Return values
obj
function addReachabilityLinearConstraints ( 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: