mc_rtc  2.12.0
PostureFunction.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/IdentityFunction.h>
12 
13 namespace mc_tvm
14 {
15 
17 class MC_TVM_DLLAPI PostureFunction : public tvm::function::IdentityFunction
18 {
19 public:
20  SET_UPDATES(PostureFunction, Value, Velocity)
21 
22 
27  PostureFunction(const mc_rbdyn::Robot & robot);
28 
30  void reset();
31 
39  void posture(const std::string & j, const std::vector<double> & q);
40 
42  void posture(const std::vector<std::vector<double>> & p);
43 
45  const std::vector<std::vector<double>> & posture() const noexcept { return posture_; }
46 
48  inline const Eigen::VectorXd & refVel() const noexcept { return refVel_; }
49 
51  inline void refVel(const Eigen::VectorXd & vel) noexcept
52  {
53  assert(refVel_.size() == vel.size());
54  refVel_ = vel;
55  }
56 
58  inline const Eigen::VectorXd & refAccel() const noexcept { return refAccel_; }
59 
61  inline void refAccel(const Eigen::VectorXd & acc) noexcept
62  {
63  assert(refAccel_.size() == acc.size());
64  refAccel_ = acc;
65  normalAcceleration_ = -acc;
66  }
67 
68 protected:
69  void updateValue_() override;
70  void updateVelocity_() override;
71 
73 
75  std::vector<std::vector<double>> posture_;
76 
78  int j0_;
79 
81  Eigen::VectorXd refVel_;
82 
84  Eigen::VectorXd refAccel_;
85 };
86 
87 } // namespace mc_tvm
Definition: PostureFunction.h:18
const mc_rbdyn::Robot & robot_
Definition: PostureFunction.h:72
const Eigen::VectorXd & refAccel() const noexcept
Definition: PostureFunction.h:58
Eigen::VectorXd refVel_
Definition: PostureFunction.h:81
void refVel(const Eigen::VectorXd &vel) noexcept
Definition: PostureFunction.h:51
int j0_
Definition: PostureFunction.h:78
void refAccel(const Eigen::VectorXd &acc) noexcept
Definition: PostureFunction.h:61
Eigen::VectorXd refAccel_
Definition: PostureFunction.h:84
void updateValue_() override
const Eigen::VectorXd & refVel() const noexcept
Definition: PostureFunction.h:48
void updateVelocity_() override
std::vector< std::vector< double > > posture_
Definition: PostureFunction.h:75
#define MC_TVM_DLLAPI
Definition: api.h:47
Definition: generic_gripper.h:15
Definition: CollisionFunction.h:16
Definition: Contact.h:67
Definition: Robot.h:63
Definition: Robot.h:49