pinocchio  3.3.1
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
rnea-second-order-derivatives.hpp
1 //
2 // Copyright (c) 2017-2019 CNRS INRIA
3 
4 #ifndef __pinocchio_algorithm_rnea_second_order_derivatives_hpp__
5 #define __pinocchio_algorithm_rnea_second_order_derivatives_hpp__
6 
7 #include "pinocchio/container/aligned-vector.hpp"
8 #include "pinocchio/multibody/data.hpp"
9 #include "pinocchio/multibody/model.hpp"
10 
11 namespace pinocchio
12 {
71  template<
72  typename Scalar,
73  int Options,
74  template<typename, int> class JointCollectionTpl,
75  typename ConfigVectorType,
76  typename TangentVectorType1,
77  typename TangentVectorType2,
78  typename Tensor1,
79  typename Tensor2,
80  typename Tensor3,
81  typename Tensor4>
85  const Eigen::MatrixBase<ConfigVectorType> & q,
86  const Eigen::MatrixBase<TangentVectorType1> & v,
87  const Eigen::MatrixBase<TangentVectorType2> & a,
88  const Tensor1 & d2tau_dqdq,
89  const Tensor2 & d2tau_dvdv,
90  const Tensor3 & dtau_dqdv,
91  const Tensor4 & dtau_dadq);
92 
130 
131  template<
132  typename Scalar,
133  int Options,
134  template<typename, int> class JointCollectionTpl,
135  typename ConfigVectorType,
136  typename TangentVectorType1,
137  typename TangentVectorType2>
141  const Eigen::MatrixBase<ConfigVectorType> & q,
142  const Eigen::MatrixBase<TangentVectorType1> & v,
143  const Eigen::MatrixBase<TangentVectorType2> & a)
144  {
145  (data.d2tau_dqdq).setZero();
146  (data.d2tau_dvdv).setZero();
147  (data.d2tau_dqdv).setZero();
148  (data.d2tau_dadq).setZero();
149 
151  model, data, q.derived(), v.derived(), a.derived(), data.d2tau_dqdq, data.d2tau_dvdv,
152  data.d2tau_dqdv, data.d2tau_dadq);
153  }
154 
155 } // namespace pinocchio
156 
157 #include "pinocchio/algorithm/rnea-second-order-derivatives.hxx"
158 
159 #endif // ifndef __pinocchio_algorithm_rnea_second_order_derivatives_hpp__
Main pinocchio namespace.
Definition: treeview.dox:11
void ComputeRNEASecondOrderDerivatives(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType1 > &v, const Eigen::MatrixBase< TangentVectorType2 > &a, const Tensor1 &d2tau_dqdq, const Tensor2 &d2tau_dvdv, const Tensor3 &dtau_dqdv, const Tensor4 &dtau_dadq)
Computes the Second-Order partial derivatives of the Recursive Newton Euler Algorithm w....
Tensor3x d2tau_dvdv
SO Partial derivative of the joint torque vector with respect to the joint velocity.
Definition: data.hpp:552
Tensor3x d2tau_dqdq
SO Partial derivative of the joint torque vector with respect to the joint configuration.
Definition: data.hpp:548
Tensor3x d2tau_dqdv
SO Cross-Partial derivative of the joint torque vector with respect to the joint configuration/veloci...
Definition: data.hpp:556
Tensor3x d2tau_dadq
SO Cross-Partial derivative of the joint torque vector with respect to the joint acceleration/configu...
Definition: data.hpp:562