IS.h
Go to the documentation of this file.
1 /*
2  * Copyright 2012-2019 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
7 // includes
8 // std
9 #include <vector>
10 
11 // SpaceVecAlg
12 #include <SpaceVecAlg/SpaceVecAlg>
13 
14 #include "Jacobian.h"
15 
16 namespace rbd
17 {
18 class MultiBody;
19 struct MultiBodyConfig;
20 
24 class RBDYN_DLLAPI InverseStatics
25 {
26 public:
29  InverseStatics(const MultiBody & mb);
30 
31  void setJacobianSize(const MultiBody & mb,
32  const MultiBodyConfig & mbc,
33  const std::vector<Eigen::MatrixXd> & jacMomentsAndForces);
34 
42  void inverseStatics(const MultiBody & mb, MultiBodyConfig & mbc);
43 
60  void computeTorqueJacobianJoint(const MultiBody & mb,
61  MultiBodyConfig & mbc,
62  const std::vector<Eigen::MatrixXd> & jacMomentsAndForces);
63 
68  void computeTorqueJacobianJoint(const MultiBody & mb, MultiBodyConfig & mbc);
69 
70  // safe version for python binding
71 
75  void sInverseStatics(const MultiBody & mb, MultiBodyConfig & mbc);
76 
82  const std::vector<sva::ForceVecd> & f() const
83  {
84  return f_;
85  };
86 
87  const std::vector<Eigen::MatrixXd> & jointTorqueDiff() const
88  {
89  return jointTorqueDiff_;
90  };
91 
92 private:
96  std::vector<sva::ForceVecd> f_;
97  std::vector<Eigen::MatrixXd> df_;
98  std::vector<Eigen::MatrixXd> jointTorqueDiff_;
99  std::vector<Jacobian> jacW_;
100  Eigen::MatrixXd fullJac_;
101  bool jacobianSizeHasBeenSet_;
102 };
103 
104 } // namespace rbd
Jacobian.h
rbd::InverseStatics::jointTorqueDiff
const std::vector< Eigen::MatrixXd > & jointTorqueDiff() const
Definition: IS.h:87
rbd::MultiBody
Definition: MultiBody.h:29
rbd::InverseStatics::InverseStatics
InverseStatics()
Definition: IS.h:27
rbd
Definition: common.h:20
rbd::MultiBodyConfig
Definition: MultiBodyConfig.h:23
rbd::InverseStatics
Definition: IS.h:24
rbd::InverseStatics::f
const std::vector< sva::ForceVecd > & f() const
Get the internal forces.
Definition: IS.h:82