mc_rtc  2.12.0
JointsSelectorFunction.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 
7 #include <mc_tvm/api.h>
8 
9 #include <mc_rbdyn/fwd.h>
10 
11 #include <tvm/function/abstract/Function.h>
12 
13 namespace mc_tvm
14 {
15 
16 // FIXME Needs to implement active DoF selection
17 
19 class MC_TVM_DLLAPI JointsSelectorFunction : public tvm::function::abstract::Function
20 {
21 public:
22  SET_UPDATES(JointsSelectorFunction, Jacobian, JDot)
23 
24  using Function = tvm::function::abstract::Function;
25 
37  static std::unique_ptr<JointsSelectorFunction> ActiveJoints(Function * f,
38  const mc_rbdyn::Robot & robot,
39  const std::vector<std::string> & activeJoints);
40 
52  static std::unique_ptr<JointsSelectorFunction> InactiveJoints(Function * f,
53  const mc_rbdyn::Robot & robot,
54  const std::vector<std::string> & inactiveJoints);
55 
56  inline const Eigen::VectorXd & value() const override { return f_->value(); }
57 
58  inline const Eigen::VectorXd & velocity() const override { return f_->velocity(); }
59 
60  inline const Eigen::VectorXd & normalAcceleration() const override { return f_->normalAcceleration(); }
61 
62 protected:
77  tvm::VariablePtr variable,
78  const std::vector<std::pair<Eigen::DenseIndex, Eigen::DenseIndex>> & activeIndex);
79 
80 protected:
82  void updateJDot();
83 
85  tvm::VariablePtr variable_;
86  std::vector<std::pair<Eigen::DenseIndex, Eigen::DenseIndex>> activeIndex_;
87 };
88 
89 } // namespace mc_tvm
Definition: JointsSelectorFunction.h:20
const Eigen::VectorXd & value() const override
Definition: JointsSelectorFunction.h:56
Function * f_
Definition: JointsSelectorFunction.h:84
tvm::VariablePtr variable_
Definition: JointsSelectorFunction.h:85
const Eigen::VectorXd & velocity() const override
Definition: JointsSelectorFunction.h:58
tvm::function::abstract::Function Function
Definition: JointsSelectorFunction.h:24
JointsSelectorFunction(Function *f, tvm::VariablePtr variable, const std::vector< std::pair< Eigen::DenseIndex, Eigen::DenseIndex >> &activeIndex)
const Eigen::VectorXd & normalAcceleration() const override
Definition: JointsSelectorFunction.h:60
std::vector< std::pair< Eigen::DenseIndex, Eigen::DenseIndex > > activeIndex_
Definition: JointsSelectorFunction.h:86
#define MC_TVM_DLLAPI
Definition: api.h:47
Definition: generic_gripper.h:15
Definition: CollisionFunction.h:16
Definition: Contact.h:67
Definition: Robot.h:49