10 #include <rbdyn/config.hh>
12 #include <SpaceVecAlg/SpaceVecAlg>
19 struct MultiBodyConfig;
21 using Blocks = std::vector<Block>;
33 const MultiBodyConfig & mbc,
34 const Eigen::Vector3d & com);
45 const MultiBodyConfig & mbc,
46 const Eigen::Vector3d & com,
47 const Eigen::Vector3d & comDot);
82 void computeMatrixDot(
const MultiBody & mb,
84 const Eigen::Vector3d & com,
85 const Eigen::Vector3d & comDot);
92 void computeMatrixAndMatrixDot(
const MultiBody & mb,
94 const Eigen::Vector3d & com,
95 const Eigen::Vector3d & comDot);
98 const Eigen::MatrixXd & matrix()
const;
101 const Eigen::MatrixXd & matrixDot()
const;
122 sva::ForceVecd normalMomentumDot(
const MultiBody & mb,
124 const Eigen::Vector3d & com,
125 const Eigen::Vector3d & comDot);
138 sva::ForceVecd normalMomentumDot(
const MultiBody & mb,
140 const Eigen::Vector3d & com,
141 const Eigen::Vector3d & comDot,
142 const std::vector<sva::MotionVecd> & normalAccB)
const;
154 void sComputeMatrixDot(
const MultiBody & mb,
156 const Eigen::Vector3d & com,
157 const Eigen::Vector3d & comDot);
162 void sComputeMatrixAndMatrixDot(
const MultiBody & mb,
164 const Eigen::Vector3d & com,
165 const Eigen::Vector3d & comDot);
175 sva::ForceVecd sNormalMomentumDot(
const MultiBody & mb,
177 const Eigen::Vector3d & com,
178 const Eigen::Vector3d & comDot);
183 sva::ForceVecd sNormalMomentumDot(
const MultiBody & mb,
185 const Eigen::Vector3d & com,
186 const Eigen::Vector3d & comDot,
187 const std::vector<sva::MotionVecd> & normalAccB)
const;
193 Eigen::MatrixXd cmMat_;
194 Eigen::MatrixXd cmMatDot_;
196 std::vector<Jacobian> jacVec_;
197 std::vector<Blocks> blocksVec_;
198 std::vector<Eigen::MatrixXd> jacWork_;
199 std::vector<double> bodiesWeight_;
200 std::vector<sva::MotionVecd> normalAcc_;
212 const Eigen::Vector3d & com);
221 const Eigen::Vector3d & com,
222 const Eigen::Vector3d & comDot);