Loading...
Searching...
No Matches
FD.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// Eigen
12#include <Eigen/Core>
13
14// SpaceVecAlg
15#include <rbdyn/config.hh>
16
17#include <SpaceVecAlg/SpaceVecAlg>
18
19namespace rbd
20{
21class MultiBody;
22struct MultiBodyConfig;
23
27class RBDYN_DLLAPI ForwardDynamics
28{
29public:
33
41 void forwardDynamics(const MultiBody & mb, MultiBodyConfig & mbc);
42
47 void computeHIr(const MultiBody & mb);
48
54 void computeH(const MultiBody & mb, const MultiBodyConfig & mbc);
55
62 void computeC(const MultiBody & mb, const MultiBodyConfig & mbc);
63
65 const Eigen::MatrixXd & H() const
66 {
67 return H_;
68 }
69
71 const Eigen::MatrixXd & HIr() const
72 {
73 return HIr_;
74 }
75
77 const Eigen::VectorXd & C() const
78 {
79 return C_;
80 }
81
83 const std::vector<sva::RBInertiad> & inertiaSubTree() const
84 {
85 return I_st_;
86 }
87
88 // safe version for python binding
89
94
98 void sComputeH(const MultiBody & mb, const MultiBodyConfig & mbc);
99
103 void sComputeC(const MultiBody & mb, const MultiBodyConfig & mbc);
104
105private:
106 Eigen::MatrixXd H_;
107 Eigen::VectorXd C_;
108
109 // H computation
110 std::vector<sva::RBInertiad> I_st_;
111 std::vector<Eigen::Matrix<double, 6, Eigen::Dynamic>> F_;
112 Eigen::MatrixXd HIr_;
113
114 // C computation
115 std::vector<sva::MotionVecd> acc_;
116 std::vector<sva::ForceVecd> f_;
117
118 // torque computation
119 Eigen::VectorXd tmpFd_;
120
121 std::vector<int> dofPos_;
122
123 Eigen::LDLT<Eigen::MatrixXd> ldlt_;
124};
125
126} // namespace rbd
Definition FD.h:28
const std::vector< sva::RBInertiad > & inertiaSubTree() const
Definition FD.h:83
void sComputeH(const MultiBody &mb, const MultiBodyConfig &mbc)
void computeH(const MultiBody &mb, const MultiBodyConfig &mbc)
void computeHIr(const MultiBody &mb)
void computeC(const MultiBody &mb, const MultiBodyConfig &mbc)
const Eigen::VectorXd & C() const
Definition FD.h:77
ForwardDynamics(const MultiBody &mb)
void forwardDynamics(const MultiBody &mb, MultiBodyConfig &mbc)
const Eigen::MatrixXd & HIr() const
Definition FD.h:71
void sForwardDynamics(const MultiBody &mb, MultiBodyConfig &mbc)
ForwardDynamics()
Definition FD.h:30
const Eigen::MatrixXd & H() const
Definition FD.h:65
void sComputeC(const MultiBody &mb, const MultiBodyConfig &mbc)
Definition MultiBody.h:30
Definition common.h:21
Definition MultiBodyConfig.h:24