Drake
Drake C++ Documentation
DirectCollocationConstraint Class Reference

Detailed Description

Implements the direct collocation constraints for a first-order hold on the input and a cubic polynomial representation of the state trajectories.

Note that the DirectCollocation implementation allocates only ONE of these constraints, but binds that constraint multiple times (with different decision variables, along the trajectory).

#include <drake/planning/trajectory_optimization/direct_collocation.h>

Public Member Functions

 DirectCollocationConstraint (const systems::System< double > &system, const systems::Context< double > &context, std::variant< systems::InputPortSelection, systems::InputPortIndex > input_port_index=systems::InputPortSelection::kUseFirstInputIfItExists, bool assume_non_continuous_states_are_fixed=false)
 
 DirectCollocationConstraint (const systems::System< AutoDiffXd > &system, systems::Context< AutoDiffXd > *context_sample, systems::Context< AutoDiffXd > *context_next_sample, systems::Context< AutoDiffXd > *context_collocation, std::variant< systems::InputPortSelection, systems::InputPortIndex > input_port_index=systems::InputPortSelection::kUseFirstInputIfItExists, bool assume_non_continuous_states_are_fixed=false)
 Constructor which supports passing different mutable contexts for the different evaluation times. More...
 
 ~DirectCollocationConstraint () override=default
 
int num_states () const
 
int num_inputs () const
 
Does not allow copy, move, or assignment
 DirectCollocationConstraint (const DirectCollocationConstraint &)=delete
 
DirectCollocationConstraintoperator= (const DirectCollocationConstraint &)=delete
 
 DirectCollocationConstraint (DirectCollocationConstraint &&)=delete
 
DirectCollocationConstraintoperator= (DirectCollocationConstraint &&)=delete
 
- Public Member Functions inherited from Constraint
template<typename DerivedLB , typename DerivedUB >
 Constraint (int num_constraints, int num_vars, const Eigen::MatrixBase< DerivedLB > &lb, const Eigen::MatrixBase< DerivedUB > &ub, const std::string &description="")
 Constructs a constraint which has num_constraints rows, with an input num_vars x 1 vector. More...
 
 Constraint (int num_constraints, int num_vars)
 Constructs a constraint which has num_constraints rows, with an input num_vars x 1 vector, with no bounds. More...
 
bool CheckSatisfied (const Eigen::Ref< const Eigen::VectorXd > &x, double tol=1E-6) const
 Return whether this constraint is satisfied by the given value, x. More...
 
bool CheckSatisfied (const Eigen::Ref< const AutoDiffVecXd > &x, double tol=1E-6) const
 
symbolic::Formula CheckSatisfied (const Eigen::Ref< const VectorX< symbolic::Variable >> &x) const
 
const Eigen::VectorXd & lower_bound () const
 
const Eigen::VectorXd & upper_bound () const
 
int num_constraints () const
 Number of rows in the output constraint. More...
 
 Constraint (const Constraint &)=delete
 
Constraintoperator= (const Constraint &)=delete
 
 Constraint (Constraint &&)=delete
 
Constraintoperator= (Constraint &&)=delete
 
- Public Member Functions inherited from EvaluatorBase
virtual ~EvaluatorBase ()
 
void Eval (const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::VectorXd *y) const
 Evaluates the expression. More...
 
void Eval (const Eigen::Ref< const AutoDiffVecXd > &x, AutoDiffVecXd *y) const
 Evaluates the expression. More...
 
void Eval (const Eigen::Ref< const VectorX< symbolic::Variable >> &x, VectorX< symbolic::Expression > *y) const
 Evaluates the expression. More...
 
void set_description (const std::string &description)
 Set a human-friendly description for the evaluator. More...
 
const std::string & get_description () const
 Getter for a human-friendly description for the evaluator. More...
 
std::ostream & Display (std::ostream &os, const VectorX< symbolic::Variable > &vars) const
 Formats this evaluator into the given stream using vars for the bound decision variable names. More...
 
