49 MC_RTC_diagnostic_push
67 ClosedLoop = ObservedRobots,
70 ClosedLoopIntegrateReal
76 struct DynamicsConstraint;
156 addConstraintSet(*ptr);
171 removeConstraintSet(*ptr);
186 inline void addTask(std::shared_ptr<mc_tasks::MetaTask> task)
191 shPtrTasksStorage.emplace_back(task);
206 inline void removeTask(std::shared_ptr<mc_tasks::MetaTask> task)
208 if(task) { removeTask(task.get()); }
214 void setContacts(
const std::vector<mc_rbdyn::Contact> & contacts = {});
221 inline const std::vector<mc_rbdyn::Contact> &
contacts() const noexcept {
return contacts_; }
224 inline const std::vector<mc_solver::ConstraintSet *> &
constraints() const noexcept {
return constraints_; }
227 inline const std::vector<mc_tasks::MetaTask *> &
tasks() const noexcept {
return metaTasks_; }
244 bool run(FeedbackType fType = FeedbackType::None);
283 void logger(std::shared_ptr<mc_rtc::Logger> logger);
285 std::shared_ptr<mc_rtc::Logger>
logger()
const;
288 void gui(std::shared_ptr<mc_rtc::gui::StateBuilder> gui);
290 std::shared_ptr<mc_rtc::gui::StateBuilder>
gui()
const;
318 std::shared_ptr<mc_rtc::Logger> logger_ =
nullptr;
321 std::shared_ptr<mc_rtc::gui::StateBuilder> gui_ =
nullptr;
329 virtual bool run_impl(FeedbackType fType = FeedbackType::None) = 0;
344 struct formatter<
mc_solver::QPSolver::Backend> :
public formatter<string_view>
346 template<
typename FormatContext>
353 return formatter<string_view>::format(
"Tasks", ctx);
355 return formatter<string_view>::format(
"TVM", ctx);
357 return formatter<string_view>::format(
"Unset", ctx);
359 return formatter<string_view>::format(
"UNEXPECTED", ctx);
#define MC_SOLVER_DLLAPI
Definition: api.h:50
Definition: Configuration.h:1755
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:102
Definition: QPSolver.h:86
virtual void addDynamicsConstraint(mc_solver::DynamicsConstraint *dynamics)=0
const mc_rbdyn::Robot & robot() const
QPSolver(double timeStep, Backend backend)
double timeStep
Definition: QPSolver.h:303
void addTask(std::shared_ptr< mc_tasks::MetaTask > task)
Definition: QPSolver.h:186
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:302
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:227
mc_rbdyn::Robot & robot(unsigned int idx)
Backend backend() const noexcept
Definition: QPSolver.h:126
void removeConstraintSet(const std::unique_ptr< T > &ptr)
Definition: QPSolver.h:169
Backend
Definition: QPSolver.h:91
mc_control::MCController * controller() noexcept
Definition: QPSolver.h:297
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:309
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:206
void addTaskToGUI(mc_tasks::MetaTask *task)
mc_rbdyn::Robot & robot()
const std::vector< mc_solver::ConstraintSet * > & constraints() const noexcept
Definition: QPSolver.h:224
std::vector< mc_rbdyn::Contact > contacts_
Definition: QPSolver.h:306
std::vector< mc_solver::ConstraintSet * > constraints_
Definition: QPSolver.h:315
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:312
void controller(mc_control::MCController *ctl) noexcept
Definition: QPSolver.h:293
void gui(std::shared_ptr< mc_rtc::gui::StateBuilder > gui)
const mc_control::MCController * controller() const noexcept
Definition: QPSolver.h:295
mc_rbdyn::RobotsPtr robots_p
Definition: QPSolver.h:301
mc_rbdyn::Robots & realRobots()
Backend backend_
Definition: QPSolver.h:300
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:154
const std::vector< mc_rbdyn::Contact > & contacts() const noexcept
Definition: QPSolver.h:221
const mc_rbdyn::Robot & env() const
virtual bool run_impl(FeedbackType fType=FeedbackType::None)=0
mc_rbdyn::Robots & robots()