9 #include <rbdyn/config.hh>
15 struct MultiBodyConfig;
50 Jacobian(
const MultiBody & mb,
const std::string & bodyName,
const Eigen::Vector3d & point = Eigen::Vector3d::Zero());
61 const std::string & bodyName,
62 const std::string & refBodyName,
63 const Eigen::Vector3d & point = Eigen::Vector3d::Zero());
98 const Eigen::MatrixXd & vectorJacobian(
const MultiBody & mb,
100 const Eigen::Vector3d & vector);
110 const Eigen::MatrixXd & vectorBodyJacobian(
const MultiBody & mb,
112 const Eigen::Vector3d & vector);
163 sva::MotionVecd normalAcceleration(
const MultiBody & mb,
165 const sva::PTransformd & X_b_p,
166 const sva::MotionVecd & V_b_p)
const;
193 sva::MotionVecd normalAcceleration(
const MultiBody & mb,
195 const std::vector<sva::MotionVecd> & normalAccB,
196 const sva::PTransformd & X_b_p,
197 const sva::MotionVecd & V_b_p)
const;
206 sva::MotionVecd normalAcceleration(
const MultiBody & mb,
208 const std::vector<sva::MotionVecd> & normalAccB)
const;
217 sva::MotionVecd bodyNormalAcceleration(
const MultiBody & mb,
219 const std::vector<sva::MotionVecd> & normalAccB)
const;
228 void translateJacobian(
const Eigen::Ref<const Eigen::MatrixXd> & jac,
230 const Eigen::Vector3d & point,
231 Eigen::MatrixXd & res);
240 void translateBodyJacobian(
const Eigen::Ref<const Eigen::MatrixXd> & jac,
242 const Eigen::Vector3d & point,
243 Eigen::MatrixXd & res);
251 void fullJacobian(
const MultiBody & mb,
const Eigen::Ref<const Eigen::MatrixXd> & jac, Eigen::MatrixXd & res)
const;
260 void addFullJacobian(
const MultiBody & mb,
261 const Eigen::Ref<const Eigen::MatrixXd> & jac,
262 Eigen::MatrixXd & res)
const;
272 void addFullJacobian(
const Blocks & compactPath,
273 const Eigen::Ref<const Eigen::MatrixXd> & jac,
274 Eigen::MatrixXd & res)
const;
282 Eigen::MatrixXd expand(
const rbd::MultiBody & mb,
const Eigen::Ref<const Eigen::MatrixXd> & jac)
const;
291 void expandAdd(
const rbd::MultiBody & mb,
const Eigen::Ref<const Eigen::MatrixXd> & jac, Eigen::MatrixXd & res)
const;
309 void expandAdd(
const Blocks & compactPath,
310 const Eigen::Ref<const Eigen::MatrixXd> & jac,
311 Eigen::MatrixXd & res)
const;
326 return static_cast<int>(jac_.cols());
330 const Eigen::Vector3d &
point()
const
332 return point_.translation();
336 void point(
const Eigen::Vector3d & point)
338 point_ = sva::PTransformd(point);
346 const Eigen::MatrixXd & sJacobian(
const MultiBody & mb,
const MultiBodyConfig & mbc,
const sva::PTransformd & X_0_p);
361 const Eigen::MatrixXd & sVectorJacobian(
const MultiBody & mb,
363 const Eigen::Vector3d & vec);
368 const Eigen::MatrixXd & sVectorBodyJacobian(
const MultiBody & mb,
370 const Eigen::Vector3d & vec);
391 void sTranslateJacobian(
const Eigen::MatrixXd & jac,
393 const Eigen::Vector3d & point,
394 Eigen::MatrixXd & res);
400 void sFullJacobian(
const MultiBody & mb,
const Eigen::MatrixXd & jac, Eigen::MatrixXd & res)
const;
415 sva::MotionVecd sNormalAcceleration(
const MultiBody & mb,
417 const sva::PTransformd & X_b_p,
418 const sva::MotionVecd & V_b_p)
const;
423 sva::MotionVecd sNormalAcceleration(
const MultiBody & mb,
425 const std::vector<sva::MotionVecd> & normalAccB,
426 const sva::PTransformd & X_b_p,
427 const sva::MotionVecd & V_b_p)
const;
447 sva::MotionVecd sNormalAcceleration(
const MultiBody & mb,
449 const std::vector<sva::MotionVecd> & normalAccB)
const;
454 sva::MotionVecd sBodyNormalAcceleration(
const MultiBody & mb,
456 const std::vector<sva::MotionVecd> & normalAccB)
const;
460 const sva::MotionVecd & bodyNNormalAcc,
461 const sva::PTransformd & X_b_p,
462 const sva::MotionVecd & V_b_p)
const;
463 sva::MotionVecd normalAcceleration(
const MultiBodyConfig & mbc,
const sva::MotionVecd & bodyNNormalAcc)
const;
464 sva::MotionVecd bodyNormalAcceleration(
const MultiBodyConfig & mbc,
const sva::MotionVecd & bodyNNormalAcc)
const;
467 std::vector<int> jointsPath_;
468 std::vector<double> jointsSign_;
469 sva::PTransformd point_;
471 Eigen::MatrixXd jac_;
472 Eigen::MatrixXd jacDot_;