CoM.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 #include <mc_tvm/fwd.h>
9 
10 #include <mc_rtc/shared.h>
11 
12 #include <RBDyn/CoM.h>
13 
14 #include <tvm/graph/abstract/Node.h>
15 
16 namespace mc_tvm
17 {
18 
33 struct MC_TVM_DLLAPI CoM : public tvm::graph::abstract::Node<CoM>
34 {
35  SET_OUTPUTS(CoM, CoM, Jacobian, Velocity, NormalAcceleration, Acceleration, JDot)
36  SET_UPDATES(CoM, CoM, Jacobian, Velocity, NormalAcceleration, Acceleration, JDot)
37 
38  friend struct Robot;
39 
40 private:
41  struct NewCoMToken
42  {
43  };
44 
45 public:
53  CoM(NewCoMToken, Robot & robot);
54 
55  inline const Eigen::Vector3d & com() const noexcept { return com_; }
56 
57  inline const Eigen::Vector3d & velocity() const noexcept { return velocity_; }
58 
59  inline const Eigen::Vector3d & normalAcceleration() const noexcept { return normalAcceleration_; }
60 
61  inline const Eigen::Vector3d & acceleration() const noexcept { return acceleration_; }
62 
63  inline const Eigen::MatrixXd & jacobian() const noexcept { return jac_.jacobian(); }
64 
65  inline const Eigen::MatrixXd & JDot() const noexcept { return jac_.jacobianDot(); }
66 
67  inline const Robot & robot() const noexcept { return robot_; }
68 
69  inline Robot & robot() noexcept { return robot_; }
70 
72  inline const rbd::CoMJacobian & comJacobian() const noexcept { return jac_; }
73 
74 private:
75  Robot & robot_;
76  rbd::CoMJacobian jac_;
77 
78  Eigen::Vector3d com_;
79  void updateCoM();
80 
81  Eigen::Vector3d velocity_;
82  void updateVelocity();
83 
84  Eigen::Vector3d normalAcceleration_;
85  void updateNormalAcceleration();
86 
87  Eigen::Vector3d acceleration_;
88  void updateAcceleration();
89 
90  void updateJacobian();
91 
92  void updateJDot();
93 };
94 
95 } // namespace mc_tvm
mc_tvm::CoM::robot
const Robot & robot() const noexcept
Definition: CoM.h:67
MC_TVM_DLLAPI
#define MC_TVM_DLLAPI
Definition: api.h:47
mc_tvm::Robot
Definition: Robot.h:48
mc_tvm
Definition: CollisionFunction.h:15
mc_tvm::CoM::com
const Eigen::Vector3d & com() const noexcept
Definition: CoM.h:55
fwd.h
mc_tvm::CoM::velocity
const Eigen::Vector3d & velocity() const noexcept
Definition: CoM.h:57
mc_tvm::CoM::robot
Robot & robot() noexcept
Definition: CoM.h:69
mc_tvm::CoM::comJacobian
const rbd::CoMJacobian & comJacobian() const noexcept
Definition: CoM.h:72
mc_tvm::CoM
Definition: CoM.h:33
mc_tvm::CoM::JDot
const Eigen::MatrixXd & JDot() const noexcept
Definition: CoM.h:65
mc_tvm::CoM::jacobian
const Eigen::MatrixXd & jacobian() const noexcept
Definition: CoM.h:63
api.h
mc_tvm::CoM::normalAcceleration
const Eigen::Vector3d & normalAcceleration() const noexcept
Definition: CoM.h:59
shared.h
mc_tvm::CoM::acceleration
const Eigen::Vector3d & acceleration() const noexcept
Definition: CoM.h:61