std::ostream & Display (std::ostream &os) const
 Formats this evaluator into the given stream, without displaying the decision variables it is bound to. More...
 
std::string ToLatex (const VectorX< symbolic::Variable > &vars, int precision=3) const
 Returns a LaTeX string describing this evaluator. More...
 
int num_vars () const
 Getter for the number of variables, namely the number of rows in x, as used in Eval(x, y). More...
 
int num_outputs () const
 Getter for the number of outputs, namely the number of rows in y, as used in Eval(x, y). More...
 
void SetGradientSparsityPattern (const std::vector< std::pair< int, int >> &gradient_sparsity_pattern)
 Set the sparsity pattern of the gradient matrix ∂y/∂x (the gradient of y value in Eval, w.r.t x in Eval) . More...
 
const std::optional< std::vector< std::pair< int, int > > > & gradient_sparsity_pattern () const
 Returns the vector of (row_index, col_index) that contains all the entries in the gradient of Eval function (∂y/∂x) whose value could be non-zero, namely if ∂yᵢ/∂xⱼ could be non-zero, then the pair (i, j) is in gradient_sparsity_pattern. More...
 
bool is_thread_safe () const
 Returns whether it is safe to call Eval in parallel. More...
 
 EvaluatorBase (const EvaluatorBase &)=delete
 
EvaluatorBaseoperator= (const EvaluatorBase &)=delete
 
 EvaluatorBase (EvaluatorBase &&)=delete
 
EvaluatorBaseoperator= (EvaluatorBase &&)=delete
 

Protected Member Functions

 DirectCollocationConstraint (std::pair< std::unique_ptr< systems::System< AutoDiffXd >>, std::unique_ptr< systems::Context< AutoDiffXd >>> owned_pair, const systems::System< AutoDiffXd > *system, systems::Context< AutoDiffXd > *context_sample, systems::Context< AutoDiffXd > *context_next_sample, systems::Context< AutoDiffXd > *context_collocation, int num_states, int num_inputs, std::variant< systems::InputPortSelection, systems::InputPortIndex > input_port_index, bool assume_non_continuous_states_are_fixed)
 
void DoEval (const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::VectorXd *y) const override
 Implements expression evaluation for scalar type double. More...
 
void DoEval (const Eigen::Ref< const AutoDiffVecXd > &x, AutoDiffVecXd *y) const override
 Implements expression evaluation for scalar type AutoDiffXd. More...
 
void DoEval (const Eigen::Ref< const VectorX< symbolic::Variable >> &x, VectorX< symbolic::Expression > *y) const override
 Implements expression evaluation for scalar type symbolic::Expression. More...
 
- Protected Member Functions inherited from Constraint
void UpdateLowerBound (const Eigen::Ref< const Eigen::VectorXd > &new_lb)
 Updates the lower bound. More...
 
void UpdateUpperBound (const Eigen::Ref< const Eigen::VectorXd > &new_ub)
 Updates the upper bound. More...
 
void set_bounds (const Eigen::Ref< const Eigen::VectorXd > &new_lb, const Eigen::Ref< const Eigen::VectorXd > &new_ub)
 Set the upper and lower bounds of the constraint. More...
 
virtual bool DoCheckSatisfied (const Eigen::Ref< const Eigen::VectorXd > &x, const double tol) const
 
virtual bool DoCheckSatisfied (const Eigen::Ref< const AutoDiffVecXd > &x, const double tol) const
 
virtual symbolic::Formula DoCheckSatisfied (const Eigen::Ref< const VectorX< symbolic::Variable >> &x) const
 
- Protected Member Functions inherited from EvaluatorBase
 EvaluatorBase (int num_outputs, int num_vars, const std::string &description="")
 Constructs a evaluator. More...
 
virtual std::ostream & DoDisplay (std::ostream &os, const VectorX< symbolic::Variable > &vars) const
 NVI implementation of Display. More...
 
virtual std::string DoToLatex (const VectorX< symbolic::Variable > &vars, int precision) const
 
void set_num_outputs (int num_outputs)
 
void set_is_thread_safe (bool is_thread_safe)
 

Constructor & Destructor Documentation

◆ DirectCollocationConstraint() [1/5]

◆ DirectCollocationConstraint() [2/5]

◆ DirectCollocationConstraint() [3/5]

DirectCollocationConstraint ( const systems::System< double > &  system,
const systems::Context< double > &  context,
std::variant< systems::InputPortSelection, systems::InputPortIndex input_port_index = systems::InputPortSelection::kUseFirstInputIfItExists,
bool  assume_non_continuous_states_are_fixed = false 
)
See also
DirectCollocation constructor for a description of the parameters.
Exceptions
std::exceptionif system is not supported by this direct collocation method.

◆ DirectCollocationConstraint() [4/5]

DirectCollocationConstraint ( const systems::System< AutoDiffXd > &  system,
systems::Context< AutoDiffXd > *  context_sample,
systems::Context< AutoDiffXd > *  context_next_sample,
systems::Context< AutoDiffXd > *  context_collocation,
std::variant< systems::InputPortSelection, systems::InputPortIndex input_port_index = systems::InputPortSelection::kUseFirstInputIfItExists,
bool  assume_non_continuous_states_are_fixed = false 
)

Constructor which supports passing different mutable contexts for the different evaluation times.

This can be used to facilitate caching (for instance, if the context_segment_start of one constraint uses the context_segment_end of the previous constraint).

See also
DirectCollocation constructor for a description of the remaining parameters.
Exceptions
std::exceptionif system is not supported by this direct collocation method.

◆ ~DirectCollocationConstraint()

~DirectCollocationConstraint ( )
overridedefault

◆ DirectCollocationConstraint() [5/5]

DirectCollocationConstraint ( std::pair< std::unique_ptr< systems::System< AutoDiffXd >>, std::unique_ptr< systems::Context< AutoDiffXd >>>  owned_pair,
const systems::System< AutoDiffXd > *  system,
systems::Context< AutoDiffXd > *  context_sample,
systems::Context< AutoDiffXd > *  context_next_sample,
systems::Context< AutoDiffXd > *  context_collocation,
int  num_states,
int  num_inputs,
std::variant< systems::InputPortSelection, systems::InputPortIndex input_port_index,
bool  assume_non_continuous_states_are_fixed 
)
protected

Member Function Documentation

◆ DoEval() [1/3]

void DoEval ( const Eigen::Ref< const Eigen::VectorXd > &  x,
Eigen::VectorXd *  y 
) const
overrideprotectedvirtual

Implements expression evaluation for scalar type double.

Parameters
xInput vector.
yOutput vector.
Precondition
x must be of size num_vars x 1.
Postcondition
y will be of size num_outputs x 1.

Implements EvaluatorBase.

◆ DoEval() [2/3]

void DoEval ( const Eigen::Ref< const AutoDiffVecXd > &  x,
AutoDiffVecXd y 
) const
overrideprotectedvirtual

Implements expression evaluation for scalar type AutoDiffXd.

Parameters
xInput vector.
yOutput vector.
Precondition
x must be of size num_vars x 1.
Postcondition
y will be of size num_outputs x 1.

Implements EvaluatorBase.

◆ DoEval() [3/3]

void DoEval ( const Eigen::Ref< const VectorX< symbolic::Variable >> &  x,
VectorX< symbolic::Expression > *  y 
) const
overrideprotectedvirtual

Implements expression evaluation for scalar type symbolic::Expression.

Parameters
[in]xInput vector.
[out]yOutput vector.
Precondition
x must be of size num_vars x 1.
Postcondition
y will be of size num_outputs x 1.

Implements EvaluatorBase.

◆ num_inputs()

int num_inputs ( ) const

◆ num_states()

int num_states ( ) const

◆ operator=() [1/2]

◆ operator=() [2/2]


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