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
19
namespace
rbd
20
{
21
class
MultiBody;
22
struct
MultiBodyConfig;
23
27
class
RBDYN_DLLAPI
ForwardDynamics
28
{
29
public
:
30
ForwardDynamics
() {}
32
ForwardDynamics
(
const
MultiBody
& mb);
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
93
void
sForwardDynamics
(
const
MultiBody
& mb,
MultiBodyConfig
& mbc);
94
98
void
sComputeH
(
const
MultiBody
& mb,
const
MultiBodyConfig
& mbc);
99
103
void
sComputeC
(
const
MultiBody
& mb,
const
MultiBodyConfig
& mbc);
104
105
private
:
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
rbd::ForwardDynamics
Definition
FD.h:28
rbd::ForwardDynamics::inertiaSubTree
const std::vector< sva::RBInertiad > & inertiaSubTree() const
Definition
FD.h:83
rbd::ForwardDynamics::sComputeH
void sComputeH(const MultiBody &mb, const MultiBodyConfig &mbc)
rbd::ForwardDynamics::computeH
void computeH(const MultiBody &mb, const MultiBodyConfig &mbc)
rbd::ForwardDynamics::computeHIr
void computeHIr(const MultiBody &mb)
rbd::ForwardDynamics::computeC
void computeC(const MultiBody &mb, const MultiBodyConfig &mbc)
rbd::ForwardDynamics::C
const Eigen::VectorXd & C() const
Definition
FD.h:77
rbd::ForwardDynamics::ForwardDynamics
ForwardDynamics(const MultiBody &mb)
rbd::ForwardDynamics::forwardDynamics
void forwardDynamics(const MultiBody &mb, MultiBodyConfig &mbc)
rbd::ForwardDynamics::HIr
const Eigen::MatrixXd & HIr() const
Definition
FD.h:71
rbd::ForwardDynamics::sForwardDynamics
void sForwardDynamics(const MultiBody &mb, MultiBodyConfig &mbc)
rbd::ForwardDynamics::ForwardDynamics
ForwardDynamics()
Definition
FD.h:30
rbd::ForwardDynamics::H
const Eigen::MatrixXd & H() const
Definition
FD.h:65
rbd::ForwardDynamics::sComputeC
void sComputeC(const MultiBody &mb, const MultiBodyConfig &mbc)
rbd::MultiBody
Definition
MultiBody.h:30
rbd
Definition
common.h:21
rbd::MultiBodyConfig
Definition
MultiBodyConfig.h:24
src
RBDyn
RBDyn
FD.h
Generated by
1.9.8