Drake
drake::systems::controllers Namespace Reference

Namespaces

 plan_eval
 
 qp_inverse_dynamics
 

Classes

class  CartesianSetpoint
 This is used to compute target spatial acceleration, which is the input to the inverse dynamics controller. More...
 
class  InverseDynamics
 Solves inverse dynamics with no consideration for external wrenches, under actuation, joint torque limits or closed kinematic chains. More...
 
class  InverseDynamicsController
 A state feedback controller that uses a PidController to generate desired accelerations, which are then converted into torques using InverseDynamics. More...
 
class  LinearModelPredictiveController
 Implements a basic Model Predictive Controller that linearizes the system about an equilibrium condition and regulates to the same point by solving an optimal control problem over a finite time horizon. More...
 
struct  LinearQuadraticRegulatorResult
 
class  PidControlledSystem
 A system that encapsulates a PidController and a controlled System (a.k.a the "plant"). More...
 
class  PidController
 Implements the PID controller. More...
 
class  StateFeedbackControllerInterface
 Interface for state feedback controllers. More...
 
class  VectorSetpoint
 
class  ZMPPlanner
 Given a desired two dimensional (X and Y) zero-moment point (ZMP) trajectory parametrized as a piecewise polynomial, an optimal center of mass (CoM) trajectory is planned using a linear inverted pendulum model (LIPM). More...
 
struct  ZMPTestTraj
 A structure for storing trajectories from simulating a linear inverted pendulum model (LIPM) using the policy from a ZMPPlanner. More...
 

Functions

LinearQuadraticRegulatorResult LinearQuadraticRegulator (const Eigen::Ref< const Eigen::MatrixXd > &A, const Eigen::Ref< const Eigen::MatrixXd > &B, const Eigen::Ref< const Eigen::MatrixXd > &Q, const Eigen::Ref< const Eigen::MatrixXd > &R, const Eigen::Ref< const Eigen::MatrixXd > &N=Eigen::Matrix< double, 0, 0 >::Zero())
 Computes the optimal feedback controller, u=-Kx. More...
 
std::unique_ptr< systems::LinearSystem< double > > LinearQuadraticRegulator (const LinearSystem< double > &system, const Eigen::Ref< const Eigen::MatrixXd > &Q, const Eigen::Ref< const Eigen::MatrixXd > &R, const Eigen::Ref< const Eigen::MatrixXd > &N=Eigen::Matrix< double, 0, 0 >::Zero())
 Creates a system that implements the optimal time-invariant linear quadratic regulator (LQR): More...
 
std::unique_ptr< systems::AffineSystem< double > > LinearQuadraticRegulator (const System< double > &system, const Context< double > &context, const Eigen::Ref< const Eigen::MatrixXd > &Q, const Eigen::Ref< const Eigen::MatrixXd > &R, const Eigen::Ref< const Eigen::MatrixXd > &N=Eigen::Matrix< double, 0, 0 >::Zero())
 Linearizes the System around the specified Context, computes the optimal time-invariant linear quadratic regulator (LQR), and returns a System which implements that regulator in the original System's coordinates. More...
 
template<typename Scalar >
std::ostream & operator<< (std::ostream &out, const CartesianSetpoint< Scalar > &setpoint)
 
template<typename Scalar >
std::ostream & operator<< (std::ostream &out, const VectorSetpoint< Scalar > &setpoint)
 
 GTEST_TEST (testQPInverseDynamicsController, testPoseSetpoint)
 
ZMPTestTraj SimulateZMPPolicy (const ZMPPlanner &zmp_planner, const Eigen::Vector4d &x0, double dt, double extra_time_at_the_end)
 Forward simulation using the linear policy from zmp_planner starting from the initial condition x0 using explicit Euler integration. More...
 
std::vector< PiecewisePolynomial< double > > GenerateDesiredZMPTrajs (const std::vector< Eigen::Vector2d > &footsteps, double double_support_duration, double single_support_duration)
 Generates desired ZMP trajectories as piecewise polynomials given the desired footsteps. More...
 

Function Documentation

std::vector< PiecewisePolynomial< double > > GenerateDesiredZMPTrajs ( const std::vector< Eigen::Vector2d > &  footsteps,
double  double_support_duration,
double  single_support_duration 
)

Generates desired ZMP trajectories as piecewise polynomials given the desired footsteps.

The knot points are generated as follows:

T: 0, knots: fs[0]
T: ss, knots: fs[0]
T: ss + ds, knots: fs[1]
T: 2 * ss + ds, knots: fs[1]
T: 2 * ss + 2 * ds, knots: fs[2]
T: 3 * ss + 2 * ds, knots: fs[2]
 ...

ss stands for single_support_duration, and ds for double_support_duration.

Parameters
footsteps,XY pair
double_support_duration,Durationfor double support.
single_support_duration,Durationfor single support.
Returns
Three trajectories: 0 is zero-order-hold, 1 is linear, 2 is cubic.
drake::systems::controllers::GTEST_TEST ( testQPInverseDynamicsController  ,
testPoseSetpoint   
)

Here is the call graph for this function:

std::ostream& drake::systems::controllers::operator<< ( std::ostream &  out,
const CartesianSetpoint< Scalar > &  setpoint 
)
inline

Here is the call graph for this function:

std::ostream& drake::systems::controllers::operator<< ( std::ostream &  out,
const VectorSetpoint< Scalar > &  setpoint 
)

Here is the call graph for this function:

ZMPTestTraj SimulateZMPPolicy ( const ZMPPlanner zmp_planner,
const Eigen::Vector4d &  x0,
double  dt,
double  extra_time_at_the_end 
)

Forward simulation using the linear policy from zmp_planner starting from the initial condition x0 using explicit Euler integration.

Parameters
zmp_planner,Containsplanned center of mass trajectory, value function, and linear policy.
x0,Initialcondition.
dt,Timestep.
extra_time_at_the_end,Simulateextra_time_at_the_end seconds past the end of the trajectories for convergence.
Returns
ZMPTestTraj that contains all the information.

Here is the call graph for this function: