Time-indexed problem with bound, joint velocity, and general equality/inequality constraints. More...
#include <time_indexed_problem.h>
Public Member Functions | |
void | Instantiate (const TimeIndexedProblemInitializer &init) override |
Instantiates the problem from an Initializer. More... | |
bool | IsValid () override |
Evaluates whether the problem is valid, i.e., all bound and general constraints are satisfied. More... | |
TimeIndexedProblem ()=default | |
virtual | ~TimeIndexedProblem ()=default |
Public Member Functions inherited from exotica::AbstractTimeIndexedProblem | |
AbstractTimeIndexedProblem () | |
int | get_active_nonlinear_equality_constraints_dimension () const |
Returns the dimension of the active equality constraints. More... | |
int | get_active_nonlinear_inequality_constraints_dimension () const |
Returns the dimension of the active inequality constraints. More... | |
double | get_ct () const |
Returns the cost scaling factor. More... | |
int | get_joint_velocity_constraint_dimension () const |
Returns the dimension of the joint velocity constraint (linear inequality). More... | |
Eigen::MatrixXd | GetBounds () const |
Returns the joint bounds (first column lower, second column upper). More... | |
double | GetCost () const |
Returns the scalar cost for the entire trajectory (both task and transition cost). More... | |
Eigen::RowVectorXd | GetCostJacobian () const |
Returns the Jacobian of the scalar cost over the entire trajectory (Jacobian of GetCost). More... | |
double | GetDuration () const |
Returns the duration of the trajectory (T * tau). More... | |
Eigen::VectorXd | GetEquality () const |
Returns the equality constraint values for the entire trajectory. More... | |
Eigen::VectorXd | GetEquality (int t) const |
Returns the value of the equality constraints at timestep t. More... | |
Eigen::SparseMatrix< double > | GetEqualityJacobian () const |
Returns the sparse Jacobian matrix of the equality constraints over the entire trajectory. More... | |
Eigen::MatrixXd | GetEqualityJacobian (int t) const |
Returns the Jacobian of the equality constraints at timestep t. More... | |
std::vector< Eigen::Triplet< double > > | GetEqualityJacobianTriplets () const |
Returns a vector of triplets to fill a sparse Jacobian for the equality constraints. More... | |
Eigen::VectorXd | GetGoal (const std::string &task_name, int t=0) |
Returns the goal for a given task at a given timestep (cost task). More... | |
Eigen::VectorXd | GetGoalEQ (const std::string &task_name, int t=0) |
Returns the goal for a given task at a given timestep (equality task). More... | |
Eigen::VectorXd | GetGoalNEQ (const std::string &task_name, int t=0) |
Returns the goal for a given task at a given timestep (goal task). More... | |
Eigen::VectorXd | GetInequality () const |
Returns the inequality constraint values for the entire trajectory. More... | |
Eigen::VectorXd | GetInequality (int t) const |
Returns the value of the inequality constraints at timestep t. More... | |
Eigen::SparseMatrix< double > | GetInequalityJacobian () const |
Returns the sparse Jacobian matrix of the inequality constraints over the entire trajectory. More... | |
Eigen::MatrixXd | GetInequalityJacobian (int t) const |
Returns the Jacobian of the inequality constraints at timestep t. More... | |
std::vector< Eigen::Triplet< double > > | GetInequalityJacobianTriplets () const |
Returns a vector of triplets to fill a sparse Jacobian for the inequality constraints. More... | |
std::vector< Eigen::VectorXd > | GetInitialTrajectory () const |
Returns the initial trajectory/seed. More... | |
Eigen::VectorXd | GetJointVelocityConstraint () const |
Returns the joint velocity constraint inequality terms (linear). More... | |
Eigen::MatrixXd | GetJointVelocityConstraintBounds () const |
Returns the joint velocity constraint bounds (constant terms). More... | |
std::vector< Eigen::Triplet< double > > | GetJointVelocityConstraintJacobianTriplets () const |
Returns the joint velocity constraint Jacobian as triplets. More... | |
Eigen::VectorXd | GetJointVelocityLimits () const |
Returns the per-DoF joint velocity limit vector. More... | |
double | GetRho (const std::string &task_name, int t=0) |
Returns the precision (Rho) for a given task at a given timestep (cost task). More... | |
double | GetRhoEQ (const std::string &task_name, int t=0) |
Returns the precision (Rho) for a given task at a given timestep (equality task). More... | |
double | GetRhoNEQ (const std::string &task_name, int t=0) |
Returns the precision (Rho) for a given task at a given timestep (equality task). More... | |
double | GetScalarTaskCost (int t) const |
Returns the scalar task cost at timestep t. More... | |
Eigen::RowVectorXd | GetScalarTaskJacobian (int t) const |
Returns the Jacobian of the scalar task cost at timestep t. More... | |
double | GetScalarTransitionCost (int t) const |
Returns the scalar transition cost (x^T*W*x) at timestep t. More... | |
Eigen::RowVectorXd | GetScalarTransitionJacobian (int t) const |
Returns the Jacobian of the transition cost at timestep t. More... | |
int | GetT () const |
Returns the number of timesteps in the trajectory. More... | |
double | GetTau () const |
Returns the time discretization tau for the trajectory. More... | |
virtual void | PreUpdate () |
Updates internal variables before solving, e.g., after setting new values for Rho. More... | |
void | SetGoal (const std::string &task_name, Eigen::VectorXdRefConst goal, int t=0) |
Sets goal for a given task at a given timestep (cost task). More... | |
void | SetGoalEQ (const std::string &task_name, Eigen::VectorXdRefConst goal, int t=0) |
Sets goal for a given task at a given timestep (equality task). More... | |
void | SetGoalNEQ (const std::string &task_name, Eigen::VectorXdRefConst goal, int t=0) |
Sets goal for a given task at a given timestep (inequality task). More... | |
void | SetInitialTrajectory (const std::vector< Eigen::VectorXd > &q_init_in) |
Sets the initial trajectory/seed. More... | |
void | SetJointVelocityLimits (const Eigen::VectorXd &qdot_max_in) |
Sets the joint velocity limits. Supports N- and 1-dimensional vectors. More... | |
void | SetRho (const std::string &task_name, const double rho, int t=0) |
Sets Rho for a given task at a given timestep (cost task). More... | |
void | SetRhoEQ (const std::string &task_name, const double rho, int t=0) |
Sets Rho for a given task at a given timestep (equality task). More... | |
void | SetRhoNEQ (const std::string &task_name, const double rho, int t=0) |
Sets Rho for a given task at a given timestep (inequality task). More... | |
void | SetT (const int T_in) |
Sets the number of timesteps in the trajectory. Note: Rho/Goal need to be updated for every timestep after calling this method. More... | |
void | SetTau (const double tau_in) |
Sets the time discretization tau for the trajectory. More... | |
virtual void | Update (Eigen::VectorXdRefConst x_in, int t) |
Updates an individual timestep from a given state vector. More... | |
void | Update (Eigen::VectorXdRefConst x_trajectory_in) |
Updates the entire problem from a given trajectory (e.g., used in an optimization solver) More... | |
virtual | ~AbstractTimeIndexedProblem () |
Public Member Functions inherited from exotica::PlanningProblem | |
virtual Eigen::VectorXd | ApplyStartState (bool update_traj=true) |
int | get_num_controls () const |
int | get_num_positions () const |
! Dimension of planning problem. TODO: Update from positions/velocities/controls and make private. More... | |
int | get_num_velocities () const |
std::pair< std::vector< double >, std::vector< double > > | GetCostEvolution () const |
double | GetCostEvolution (int index) const |
KinematicRequestFlags | GetFlags () const |
int | GetNumberOfIterations () const |
unsigned int | GetNumberOfProblemUpdates () const |
ScenePtr | GetScene () const |
Eigen::VectorXd | GetStartState () const |
double | GetStartTime () const |
TaskMapMap & | GetTaskMaps () |
TaskMapVec & | GetTasks () |
void | InstantiateBase (const Initializer &init) override |
PlanningProblem () | |
std::string | Print (const std::string &prepend) const override |
void | ResetCostEvolution (size_t size) |
void | ResetNumberOfProblemUpdates () |
void | SetCostEvolution (int index, double value) |
void | SetStartState (Eigen::VectorXdRefConst x) |
void | SetStartTime (double t) |
virtual | ~PlanningProblem () |
Public Member Functions inherited from exotica::Object | |
std::string | GetObjectName () |
void | InstantiateObject (const Initializer &init) |
Object () | |
virtual std::string | type () const |
Type Information wrapper: must be virtual so that it is polymorphic... More... | |
virtual | ~Object () |
Public Member Functions inherited from exotica::InstantiableBase | |
virtual std::vector< Initializer > | GetAllTemplates () const =0 |
InstantiableBase ()=default | |
virtual | ~InstantiableBase ()=default |
Public Member Functions inherited from exotica::Instantiable< TimeIndexedProblemInitializer > | |
std::vector< Initializer > | GetAllTemplates () const override |
Initializer | GetInitializerTemplate () override |
const TimeIndexedProblemInitializer & | GetParameters () const |
void | InstantiateInternal (const Initializer &init) override |
Additional Inherited Members | |
Public Attributes inherited from exotica::AbstractTimeIndexedProblem | |
TimeIndexedTask | cost |
Cost task. More... | |
TimeIndexedTask | equality |
General equality task. More... | |
std::vector< Hessian > | hessian |
TimeIndexedTask | inequality |
General inequality task. More... | |
std::vector< Eigen::MatrixXd > | jacobian |
int | length_jacobian |
int | length_Phi |
int | num_tasks |
std::vector< TaskSpaceVector > | Phi |
bool | use_bounds |
Eigen::MatrixXd | W |
Public Attributes inherited from exotica::PlanningProblem | |
int | N = 0 |
TerminationCriterion | termination_criterion |
Public Attributes inherited from exotica::Object | |
bool | debug_ |
std::string | ns_ |
std::string | object_name_ |
Protected Member Functions inherited from exotica::AbstractTimeIndexedProblem | |
virtual void | ReinitializeVariables () |
void | ValidateTimeIndex (int &t_in) const |
Checks the desired time index for bounds and supports -1 indexing. More... | |
Protected Member Functions inherited from exotica::PlanningProblem | |
void | UpdateMultipleTaskKinematics (std::vector< std::shared_ptr< KinematicResponse >> responses) |
void | UpdateTaskKinematics (std::shared_ptr< KinematicResponse > response) |
Protected Attributes inherited from exotica::AbstractTimeIndexedProblem | |
std::vector< std::pair< int, int > > | active_nonlinear_equality_constraints_ |
int | active_nonlinear_equality_constraints_dimension_ = 0 |
std::vector< std::pair< int, int > > | active_nonlinear_inequality_constraints_ |
int | active_nonlinear_inequality_constraints_dimension_ = 0 |
TaskSpaceVector | cost_Phi |
double | ct |
Normalisation of scalar cost and Jacobian over trajectory length. More... | |
TaskSpaceVector | equality_Phi |
TaskSpaceVector | inequality_Phi |
std::vector< Eigen::VectorXd > | initial_trajectory_ |
int | joint_velocity_constraint_dimension_ = 0 |
std::vector< Eigen::Triplet< double > > | joint_velocity_constraint_jacobian_triplets_ |
std::vector< std::shared_ptr< KinematicResponse > > | kinematic_solutions_ |
Eigen::VectorXd | q_dot_max_ |
Joint velocity limit (rad/s) More... | |
int | T_ = 0 |
Number of time steps. More... | |
double | tau_ = 0 |
Time step duration. More... | |
double | w_scale_ = 1.0 |
Kinematic system transition error covariance multiplier (constant throughout the trajectory) More... | |
std::vector< Eigen::VectorXd > | x |
Current internal problem state. More... | |
std::vector< Eigen::VectorXd > | xdiff |
Eigen::VectorXd | xdiff_max_ |
Maximum change in the variables in a single timestep tau_. Gets set/updated via SetJointVelocityLimits or ReinitializeVariables. More... | |
Protected Attributes inherited from exotica::PlanningProblem | |
std::vector< std::pair< std::chrono::high_resolution_clock::time_point, double > > | cost_evolution_ |
KinematicRequestFlags | flags_ = KinematicRequestFlags::KIN_FK |
unsigned int | number_of_problem_updates_ {0} |
ScenePtr | scene_ |
Eigen::VectorXd | start_state_ |
double | t_start {0.0} |
TaskMapMap | task_maps_ |
TaskMapVec | tasks_ |
Protected Attributes inherited from exotica::Instantiable< TimeIndexedProblemInitializer > | |
TimeIndexedProblemInitializer | parameters_ |
Time-indexed problem with bound, joint velocity, and general equality/inequality constraints.
Definition at line 39 of file time_indexed_problem.h.
|
default |
|
virtualdefault |
|
overridevirtual |
Instantiates the problem from an Initializer.
Reimplemented from exotica::Instantiable< TimeIndexedProblemInitializer >.
Definition at line 37 of file time_indexed_problem.cpp.
|
overridevirtual |
Evaluates whether the problem is valid, i.e., all bound and general constraints are satisfied.
Reimplemented from exotica::PlanningProblem.
Definition at line 87 of file time_indexed_problem.cpp.