|function ||LeggedRobotPlanningProblem (robot, options)|
|function ||addSupport (obj, body_id, pts, tspan, constraints)|
| ||obj = addSupport(obj,body_id,pts,tspan,constraints) adds an element to the support_struct for this problem. More...|
|function ||addConstraint (obj, constraint, tspan)|
| ||obj = addConstraint(obj,constraint,tspan) adds an element to the constraint_struct for this problem. More...|
|function ||addRigidBodyConstraint (obj, constraint)|
| ||obj = addRigidBodyConstraint(obj,constraint) adds an element to the constraint_struct of this problem where the active time of the constraint is taken from the tspan property of the RigidBodyConstraintObject constraint. More...|
|function ||addSupportOnFlatGround (obj, body_id, pts, tspan)|
| ||obj = addSupportOnFlatGround(obj,body_id,pts,tspan) adds an element to the support_struct of this problem for which the points on(in) the specified body(frame) are in static contact with flat ground at z = 0. More...|
|function ||generateComDynamicsFullKinematicsPlanner (obj, N, durations, q_nom_traj, q0, Q_comddot, Qv, Q_contact_force, options)|
| ||prog = generateComDynamicsFullKinematicsPlanner(obj,N,durations,q_nom_traj,q0,Q_comddot, Qv, % Q_contact_force,options) returns a ComDynamicsFullKinematicsPlanner object corresponding to this problem. More...|
|function ||generateQuasiStaticPlanner (obj, N, durations, q_nom_traj, q0, varargin)|
| ||prog = generateQuasiStaticPlanner(obj,N,durations,q_nom_traj,q0,varargin) returns a KinematicDirtran object corresponding to this problem with quasi-static motion constraints (COM must remain above the convex hull of the active support points at all times). More...|
Factory class for motion planning problems involving robots that implement the 'LeggedRobot' interface.
Allows us to represent problems in a way that's not tied to a specific solution method. This is still a work in progress - at present it supports quasi-static planning with the 'KinematicDirtran' class and dynamic planning with the 'ComDynamicsFullKinematicsPlanner'.
The bulk of the problem is represented by two structures
- constraint_struct - Constraint objects, each with an associated tspan indicating the portion of the plan (between 0 and 1) for which the constraint is active.
- support_struct - Points on the robot which can provide support and an associated tspan indicating the portion of the plan (between 0 and 1) for which those points support the robot. These are stored stored separately fron the rest of the constraints to allow for the generation of planners that treat contacts differently (e.g. quasi-static planning vs. dynamic planning) from the same problem specification. These properties are set via the addSupport and addConstraint methods.
There are also several publicly set-able properties that affect the planning problem:
- mu - Coefficient of friction for all support contacts
- min_distance - Minimum allowable difference between collision geometries that are eligible for collision. See RigidBodyManipulator/collisionDetect for more details on which collision geometries are eligible to collide with each other.
- quasistatic_shrink_factor - Shrink factor to be used in all QuasiStaticConstraint objects contained in generated planners.
- n_interp_points - Number of intermediate points between knots at which collision avoidance constraints should be evaluated.
- excluded_collision_groups - Structure array with two fields
- name: String containing the name of the collision geometry group to be ignored
- tspan: Portion of the plan between 0 and 1 for which the group should be ignored
- fixed_inital_state - If 'true', then the intial state will be fixed to a value specified at the time the planner is generated.
- start_from_rest - If 'true', then the robot will have zero velocity in all coordinates at the beginning of the plan.
- end_at_rest - If 'true', then the robot will have zero velocity in all coordinates at the end of the plan.
- Q - Weighting matrix used in planners that impose a quadratic cost on deviation from a nominal position trajectory
- v_max - Upper bound on the velocities at all times. We currently assume that the velocity limits are symmetric.