TVM  0.9.4
Frame.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <tvm/api.h>
6 #include <tvm/defs.h>
7 
9 
10 #include <RBDyn/Jacobian.h>
11 
12 namespace tvm
13 {
14 
15 namespace robot
16 {
17 
31 class TVM_DLLAPI Frame : public graph::abstract::Node<Frame>
32 {
33 public:
34  SET_OUTPUTS(Frame, Position, Jacobian, Velocity, NormalAcceleration)
35  SET_UPDATES(Frame, Position, Jacobian, Velocity, NormalAcceleration)
36 
37 
50  Frame(std::string name, RobotPtr robot, const std::string & body, sva::PTransformd X_b_f);
51 
53  inline const Robot & robot() const { return *robot_; }
54 
56  inline Robot & robot() { return *robot_; }
57 
59  inline rbd::Jacobian & rbdJacobian() { return jac_; }
60 
62  inline const rbd::Jacobian & rbdJacobian() const { return jac_; }
63 
65  inline const std::string & name() const { return name_; }
67  inline const sva::PTransformd & position() const { return position_; }
69  inline const tvm::internal::MatrixWithProperties & jacobian() const { return jacobian_; }
71  inline const sva::MotionVecd & velocity() const { return velocity_; }
73  inline const sva::MotionVecd & normalAcceleration() const { return normalAcceleration_; }
75  const std::string & body() const;
76 
77 private:
78  std::string name_;
79  RobotPtr robot_;
80  unsigned int bodyId_;
81  rbd::Jacobian jac_;
82  sva::PTransformd X_b_f_;
83 
85  void updatePosition();
86  sva::PTransformd position_;
87 
88  void updateJacobian();
89  Eigen::MatrixXd jacTmp_;
91 
92  void updateVelocity();
93  sva::MotionVecd velocity_;
94 
95  void updateNormalAcceleration();
96  sva::MotionVecd normalAcceleration_;
97 };
98 
99 using FramePtr = std::shared_ptr<Frame>;
100 
101 } // namespace robot
102 
103 } // namespace tvm
#define SET_UPDATES(SelfT,...)
Definition: AbstractNode.h:138
#define SET_OUTPUTS(SelfT,...)
Definition: Outputs.h:113
#define TVM_DLLAPI
Definition: api.h:35
Definition: Robot.h:49
Definition: Node.h:27
Definition: MatrixWithProperties.h:54
Definition: Frame.h:32
rbd::Jacobian & rbdJacobian()
Definition: Frame.h:59
const std::string & body() const
const sva::PTransformd & position() const
Definition: Frame.h:67
Robot & robot()
Definition: Frame.h:56
const sva::MotionVecd & normalAcceleration() const
Definition: Frame.h:73
const sva::MotionVecd & velocity() const
Definition: Frame.h:71
const rbd::Jacobian & rbdJacobian() const
Definition: Frame.h:62
const std::string & name() const
Definition: Frame.h:65
const tvm::internal::MatrixWithProperties & jacobian() const
Definition: Frame.h:69
Definition: probe.h:44
std::shared_ptr< Frame > FramePtr
Definition: Frame.h:99
Definition: Clock.h:12
std::shared_ptr< Robot > RobotPtr
Definition: defs.h:62