mc_rtc  2.16.0
BoundedSpeedConstr.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2022 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
8 
9 #include <mc_rtc/void_ptr.h>
10 
11 namespace mc_solver
12 {
13 
19 {
20 public:
21  BoundedSpeedConstr(const mc_rbdyn::Robots & robots, unsigned int robotIndex, double dt);
22 
23  void addToSolverImpl(QPSolver & solver) override;
24 
25  void removeFromSolverImpl(QPSolver & solver) override;
26 
39  inline void addBoundedSpeed(QPSolver & solver,
40  const std::string & bodyName,
41  const Eigen::Vector3d & bodyPoint,
42  const Eigen::MatrixXd & dof,
43  const Eigen::VectorXd & speed)
44  { addBoundedSpeed(solver, bodyName, bodyPoint, dof, speed, speed); }
45 
60  void addBoundedSpeed(QPSolver & solver,
61  const std::string & bodyName,
62  const Eigen::Vector3d & bodyPoint,
63  const Eigen::MatrixXd & dof,
64  const Eigen::VectorXd & lowerSpeed,
65  const Eigen::VectorXd & upperSpeed);
66 
77  inline void addBoundedSpeed(QPSolver & solver,
78  const mc_rbdyn::RobotFrame & frame,
79  const Eigen::MatrixXd & dof,
80  const Eigen::VectorXd & speed)
81  { addBoundedSpeed(solver, frame, dof, speed, speed); }
82 
95  void addBoundedSpeed(QPSolver & solver,
96  const mc_rbdyn::RobotFrame & frame,
97  const Eigen::MatrixXd & dof,
98  const Eigen::VectorXd & lowerSpeed,
99  const Eigen::VectorXd & upperSpeed);
100 
102  bool removeBoundedSpeed(QPSolver & solver, const std::string & frameName);
103 
104  size_t nrBoundedSpeeds() const;
105 
106  void reset(QPSolver & solver);
107 
108 private:
117  mc_rtc::void_ptr constraint_;
118  unsigned int robotIndex;
119 };
120 
121 } // namespace mc_solver
#define MC_SOLVER_DLLAPI
Definition: api.h:50
std::unique_ptr< void, void(*)(void *)> void_ptr
Definition: void_ptr.h:14
Definition: Contact.h:18
Definition: RobotFrame.h:22
Definition: Robots.h:17
Definition: BoundedSpeedConstr.h:19
void removeFromSolverImpl(QPSolver &solver) override
void addToSolverImpl(QPSolver &solver) override
BoundedSpeedConstr(const mc_rbdyn::Robots &robots, unsigned int robotIndex, double dt)
void addBoundedSpeed(QPSolver &solver, const mc_rbdyn::RobotFrame &frame, const Eigen::MatrixXd &dof, const Eigen::VectorXd &lowerSpeed, const Eigen::VectorXd &upperSpeed)
void reset(QPSolver &solver)
void addBoundedSpeed(QPSolver &solver, const std::string &bodyName, const Eigen::Vector3d &bodyPoint, const Eigen::MatrixXd &dof, const Eigen::VectorXd &speed)
Definition: BoundedSpeedConstr.h:39
bool removeBoundedSpeed(QPSolver &solver, const std::string &frameName)
void addBoundedSpeed(QPSolver &solver, const mc_rbdyn::RobotFrame &frame, const Eigen::MatrixXd &dof, const Eigen::VectorXd &speed)
Definition: BoundedSpeedConstr.h:77
void addBoundedSpeed(QPSolver &solver, const std::string &bodyName, const Eigen::Vector3d &bodyPoint, const Eigen::MatrixXd &dof, const Eigen::VectorXd &lowerSpeed, const Eigen::VectorXd &upperSpeed)
This class is a basis to wrap Constraint functions from Tasks. The aim of such wrappers should be two...
Definition: ConstraintSet.h:21
Definition: QPSolver.h:88