DynamicsConstraint.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 
10 
11 #include <Tasks/QPMotionConstr.h>
12 
13 namespace mc_solver
14 {
15 
21 {
22 public:
32  DynamicsConstraint(const mc_rbdyn::Robots & robots, unsigned int robotIndex, double timeStep, bool infTorque = false);
33 
46  DynamicsConstraint(const mc_rbdyn::Robots & robots,
47  unsigned int robotIndex,
48  double timeStep,
49  const std::array<double, 3> & damper,
50  double velocityPercent = 1.0,
51  bool infTorque = false);
52 
57  inline tasks::qp::MotionConstr & motionConstr() noexcept
58  {
59  assert(backend_ == QPSolver::Backend::Tasks);
60  return *static_cast<tasks::qp::MotionConstr *>(motion_constr_.get());
61  }
62 
68  {
69  assert(backend_ == QPSolver::Backend::TVM);
70  return *(static_cast<mc_tvm::DynamicFunctionPtr *>(motion_constr_.get())->get());
71  }
72 
73  void addToSolverImpl(QPSolver & solver) override;
74 
75  void removeFromSolverImpl(QPSolver & solver) override;
76 
77  inline unsigned int robotIndex() const noexcept { return robotIndex_; }
78 
79 protected:
90  unsigned int robotIndex_;
91 };
92 
93 } // namespace mc_solver
mc_solver::DynamicsConstraint
Definition: DynamicsConstraint.h:20
mc_rbdyn::Robots
Definition: Robots.h:15
KinematicsConstraint.h
DynamicFunction.h
mc_solver::QPSolver
Definition: QPSolver.h:85
mc_solver::QPSolver::Backend::TVM
@ TVM
mc_tvm::DynamicFunction
Definition: DynamicFunction.h:31
mc_solver::KinematicsConstraint
Definition: KinematicsConstraint.h:19
mc_rtc::void_ptr
std::unique_ptr< void, void(*)(void *)> void_ptr
Definition: void_ptr.h:14
mc_solver::DynamicsConstraint::robotIndex_
unsigned int robotIndex_
Definition: DynamicsConstraint.h:90
mc_solver::DynamicsConstraint::motion_constr_
mc_rtc::void_ptr motion_constr_
Definition: DynamicsConstraint.h:88
mc_solver
Definition: Contact.h:17
mc_tvm::DynamicFunctionPtr
std::shared_ptr< DynamicFunction > DynamicFunctionPtr
Definition: DynamicFunction.h:117
mc_solver::DynamicsConstraint::robotIndex
unsigned int robotIndex() const noexcept
Definition: DynamicsConstraint.h:77
mc_solver::DynamicsConstraint::motionConstr
tasks::qp::MotionConstr & motionConstr() noexcept
Definition: DynamicsConstraint.h:57
mc_solver::QPSolver::Backend::Tasks
@ Tasks
MC_SOLVER_DLLAPI
#define MC_SOLVER_DLLAPI
Definition: api.h:50
mc_solver::DynamicsConstraint::dynamicFunction
mc_tvm::DynamicFunction & dynamicFunction()
Definition: DynamicsConstraint.h:67