#include <mc_solver/TVMQPSolver.h>
Public Member Functions | |
TVMQPSolver (mc_rbdyn::RobotsPtr robots, double timeStep) | |
TVMQPSolver (double timeStep) | |
~TVMQPSolver () final=default | |
void | setContacts (ControllerToken, const std::vector< mc_rbdyn::Contact > &contacts) final |
const sva::ForceVecd | desiredContactForce (const mc_rbdyn::Contact &id) const final |
double | solveTime () final |
double | solveAndBuildTime () final |
tvm::LinearizedControlProblem & | problem () noexcept |
const tvm::LinearizedControlProblem & | problem () const noexcept |
Public Member Functions inherited from mc_solver::QPSolver | |
QPSolver (mc_rbdyn::RobotsPtr robots, double timeStep, Backend backend) | |
QPSolver (double timeStep, Backend backend) | |
virtual | ~QPSolver ()=default |
Backend | backend () const noexcept |
void | addConstraintSet (ConstraintSet &cs) |
template<typename T > | |
void | addConstraintSet (const std::unique_ptr< T > &ptr) |
void | removeConstraintSet (ConstraintSet &cs) |
template<typename T > | |
void | removeConstraintSet (const std::unique_ptr< T > &ptr) |
void | addTask (mc_tasks::MetaTask *task) |
void | addTask (std::shared_ptr< mc_tasks::MetaTask > task) |
void | removeTask (mc_tasks::MetaTask *task) |
void | removeTask (std::shared_ptr< mc_tasks::MetaTask > task) |
void | setContacts (const std::vector< mc_rbdyn::Contact > &contacts={}) |
const std::vector< mc_rbdyn::Contact > & | contacts () const noexcept |
const std::vector< mc_solver::ConstraintSet * > & | constraints () const noexcept |
const std::vector< mc_tasks::MetaTask * > & | tasks () const noexcept |
bool | run (FeedbackType fType=FeedbackType::None) |
const mc_rbdyn::Robot & | robot () const |
mc_rbdyn::Robot & | robot () |
mc_rbdyn::Robot & | robot (unsigned int idx) |
const mc_rbdyn::Robot & | robot (unsigned int idx) const |
const mc_rbdyn::Robot & | env () const |
mc_rbdyn::Robot & | env () |
const mc_rbdyn::Robots & | robots () const |
mc_rbdyn::Robots & | robots () |
const mc_rbdyn::Robots & | realRobots () const |
mc_rbdyn::Robots & | realRobots () |
double | dt () const |
void | logger (std::shared_ptr< mc_rtc::Logger > logger) |
std::shared_ptr< mc_rtc::Logger > | logger () const |
void | gui (std::shared_ptr< mc_rtc::gui::StateBuilder > gui) |
std::shared_ptr< mc_rtc::gui::StateBuilder > | gui () const |
void | controller (mc_control::MCController *ctl) noexcept |
const mc_control::MCController * | controller () const noexcept |
mc_control::MCController * | controller () noexcept |
Static Public Member Functions | |
static TVMQPSolver & | from_solver (QPSolver &solver) noexcept |
static const TVMQPSolver & | from_solver (const QPSolver &solver) noexcept |
Static Public Member Functions inherited from mc_solver::QPSolver | |
static Backend | context_backend () |
static void | context_backend (Backend backend) |
Additional Inherited Members | |
Public Types inherited from mc_solver::QPSolver | |
enum | Backend { Backend::Unset, Backend::Tasks, Backend::TVM } |
Protected Member Functions inherited from mc_solver::QPSolver | |
void | addTaskToGUI (mc_tasks::MetaTask *task) |
Protected Attributes inherited from mc_solver::QPSolver | |
Backend | backend_ |
mc_rbdyn::RobotsPtr | robots_p |
mc_rbdyn::RobotsPtr | realRobots_p |
double | timeStep |
std::vector< mc_rbdyn::Contact > | contacts_ |
std::vector< mc_tasks::MetaTask * > | metaTasks_ |
std::vector< std::shared_ptr< void > > | shPtrTasksStorage |
std::vector< mc_solver::ConstraintSet * > | constraints_ |
std::shared_ptr< mc_rtc::Logger > | logger_ = nullptr |
std::shared_ptr< mc_rtc::gui::StateBuilder > | gui_ = nullptr |
mc_control::MCController * | controller_ = nullptr |
This implements the QPSolver interface for the TVM backend
This solver can accepts tasks and constraints from mc_rtc
mc_solver::TVMQPSolver::TVMQPSolver | ( | mc_rbdyn::RobotsPtr | robots, |
double | timeStep | ||
) |
mc_solver::TVMQPSolver::TVMQPSolver | ( | double | timeStep | ) |
|
finaldefault |
|
finalvirtual |
Desired resultant of contact force in robot surface frame
contact | Contact for which the force is desired. This contact must be one of the active contacts in the solver. |
Implements mc_solver::QPSolver.
|
inlinestaticnoexcept |
Helper to get a TVMQPSolver from a QPSolver instance
The caller should make sure the cast is valid by checking the QPSolver backend.
In debug the program will abort otherwise, in release UB abounds
|
inlinestaticnoexcept |
Helper to get a TVMQPSolver from a QPSolver instance
The caller should make sure the cast is valid by checking the QPSolver backend.
In debug the program will abort otherwise, in release UB abounds
|
inlinenoexcept |
Access the internal problem (const)
|
inlinenoexcept |
Access the internal problem
|
finalvirtual |
Implements mc_solver::QPSolver.
|
finalvirtual |
Returns the building and solving time in ms
Implements mc_solver::QPSolver.
|
finalvirtual |
Returns the solving time in ms
Implements mc_solver::QPSolver.