Go to the documentation of this file.
25 template<
typename Matrix1,
typename Matrix2,
typename Matrix3>
29 const Eigen::VectorXd & q,
30 const Eigen::VectorXd &
v,
31 const Eigen::VectorXd &
a,
32 const Eigen::MatrixBase<Matrix1> & _drnea_dq,
33 const Eigen::MatrixBase<Matrix2> & _drnea_dv,
34 const Eigen::MatrixBase<Matrix3> & _drnea_da)
40 using namespace Eigen;
41 VectorXd v_eps(VectorXd::Zero(
model.nv));
42 VectorXd q_plus(
model.nq);
43 VectorXd tau_plus(
model.nv);
44 const double alpha = 1e-8;
49 for (
int k = 0; k <
model.nv; ++k)
55 drnea_dq.col(k) = (tau_plus - tau0) /
alpha;
61 for (
int k = 0; k <
model.nv; ++k)
66 drnea_dv.col(k) = (tau_plus - tau0) /
alpha;
72 drnea_da.template triangularView<Eigen::StrictlyLower>() =
73 drnea_da.transpose().template triangularView<Eigen::StrictlyLower>();
79 const Eigen::VectorXd & q,
80 const Eigen::VectorXd &
v,
81 const Eigen::VectorXd &
tau,
82 Eigen::MatrixXd & daba_dq,
83 Eigen::MatrixXd & daba_dv,
86 using namespace Eigen;
87 VectorXd v_eps(VectorXd::Zero(
model.nv));
88 VectorXd q_plus(
model.nq);
89 VectorXd a_plus(
model.nv);
90 const double alpha = 1e-8;
95 for (
int k = 0; k <
model.nv; ++k)
101 daba_dq.col(k) = (a_plus -
a0) /
alpha;
107 for (
int k = 0; k <
model.nv; ++k)
112 daba_dv.col(k) = (a_plus -
a0) /
alpha;
169 b->MinWarmUpTime(3.);
177 const Eigen::VectorXd & q,
178 const Eigen::VectorXd &
v,
179 const Eigen::VectorXd &
a)
197 const Eigen::VectorXd & q,
198 const Eigen::VectorXd &
v,
199 const Eigen::VectorXd &
a)
217 const Eigen::VectorXd & q,
218 const Eigen::VectorXd &
v,
219 const Eigen::VectorXd &
a)
237 const Eigen::VectorXd & q,
238 const Eigen::VectorXd &
v,
239 const Eigen::VectorXd &
a,
242 const Eigen::MatrixXd & drnea_da)
260 const Eigen::VectorXd & q,
261 const Eigen::VectorXd &
v,
262 const Eigen::VectorXd &
a,
275 model,
data,
q,
v,
a, dtau2_dq, dtau2_dv, dtau2_dqv, dtau_dadq);
286 const Eigen::VectorXd & q,
287 const Eigen::VectorXd &
v,
288 const Eigen::VectorXd &
a,
291 const Eigen::MatrixXd & drnea_da)
309 const Eigen::VectorXd & q,
310 const Eigen::VectorXd &
v,
311 const Eigen::VectorXd &
tau)
329 const Eigen::VectorXd & q,
330 const Eigen::VectorXd &
v,
331 const Eigen::VectorXd &
tau,
332 const Eigen::MatrixXd & daba_dq,
333 const Eigen::MatrixXd & daba_dv,
352 const Eigen::MatrixXd & daba_dq,
353 const Eigen::MatrixXd & daba_dv,
374 const Eigen::VectorXd & q,
375 const Eigen::VectorXd &
v,
376 const Eigen::VectorXd &
tau,
377 Eigen::MatrixXd & daba_dq,
378 Eigen::MatrixXd & daba_dv,
430 const Eigen::VectorXd & q,
431 Eigen::MatrixXd & Minv)
#define PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(D)
Similar to macro PINOCCHIO_EIGEN_PLAIN_TYPE but with guaranty to provite a column major type.
void computeRNEADerivatives(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 Eigen::MatrixBase< MatrixType1 > &rnea_partial_dq, const Eigen::MatrixBase< MatrixType2 > &rnea_partial_dv, const Eigen::MatrixBase< MatrixType3 > &rnea_partial_da)
Computes the partial derivatives of the Recursive Newton Euler Algorithms with respect to the joint c...
#define PINOCCHIO_DONT_INLINE
Function attribute to forbid inlining. This is a compiler hint that can be not respected.
void forwardKinematics(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q)
Update the joint placements according to the current joint configuration.
void aba_fd(const pinocchio::Model &model, pinocchio::Data &data_fd, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau, Eigen::MatrixXd &daba_dq, Eigen::MatrixXd &daba_dv, pinocchio::Data::RowMatrixXs &daba_dtau)
pinocchio::Data::RowMatrixXs daba_dtau
BENCHMARK_DEFINE_F(DerivativesFixture, FORWARD_KINEMATICS_Q_V_A)(benchmark
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor|Options > RowMatrixXs
static PINOCCHIO_DONT_INLINE void computeABADerivativesCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau, const Eigen::MatrixXd &daba_dq, const Eigen::MatrixXd &daba_dv, const pinocchio::Data::RowMatrixXs &daba_dtau)
void TearDown(benchmark::State &)
static PINOCCHIO_DONT_INLINE void forwardKinematicsQVACall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
static PINOCCHIO_DONT_INLINE void computeABADerivativesNoQVTauCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::MatrixXd &daba_dq, const Eigen::MatrixXd &daba_dv, const pinocchio::Data::RowMatrixXs &daba_dtau)
#define PINOCCHIO_EIGEN_CONST_CAST(TYPE, OBJ)
Macro for an automatic const_cast.
void rnea_fd(const pinocchio::Model &model, pinocchio::Data &data_fd, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, const Eigen::MatrixBase< Matrix1 > &_drnea_dq, const Eigen::MatrixBase< Matrix2 > &_drnea_dv, const Eigen::MatrixBase< Matrix3 > &_drnea_da)
void TearDown(benchmark::State &st)
static PINOCCHIO_DONT_INLINE void rneaCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
static PINOCCHIO_DONT_INLINE void computeABAFDDerivativesCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau, Eigen::MatrixXd &daba_dq, Eigen::MatrixXd &daba_dv, pinocchio::Data::RowMatrixXs &daba_dtau)
const DataTpl< Scalar, Options, JointCollectionTpl >::MatrixXs & crba(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q, const Convention convention=Convention::LOCAL)
Computes the upper triangular part of the joint space inertia matrix M by using the Composite Rigid B...
static PINOCCHIO_DONT_INLINE void computeCholeskyMinverseCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, Eigen::MatrixXd &Minv)
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & aba(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 > &tau, const Convention convention=Convention::LOCAL)
The Articulated-Body algorithm. It computes the forward dynamics, aka the joint accelerations given t...
static void GlobalSetUp(const ExtraArgs &extra_args)
void SetUp(benchmark::State &)
const DataTpl< Scalar, Options, JointCollectionTpl >::RowMatrixXs & computeMinverse(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q)
Computes the inverse of the joint space inertia matrix using Articulated Body formulation.
void SetUp(benchmark::State &st)
static PINOCCHIO_DONT_INLINE void computeForwardKinematicsDerivativesCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) drnea_dq
static void GlobalSetUp(const ExtraArgs &extra_args)
void computeForwardKinematicsDerivatives(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)
Computes all the terms required to compute the derivatives of the placement, spatial velocity and acc...
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....
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor & setZero()
PINOCCHIO_BENCHMARK_MAIN_WITH_SETUP(DerivativesFixture::GlobalSetUp)
void integrate(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType > &v, const Eigen::MatrixBase< ReturnType > &qout)
Integrate a configuration vector for the specified model for a tangent vector during one unit time.
static PINOCCHIO_DONT_INLINE void computeMinverseCall(const pinocchio::Model &model, pinocchio::Data &data)
static PINOCCHIO_DONT_INLINE void computeMinverseQCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q)
static PINOCCHIO_DONT_INLINE void computeRNEAFDDerivativesCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) &drnea_dq, const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) &drnea_dv, const Eigen::MatrixXd &drnea_da)
const DataTpl< Scalar, Options, JointCollectionTpl >::MatrixXs & decompose(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data)
Compute the Cholesky decomposition of the joint space inertia matrix M contained in data.
static PINOCCHIO_DONT_INLINE void computeRNEASecondOrderDerivativesCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, const Tensor3x &dtau2_dq, const Tensor3x &dtau2_dv, const Tensor3x &dtau2_dqv, const Tensor3x &dtau_dadq)
Mat & computeMinv(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< Mat > &Minv)
Computes the inverse of the joint space inertia matrix M from its Cholesky factorization.
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & rnea(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)
The Recursive Newton-Euler algorithm. It computes the inverse dynamics, aka the joint torques accordi...
int nv
Dimension of the velocity vector space.
static PINOCCHIO_DONT_INLINE void computeRNEADerivativesCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) &drnea_dq, const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) &drnea_dv, const Eigen::MatrixXd &drnea_da)
pinocchio::Data::Tensor3x Tensor3x
BENCHMARK_REGISTER_F(DerivativesFixture, FORWARD_KINEMATICS_Q_V_A) -> Apply(CustomArguments)
bp::tuple computeABADerivatives(const context::Model &model, context::Data &data, const context::VectorXs &q, const context::VectorXs &v, const context::VectorXs &tau)
static PINOCCHIO_DONT_INLINE void abaLocalCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau)
static void CustomArguments(benchmark::internal::Benchmark *b)
pinocchio
Author(s):
autogenerated on Wed Apr 16 2025 02:41:51