49 MC_RTC_diagnostic_push
67 ClosedLoop = ObservedRobots,
70 ClosedLoopIntegrateReal,
78 struct DynamicsConstraint;
158 addConstraintSet(*ptr);
173 removeConstraintSet(*ptr);
188 inline void addTask(std::shared_ptr<mc_tasks::MetaTask> task)
193 shPtrTasksStorage.emplace_back(task);
208 inline void removeTask(std::shared_ptr<mc_tasks::MetaTask> task)
210 if(task) { removeTask(task.get()); }
216 void setContacts(
const std::vector<mc_rbdyn::Contact> & contacts = {});
223 inline const std::vector<mc_rbdyn::Contact> &
contacts() const noexcept {
return contacts_; }
226 inline const std::vector<mc_solver::ConstraintSet *> &
constraints() const noexcept {
return constraints_; }
229 inline const std::vector<mc_tasks::MetaTask *> &
tasks() const noexcept {
return metaTasks_; }
246 bool run(FeedbackType fType = FeedbackType::None);
285 void logger(std::shared_ptr<mc_rtc::Logger> logger);
287 std::shared_ptr<mc_rtc::Logger>
logger()
const;
290 void gui(std::shared_ptr<mc_rtc::gui::StateBuilder> gui);
292 std::shared_ptr<mc_rtc::gui::StateBuilder>
gui()
const;
320 std::shared_ptr<mc_rtc::Logger> logger_ =
nullptr;
323 std::shared_ptr<mc_rtc::gui::StateBuilder> gui_ =
nullptr;
331 virtual bool run_impl(FeedbackType fType = FeedbackType::None) = 0;
346 struct formatter<
mc_solver::QPSolver::Backend> :
public formatter<string_view>
348 template<
typename FormatContext>
349 #if FMT_VERSION <= 9 * 10000
359 return formatter<string_view>::format(
"Tasks", ctx);
361 return formatter<string_view>::format(
"TVM", ctx);
363 return formatter<string_view>::format(
"Unset", ctx);
365 return formatter<string_view>::format(
"UNEXPECTED", ctx);
#define MC_SOLVER_DLLAPI
Definition: api.h:50
Definition: Configuration.h:1804
Definition: CompletionCriteria.h:11
std::shared_ptr< Robots > RobotsPtr
Definition: fwd.h:17
MC_RTC_diagnostic_push MC_RTC_diagnostic_ignored(GCC, "-Wattributes") enum class MC_SOLVER_DLLAPI FeedbackType
Definition: QPSolver.h:50
Definition: StabilizerStandingState.h:12
MCController is the base class to implement all controllers. It assumes that at least two robots are ...
Definition: MCController.h:99
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
virtual void addDynamicsConstraint(mc_solver::DynamicsConstraint *dynamics)=0
const mc_rbdyn::Robot & robot() const
QPSolver(double timeStep, Backend backend)
double timeStep
Definition: QPSolver.h:305
void addTask(std::shared_ptr< mc_tasks::MetaTask > task)
Definition: QPSolver.h:188
void removeTask(mc_tasks::MetaTask *task)
void removeConstraintSet(ConstraintSet &cs)
void addConstraintSet(ConstraintSet &cs)
virtual ~QPSolver()=default
mc_rbdyn::RobotsPtr realRobots_p
Definition: QPSolver.h:304
virtual void setContacts(ControllerToken, const std::vector< mc_rbdyn::Contact > &contacts)=0
virtual double solveAndBuildTime()=0
const std::vector< mc_tasks::MetaTask * > & tasks() const noexcept
Definition: QPSolver.h:229
mc_rbdyn::Robot & robot(unsigned int idx)
Backend backend() const noexcept
Definition: QPSolver.h:128
void removeConstraintSet(const std::unique_ptr< T > &ptr)
Definition: QPSolver.h:171
Backend
Definition: QPSolver.h:93
mc_control::MCController * controller() noexcept
Definition: QPSolver.h:299
void addTask(mc_tasks::MetaTask *task)
QPSolver(mc_rbdyn::RobotsPtr robots, double timeStep, Backend backend)
const mc_rbdyn::Robots & realRobots() const
void logger(std::shared_ptr< mc_rtc::Logger > logger)
const mc_rbdyn::Robot & robot(unsigned int idx) const
static Backend context_backend()
std::vector< mc_tasks::MetaTask * > metaTasks_
Definition: QPSolver.h:311
virtual void removeDynamicsConstraint(mc_solver::ConstraintSet *maybe_dynamics)=0
static void context_backend(Backend backend)
virtual const sva::ForceVecd desiredContactForce(const mc_rbdyn::Contact &id) const =0
void removeTask(std::shared_ptr< mc_tasks::MetaTask > task)
Definition: QPSolver.h:208
void addTaskToGUI(mc_tasks::MetaTask *task)
mc_rbdyn::Robot & robot()
const std::vector< mc_solver::ConstraintSet * > & constraints() const noexcept
Definition: QPSolver.h:226
std::vector< mc_rbdyn::Contact > contacts_
Definition: QPSolver.h:308
std::vector< mc_solver::ConstraintSet * > constraints_
Definition: QPSolver.h:317
const mc_rbdyn::Robots & robots() const
std::shared_ptr< mc_rtc::gui::StateBuilder > gui() const
virtual double solveTime()=0
bool run(FeedbackType fType=FeedbackType::None)
std::vector< std::shared_ptr< void > > shPtrTasksStorage
Definition: QPSolver.h:314
void controller(mc_control::MCController *ctl) noexcept
Definition: QPSolver.h:295
void gui(std::shared_ptr< mc_rtc::gui::StateBuilder > gui)
const mc_control::MCController * controller() const noexcept
Definition: QPSolver.h:297
mc_rbdyn::RobotsPtr robots_p
Definition: QPSolver.h:303
mc_rbdyn::Robots & realRobots()
Backend backend_
Definition: QPSolver.h:302
void setContacts(const std::vector< mc_rbdyn::Contact > &contacts={})
std::shared_ptr< mc_rtc::Logger > logger() const
void addConstraintSet(const std::unique_ptr< T > &ptr)
Definition: QPSolver.h:156
const std::vector< mc_rbdyn::Contact > & contacts() const noexcept
Definition: QPSolver.h:223
const mc_rbdyn::Robot & env() const
virtual bool run_impl(FeedbackType fType=FeedbackType::None)=0
mc_rbdyn::Robots & robots()