pinocchio 4.1.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Loading...
Searching...
No Matches
impulse-dynamics-derivatives.hpp
1//
2// Copyright (c) 2020 CNRS INRIA
3//
4
5#pragma once
6
7// IWYU pragma: begin_keep
8#include <cassert>
9#include <cstddef>
10#include <vector>
11
12#include <Eigen/Core>
13#include <boost/fusion/container/vector.hpp>
14
15#include "pinocchio/macros.hpp"
16#include "pinocchio/eigen-common.hpp"
17#include "pinocchio/unsupported.hpp"
18
19#include "pinocchio/utils/check.hpp"
20
21#include "pinocchio/math.hpp"
22
23#include "pinocchio/spatial.hpp"
24
25#include "pinocchio/multibody.hpp"
26#include "pinocchio/multibody/joint.hpp"
27
28#include "pinocchio/constraints.hpp"
29#include "pinocchio/algorithm/check.hpp"
30#include "pinocchio/algorithm/constrained-dynamics-derivatives.hpp"
31#include "pinocchio/algorithm/jacobian.hpp"
32#include "pinocchio/algorithm/proximal.hpp"
33#include "pinocchio/algorithm/constraint-cholesky.hpp"
34// IWYU pragma: end_keep
35
36namespace pinocchio
37{
38
39 template<
40 typename Scalar,
41 int Options,
42 template<typename, int> class JointCollectionTpl,
43 class ConstraintModelAllocator,
44 class ConstraintDataAllocator,
45 typename MatrixType1,
46 typename MatrixType2,
47 typename MatrixType3,
48 typename MatrixType4>
49 PINOCCHIO_UNSUPPORTED_MESSAGE("The API will change towards more flexibility")
50 inline void computeImpulseDynamicsDerivatives(
51 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
52 DataTpl<Scalar, Options, JointCollectionTpl> & data,
53 const std::vector<RigidConstraintModelTpl<Scalar, Options>, ConstraintModelAllocator> &
54 contact_models,
55 std::vector<RigidConstraintDataTpl<Scalar, Options>, ConstraintDataAllocator> & contact_data,
56 const Scalar r_coeff,
57 const ProximalSettingsTpl<Scalar> & settings,
58 const Eigen::MatrixBase<MatrixType1> & dvimpulse_partial_dq,
59 const Eigen::MatrixBase<MatrixType2> & dvimpulse_partial_dv,
60 const Eigen::MatrixBase<MatrixType3> & impulse_partial_dq,
61 const Eigen::MatrixBase<MatrixType4> & impulse_partial_dv);
62
63 template<
64 typename Scalar,
65 int Options,
66 template<typename, int> class JointCollectionTpl,
67 class ConstraintModelAllocator,
68 class ConstraintDataAllocator>
69 PINOCCHIO_UNSUPPORTED_MESSAGE("The API will change towards more flexibility")
70 inline void computeImpulseDynamicsDerivatives(
71 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
72 DataTpl<Scalar, Options, JointCollectionTpl> & data,
73 const std::vector<RigidConstraintModelTpl<Scalar, Options>, ConstraintModelAllocator> &
74 contact_models,
75 std::vector<RigidConstraintDataTpl<Scalar, Options>, ConstraintDataAllocator> & contact_data,
76 const Scalar r_coeff,
77 const ProximalSettingsTpl<Scalar> & settings)
78 {
79 computeImpulseDynamicsDerivatives(
80 model, data, contact_models, contact_data, r_coeff, settings, data.ddq_dq, data.ddq_dv,
81 data.dlambda_dq, data.dlambda_dv);
82 };
83
84} // namespace pinocchio
85
86// IWYU pragma: begin_exports
87#include "pinocchio/src/algorithm/impulse-dynamics-derivatives.hxx"
88// IWYU pragma: end_exports
Main pinocchio namespace.
Definition treeview.dox:11