TVMTrajectoryTaskGeneric.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 <tvm/ControlProblem.h>
12 #include <tvm/task_dynamics/Proportional.h>
13 #include <tvm/task_dynamics/ProportionalDerivative.h>
14 
15 namespace mc_tasks
16 {
17 
18 namespace details
19 {
20 
21 template<typename ErrorT>
22 void set_ref_vel(void * task, const Eigen::VectorXd & refVel)
23 {
24  static_cast<ErrorT *>(task)->refVel(refVel);
25 }
26 
27 template<typename ErrorT>
28 void set_ref_accel(void * task, const Eigen::VectorXd & refAccel)
29 {
30  static_cast<ErrorT *>(task)->refAccel(refAccel);
31 }
32 
34 {
35  tvm::TaskWithRequirementsPtr task_; // null if the task is not in solver
36  bool dynamicIsPD_ = false; // is task_ dynamic a PD or a P, irrelevant if task_ is null
37  Eigen::VectorXd dimWeight_;
38 
39  using set_ref_vel_t = void (*)(void *, const Eigen::VectorXd &);
40  using set_ref_accel_t = void (*)(void *, const Eigen::VectorXd &);
41 
44 
45  template<typename ErrorT>
46  void init(ErrorT * error)
47  {
48  dimWeight_ = Eigen::VectorXd::Ones(error->size());
49  if constexpr(details::has_refVel_v<ErrorT>) { setRefVel = set_ref_vel<ErrorT>; }
50  if constexpr(details::has_refAccel_v<ErrorT>) { setRefAccel = set_ref_accel<ErrorT>; }
51  }
52 };
53 
54 using TVMTrajectoryTaskGenericPtr = std::shared_ptr<TVMTrajectoryTaskGeneric>;
55 
56 } // namespace details
57 
58 } // namespace mc_tasks
void error(Args &&... args)
Definition: logging.h:63
std::shared_ptr< TVMTrajectoryTaskGeneric > TVMTrajectoryTaskGenericPtr
Definition: TVMTrajectoryTaskGeneric.h:54
void set_ref_vel(void *task, const Eigen::VectorXd &refVel)
Definition: TVMTrajectoryTaskGeneric.h:22
void set_ref_accel(void *task, const Eigen::VectorXd &refAccel)
Definition: TVMTrajectoryTaskGeneric.h:28
Definition: StabilizerStandingState.h:12
Definition: TVMTrajectoryTaskGeneric.h:34
set_ref_accel_t setRefAccel
Definition: TVMTrajectoryTaskGeneric.h:43
Eigen::VectorXd dimWeight_
Definition: TVMTrajectoryTaskGeneric.h:37
set_ref_vel_t setRefVel
Definition: TVMTrajectoryTaskGeneric.h:42
void(*)(void *, const Eigen::VectorXd &) set_ref_vel_t
Definition: TVMTrajectoryTaskGeneric.h:39
void(*)(void *, const Eigen::VectorXd &) set_ref_accel_t
Definition: TVMTrajectoryTaskGeneric.h:40
tvm::TaskWithRequirementsPtr task_
Definition: TVMTrajectoryTaskGeneric.h:35
bool dynamicIsPD_
Definition: TVMTrajectoryTaskGeneric.h:36
void init(ErrorT *error)
Definition: TVMTrajectoryTaskGeneric.h:46