robotoc
robotoc - efficient ROBOT Optimal Control solvers
Loading...
Searching...
No Matches
impact_wrench_cone.hpp
Go to the documentation of this file.
1#ifndef ROBOTOC_IMPACT_WRENCH_CONE_HPP_
2#define ROBOTOC_IMPACT_WRENCH_CONE_HPP_
3
4#include "Eigen/Core"
5
14
15
16namespace robotoc {
17
23public:
30 ImpactWrenchCone(const Robot& robot, const double X, const double Y);
31
36
41
46
51
55 ImpactWrenchCone(ImpactWrenchCone&&) noexcept = default;
56
60 ImpactWrenchCone& operator=(ImpactWrenchCone&&) noexcept = default;
61
66 void setRectangular(const double X, const double Y);
67
69
70 void allocateExtraData(ConstraintComponentData& data) const override;
71
72 bool isFeasible(Robot& robot, const ImpactStatus& impact_status,
74 const SplitSolution& s) const override;
75
76 void setSlack(Robot& robot, const ImpactStatus& impact_status,
78 const SplitSolution& s) const override;
79
80 void evalConstraint(Robot& robot, const ImpactStatus& impact_status,
82 const SplitSolution& s) const override;
83
84 void evalDerivatives(Robot& robot, const ImpactStatus& impact_status,
86 const SplitSolution& s,
87 SplitKKTResidual& kkt_residual) const override;
88
89 void condenseSlackAndDual(const ImpactStatus& impact_status,
91 SplitKKTMatrix& kkt_matrix,
92 SplitKKTResidual& kkt_residual) const override;
93
94 void expandSlackAndDual(const ImpactStatus& impact_status,
96 const SplitDirection& d) const override;
97
98 int dimc() const override;
99
100 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
101
102private:
103 int dimv_, dimc_, max_num_contacts_;
104 std::vector<int> contact_frame_;
105 std::vector<ContactType> contact_types_;
106 double X_, Y_;
107
108 void computeCone(const double mu, Eigen::MatrixXd& cone) const;
109 void updateCone(const double mu, Eigen::MatrixXd& cone) const;
110
111};
112
113} // namespace robotoc
114
115#endif // ROBOTOC_IMPACT_WRENCH_CONE_HPP_
Data used in constraint components. Composed by slack, dual (Lagrange multiplier),...
Definition: constraint_component_data.hpp:17
Base class for impact constraint components.
Definition: impact_constraint_component_base.hpp:24
Impact status of robot model. Wrapper of ContactStatus to treat impacts.
Definition: impact_status.hpp:21
Constraint on the wrench firction cone for surface contacts.
Definition: impact_wrench_cone.hpp:22
bool isFeasible(Robot &robot, const ImpactStatus &impact_status, ConstraintComponentData &data, const SplitSolution &s) const override
Checks whether the current solution s is feasible or not.
void allocateExtraData(ConstraintComponentData &data) const override
Allocates extra data in ConstraintComponentData.
ImpactWrenchCone(const Robot &robot, const double X, const double Y)
Constructor.
void expandSlackAndDual(const ImpactStatus &impact_status, ConstraintComponentData &data, const SplitDirection &d) const override
Expands the slack and dual, i.e., computes the directions of the slack and dual variables from the di...
void condenseSlackAndDual(const ImpactStatus &impact_status, ConstraintComponentData &data, SplitKKTMatrix &kkt_matrix, SplitKKTResidual &kkt_residual) const override
Condenses the slack and dual variables, i.e., factorizes the condensed Hessians and KKT residuals....
ImpactWrenchCone(ImpactWrenchCone &&) noexcept=default
Default move constructor.
ImpactWrenchCone & operator=(const ImpactWrenchCone &)=default
Default copy operator.
~ImpactWrenchCone()
Destructor.
ImpactWrenchCone()
Default constructor.
ImpactWrenchCone(const ImpactWrenchCone &)=default
Default copy constructor.
KinematicsLevel kinematicsLevel() const override
Checks the kinematics level of the constraint component.
int dimc() const override
Returns the size of the constraint.
void evalDerivatives(Robot &robot, const ImpactStatus &impact_status, ConstraintComponentData &data, const SplitSolution &s, SplitKKTResidual &kkt_residual) const override
Computes the derivatives of the priaml residual, i.e., the Jacobian of the inequality constraint,...
void setSlack(Robot &robot, const ImpactStatus &impact_status, ConstraintComponentData &data, const SplitSolution &s) const override
Sets the slack variables of each constraint components.
void setRectangular(const double X, const double Y)
void evalConstraint(Robot &robot, const ImpactStatus &impact_status, ConstraintComponentData &data, const SplitSolution &s) const override
Computes the primal residual, residual in the complementary slackness, and the log-barrier function o...
Dynamics and kinematics model of robots. Wraps pinocchio::Model and pinocchio::Data....
Definition: robot.hpp:32
Newton direction of the solution to the optimal control problem split into a time stage.
Definition: split_direction.hpp:20
The KKT matrix split into a time stage.
Definition: split_kkt_matrix.hpp:18
KKT residual split into each time stage.
Definition: split_kkt_residual.hpp:18
Solution to the optimal control problem split into a time stage.
Definition: split_solution.hpp:20
Definition: constraint_component_base.hpp:17
ContactType
Types of contacts.
Definition: contact_status.hpp:22
KinematicsLevel
Kinematics level of the constraint component used in ConstraintComponentBase.
Definition: constraint_component_base.hpp:24