22 { positive_lambda_constraint_.addToSolver(this->robots().mbs(), solver_); }
25 { positive_lambda_constraint_.addToSolver(robots().mbs(), solver_); }
35 void addTask(
tasks::qp::Task * task);
38 inline
void addTask(
std::shared_ptr<
tasks::qp::Task> task)
43 shPtrTasksStorage.emplace_back(task);
60 template<
typename... Fun>
64 solver_.updateConstrSize();
65 solver_.updateNrVars(robots().mbs());
71 template<
typename... Fun>
75 solver_.updateConstrSize();
76 solver_.updateNrVars(robots().mbs());
150 double solveAndBuildTime() final;
152 const
Eigen::VectorXd & result() const;
158 tasks::qp::PositiveLambda positive_lambda_constraint_;
160 std::vector<
tasks::qp::UnilateralContact> uniContacts_;
162 std::vector<
tasks::qp::BilateralContact> biContacts_;
166 bool runJointsFeedback(
bool wVelocity);
187 bool runClosedLoop(
bool integrateControlState);
190 std::vector<
std::vector<
double>> prev_encoders_{};
191 std::vector<std::vector<double>> encoders_alpha_{};
192 std::vector<std::vector<std::vector<double>>> control_q_{};
193 std::vector<std::vector<std::vector<double>>> control_alpha_{};
196 std::vector<mc_solver::DynamicsConstraint *> dynamicsConstraints_;
198 bool run_impl(FeedbackType fType = FeedbackType::None)
final;
void removeFromSolver(QPSolver &sol)
void addToSolver(QPSolver &sol)
#define MC_SOLVER_DLLAPI
Definition: api.h:50
std::shared_ptr< Robots > RobotsPtr
Definition: fwd.h:17
TasksQPSolver & tasks_solver(QPSolver &solver) noexcept
Definition: TasksQPSolver.h:211
This class is a basis to wrap Constraint functions from Tasks. The aim of such wrappers should be two...
Definition: ConstraintSet.h:21
Definition: DynamicsConstraint.h:21
Definition: QPSolver.h:104
Definition: QPSolver.h:88
void removeTask(mc_tasks::MetaTask *task)
Backend
Definition: QPSolver.h:93
Definition: TasksQPSolver.h:20
tasks::qp::QPSolver & solver() noexcept
Definition: TasksQPSolver.h:119
static const TasksQPSolver & from_solver(const QPSolver &solver) noexcept
Definition: TasksQPSolver.h:142
const tasks::qp::QPSolver & solver() const noexcept
Definition: TasksQPSolver.h:122
~TasksQPSolver() final=default
const sva::ForceVecd desiredContactForce(const mc_rbdyn::Contact &id) const final
tasks::qp::SolverData & data() noexcept
Definition: TasksQPSolver.h:113
std::pair< int, const tasks::qp::BilateralContact & > contactById(const tasks::qp::ContactId &id) const
TasksQPSolver(mc_rbdyn::RobotsPtr robots, double timeStep)
Definition: TasksQPSolver.h:21
void updateNrVars(const mc_rbdyn::Robots &robots)
const tasks::qp::SolverData & data() const noexcept
Definition: TasksQPSolver.h:116
void removeConstraint(tasks::qp::ConstraintFunction< Fun... > *constraint)
Definition: TasksQPSolver.h:72
void removeTask(tasks::qp::Task *task)
static TasksQPSolver & from_solver(QPSolver &solver) noexcept
Definition: TasksQPSolver.h:130
void addConstraint(tasks::qp::ConstraintFunction< Fun... > *constraint)
Definition: TasksQPSolver.h:61
Eigen::VectorXd lambdaVec(int cIndex) const
void setContacts(ControllerToken, const std::vector< mc_rbdyn::Contact > &contacts) final
TasksQPSolver(double timeStep)
Definition: TasksQPSolver.h:24