mc_rtc  2.16.0
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>
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 { static_cast<ErrorT *>(task)->refVel(refVel); }
24 
25 template<typename ErrorT>
26 void set_ref_accel(void * task, const Eigen::VectorXd & refAccel)
27 { static_cast<ErrorT *>(task)->refAccel(refAccel); }
28 
30 {
31  tvm::TaskWithRequirementsPtr task_; // null if the task is not in solver
32  bool dynamicIsPD_ = false; // is task_ dynamic a PD or a P, irrelevant if task_ is null
33  Eigen::VectorXd dimWeight_;
34 
35  using set_ref_vel_t = void (*)(void *, const Eigen::VectorXd &);
36  using set_ref_accel_t = void (*)(void *, const Eigen::VectorXd &);
37 
40 
41  template<typename ErrorT>
42  void init(ErrorT * error)
43  {
44  dimWeight_ = Eigen::VectorXd::Ones(error->size());
45  if constexpr(details::has_refVel_v<ErrorT>) { setRefVel = set_ref_vel<ErrorT>; }
46  if constexpr(details::has_refAccel_v<ErrorT>) { setRefAccel = set_ref_accel<ErrorT>; }
47  }
48 };
49 
50 using TVMTrajectoryTaskGenericPtr = std::shared_ptr<TVMTrajectoryTaskGeneric>;
51 
52 } // namespace details
53 
54 } // namespace mc_tasks
void error(const S &format, Args &&... args)
Definition: logging.h:65
std::shared_ptr< TVMTrajectoryTaskGeneric > TVMTrajectoryTaskGenericPtr
Definition: TVMTrajectoryTaskGeneric.h:50
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:26
Definition: StabilizerStandingState.h:12
std::shared_ptr< TaskWithRequirements > TaskWithRequirementsPtr
Definition: TVMTrajectoryTaskGeneric.h:30
set_ref_accel_t setRefAccel
Definition: TVMTrajectoryTaskGeneric.h:39
Eigen::VectorXd dimWeight_
Definition: TVMTrajectoryTaskGeneric.h:33
set_ref_vel_t setRefVel
Definition: TVMTrajectoryTaskGeneric.h:38
void(*)(void *, const Eigen::VectorXd &) set_ref_vel_t
Definition: TVMTrajectoryTaskGeneric.h:35
void(*)(void *, const Eigen::VectorXd &) set_ref_accel_t
Definition: TVMTrajectoryTaskGeneric.h:36
tvm::TaskWithRequirementsPtr task_
Definition: TVMTrajectoryTaskGeneric.h:31
bool dynamicIsPD_
Definition: TVMTrajectoryTaskGeneric.h:32
void init(ErrorT *error)
Definition: TVMTrajectoryTaskGeneric.h:42