timings-derivatives.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2018-2025 CNRS INRIA
3 //
4 
5 #include "model-fixture.hpp"
6 
20 
21 #include <iostream>
22 
24 
25 template<typename Matrix1, typename Matrix2, typename Matrix3>
26 void rnea_fd(
27  const pinocchio::Model & model,
28  pinocchio::Data & data_fd,
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)
35 {
36  Matrix1 & drnea_dq = PINOCCHIO_EIGEN_CONST_CAST(Matrix1, _drnea_dq);
37  Matrix2 & drnea_dv = PINOCCHIO_EIGEN_CONST_CAST(Matrix2, _drnea_dv);
38  Matrix3 & drnea_da = PINOCCHIO_EIGEN_CONST_CAST(Matrix3, _drnea_da);
39 
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;
45 
46  VectorXd tau0 = rnea(model, data_fd, q, v, a);
47 
48  // dRNEA/dq
49  for (int k = 0; k < model.nv; ++k)
50  {
51  v_eps[k] += alpha;
52  integrate(model, q, v_eps, q_plus);
53  tau_plus = rnea(model, data_fd, q_plus, v, a);
54 
55  drnea_dq.col(k) = (tau_plus - tau0) / alpha;
56  v_eps[k] -= alpha;
57  }
58 
59  // dRNEA/dv
60  VectorXd v_plus(v);
61  for (int k = 0; k < model.nv; ++k)
62  {
63  v_plus[k] += alpha;
64  tau_plus = rnea(model, data_fd, q, v_plus, a);
65 
66  drnea_dv.col(k) = (tau_plus - tau0) / alpha;
67  v_plus[k] -= alpha;
68  }
69 
70  // dRNEA/da
71  drnea_da = pinocchio::crba(model, data_fd, q, pinocchio::Convention::WORLD);
72  drnea_da.template triangularView<Eigen::StrictlyLower>() =
73  drnea_da.transpose().template triangularView<Eigen::StrictlyLower>();
74 }
75 
76 void aba_fd(
77  const pinocchio::Model & model,
78  pinocchio::Data & data_fd,
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,
84  pinocchio::Data::RowMatrixXs & daba_dtau)
85 {
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;
91 
92  VectorXd a0 = pinocchio::aba(model, data_fd, q, v, tau, pinocchio::Convention::LOCAL);
93 
94  // dABA/dq
95  for (int k = 0; k < model.nv; ++k)
96  {
97  v_eps[k] += alpha;
98  q_plus = integrate(model, q, v_eps);
99  a_plus = pinocchio::aba(model, data_fd, q_plus, v, tau, pinocchio::Convention::LOCAL);
100 
101  daba_dq.col(k) = (a_plus - a0) / alpha;
102  v_eps[k] -= alpha;
103  }
104 
105  // dABA/dv
106  VectorXd v_plus(v);
107  for (int k = 0; k < model.nv; ++k)
108  {
109  v_plus[k] += alpha;
110  a_plus = pinocchio::aba(model, data_fd, q, v_plus, tau, pinocchio::Convention::LOCAL);
111 
112  daba_dv.col(k) = (a_plus - a0) / alpha;
113  v_plus[k] -= alpha;
114  }
115 
116  // dABA/dtau
117  daba_dtau = computeMinverse(model, data_fd, q);
118 }
119 
121 {
122  void SetUp(benchmark::State & st)
123  {
125  drnea_dq.setZero(model.nv, model.nv);
126  drnea_dv.setZero(model.nv, model.nv);
127  drnea_da.setZero(model.nv, model.nv);
128 
129  daba_dq.setZero(model.nv, model.nv);
130  daba_dv.setZero(model.nv, model.nv);
131  daba_dtau.setZero(model.nv, model.nv);
132 
137  dtau2_dq.setZero();
138  dtau2_dv.setZero();
139  dtau2_dqv.setZero();
140  dtau_dadq.setZero();
141  }
142 
143  PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) drnea_dq;
144  PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) drnea_dv;
145  Eigen::MatrixXd drnea_da;
146 
147  Eigen::MatrixXd daba_dq;
148  Eigen::MatrixXd daba_dv;
150 
155 
156  void TearDown(benchmark::State & st)
157  {
159  }
160 
161  static void GlobalSetUp(const ExtraArgs & extra_args)
162  {
163  ModelFixture::GlobalSetUp(extra_args);
164  }
165 };
166 
167 static void CustomArguments(benchmark::internal::Benchmark * b)
168 {
169  b->MinWarmUpTime(3.);
170 }
171 
172 // FORWARD_KINEMATICS_Q_V_A
173 
175  const pinocchio::Model & model,
177  const Eigen::VectorXd & q,
178  const Eigen::VectorXd & v,
179  const Eigen::VectorXd & a)
180 {
182 }
183 BENCHMARK_DEFINE_F(DerivativesFixture, FORWARD_KINEMATICS_Q_V_A)(benchmark::State & st)
184 {
185  for (auto _ : st)
186  {
188  }
189 }
190 BENCHMARK_REGISTER_F(DerivativesFixture, FORWARD_KINEMATICS_Q_V_A)->Apply(CustomArguments);
191 
192 // FORWARD_KINEMATICS_DERIVATIVES
193 
195  const pinocchio::Model & model,
197  const Eigen::VectorXd & q,
198  const Eigen::VectorXd & v,
199  const Eigen::VectorXd & a)
200 {
202 }
203 BENCHMARK_DEFINE_F(DerivativesFixture, FORWARD_KINEMATICS_DERIVATIVES)(benchmark::State & st)
204 {
205  for (auto _ : st)
206  {
208  }
209 }
210 BENCHMARK_REGISTER_F(DerivativesFixture, FORWARD_KINEMATICS_DERIVATIVES)->Apply(CustomArguments);
211 
212 // RNEA
213 
215  const pinocchio::Model & model,
217  const Eigen::VectorXd & q,
218  const Eigen::VectorXd & v,
219  const Eigen::VectorXd & a)
220 {
221  pinocchio::rnea(model, data, q, v, a);
222 }
223 BENCHMARK_DEFINE_F(DerivativesFixture, RNEA)(benchmark::State & st)
224 {
225  for (auto _ : st)
226  {
227  rneaCall(model, data, q, v, a);
228  }
229 }
231 
232 // COMPUTE_RNEA_DERIVATIVES
233 
235  const pinocchio::Model & model,
237  const Eigen::VectorXd & q,
238  const Eigen::VectorXd & v,
239  const Eigen::VectorXd & a,
240  const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) & drnea_dq,
241  const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) & drnea_dv,
242  const Eigen::MatrixXd & drnea_da)
243 {
244  pinocchio::computeRNEADerivatives(model, data, q, v, a, drnea_dq, drnea_dv, drnea_da);
245 }
246 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_RNEA_DERIVATIVES)(benchmark::State & st)
247 {
248  for (auto _ : st)
249  {
250  computeRNEADerivativesCall(model, data, q, v, a, drnea_dq, drnea_dv, drnea_da);
251  }
252 }
253 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_RNEA_DERIVATIVES)->Apply(CustomArguments);
254 
255 // COMUTE_RNEA_SECOND_ORDER_DERIVATIVES
256 
258  const pinocchio::Model & model,
260  const Eigen::VectorXd & q,
261  const Eigen::VectorXd & v,
262  const Eigen::VectorXd & a,
263  const Tensor3x & dtau2_dq,
264  const Tensor3x & dtau2_dv,
265  const Tensor3x & dtau2_dqv,
266  const Tensor3x & dtau_dadq)
267 {
268  ComputeRNEASecondOrderDerivatives(model, data, q, v, a, dtau2_dq, dtau2_dv, dtau2_dqv, dtau_dadq);
269 }
270 BENCHMARK_DEFINE_F(DerivativesFixture, COMUTE_RNEA_SECOND_ORDER_DERIVATIVES)(benchmark::State & st)
271 {
272  for (auto _ : st)
273  {
275  model, data, q, v, a, dtau2_dq, dtau2_dv, dtau2_dqv, dtau_dadq);
276  }
277 }
278 BENCHMARK_REGISTER_F(DerivativesFixture, COMUTE_RNEA_SECOND_ORDER_DERIVATIVES)
279  ->Apply(CustomArguments);
280 
281 // COMPUTE_RNEA_FD_DERIVATIVES
282 
284  const pinocchio::Model & model,
286  const Eigen::VectorXd & q,
287  const Eigen::VectorXd & v,
288  const Eigen::VectorXd & a,
289  const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) & drnea_dq,
290  const PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) & drnea_dv,
291  const Eigen::MatrixXd & drnea_da)
292 {
293  rnea_fd(model, data, q, v, a, drnea_dq, drnea_dv, drnea_da);
294 }
295 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_RNEA_FD_DERIVATIVES)(benchmark::State & st)
296 {
297  for (auto _ : st)
298  {
299  computeRNEAFDDerivativesCall(model, data, q, v, a, drnea_dq, drnea_dv, drnea_da);
300  }
301 }
302 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_RNEA_FD_DERIVATIVES)->Apply(CustomArguments);
303 
304 // ABA_LOCAL
305 
307  const pinocchio::Model & model,
309  const Eigen::VectorXd & q,
310  const Eigen::VectorXd & v,
311  const Eigen::VectorXd & tau)
312 {
314 }
315 BENCHMARK_DEFINE_F(DerivativesFixture, ABA_LOCAL)(benchmark::State & st)
316 {
317  for (auto _ : st)
318  {
319  abaLocalCall(model, data, q, v, tau);
320  }
321 }
323 
324 // COMPUTE_ABA_DERIVATIVES
325 
327  const pinocchio::Model & model,
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,
334  const pinocchio::Data::RowMatrixXs & daba_dtau)
335 {
336  computeABADerivatives(model, data, q, v, tau, daba_dq, daba_dv, daba_dtau);
337 }
338 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_ABA_DERIVATIVES)(benchmark::State & st)
339 {
340  for (auto _ : st)
341  {
342  computeABADerivativesCall(model, data, q, v, tau, daba_dq, daba_dv, daba_dtau);
343  }
344 }
345 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_ABA_DERIVATIVES)->Apply(CustomArguments);
346 
347 // COMPUTE_ABA_DERIVATIVES_NO_Q_V_TAU
348 
350  const pinocchio::Model & model,
352  const Eigen::MatrixXd & daba_dq,
353  const Eigen::MatrixXd & daba_dv,
354  const pinocchio::Data::RowMatrixXs & daba_dtau)
355 {
356  computeABADerivatives(model, data, daba_dq, daba_dv, daba_dtau);
357 }
358 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_ABA_DERIVATIVES_NO_Q_V_TAU)(benchmark::State & st)
359 {
361  for (auto _ : st)
362  {
363  computeABADerivativesNoQVTauCall(model, data, daba_dq, daba_dv, daba_dtau);
364  }
365 }
366 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_ABA_DERIVATIVES_NO_Q_V_TAU)
367  ->Apply(CustomArguments);
368 
369 // COMPUTE_ABA_FD_DERIVATIVES
370 
372  const pinocchio::Model & model,
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,
379  pinocchio::Data::RowMatrixXs & daba_dtau)
380 {
381  aba_fd(model, data, q, v, tau, daba_dq, daba_dv, daba_dtau);
382 }
383 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_ABA_FD_DERIVATIVES)(benchmark::State & st)
384 {
385  for (auto _ : st)
386  {
387  computeABAFDDerivativesCall(model, data, q, v, tau, daba_dq, daba_dv, daba_dtau);
388  }
389 }
390 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_ABA_FD_DERIVATIVES)->Apply(CustomArguments);
391 
392 // COMPUTE_M_INVERSE_Q
393 
395  const pinocchio::Model & model, pinocchio::Data & data, const Eigen::VectorXd & q)
396 {
398 }
399 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_M_INVERSE_Q)(benchmark::State & st)
400 {
401  for (auto _ : st)
402  {
404  }
405 }
406 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_M_INVERSE_Q)->Apply(CustomArguments);
407 
408 // COMPUTE_M_INVERSE
409 
410 PINOCCHIO_DONT_INLINE static void
412 {
414 }
415 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_M_INVERSE)(benchmark::State & st)
416 {
418  for (auto _ : st)
419  {
421  }
422 }
423 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_M_INVERSE)->Apply(CustomArguments);
424 
425 // COMPUTE_CHOLESKY_M_INVERSE
426 
428  const pinocchio::Model & model,
430  const Eigen::VectorXd & q,
431  Eigen::MatrixXd & Minv)
432 {
436 }
437 BENCHMARK_DEFINE_F(DerivativesFixture, COMPUTE_CHOLESKY_M_INVERSE)(benchmark::State & st)
438 {
439  Eigen::MatrixXd Minv(model.nv, model.nv);
440  Minv.setZero();
441  for (auto _ : st)
442  {
444  }
445 }
446 BENCHMARK_REGISTER_F(DerivativesFixture, COMPUTE_CHOLESKY_M_INVERSE)->Apply(CustomArguments);
447 
PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE
#define PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(D)
Similar to macro PINOCCHIO_EIGEN_PLAIN_TYPE but with guaranty to provite a column major type.
Definition: eigen-macros.hpp:18
Eigen
pinocchio::computeRNEADerivatives
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...
pinocchio::DataTpl
Definition: context/generic.hpp:25
PINOCCHIO_DONT_INLINE
#define PINOCCHIO_DONT_INLINE
Function attribute to forbid inlining. This is a compiler hint that can be not respected.
Definition: include/pinocchio/macros.hpp:53
pinocchio::forwardKinematics
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.
aba_fd
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)
Definition: timings-derivatives.cpp:76
DerivativesFixture::daba_dtau
pinocchio::Data::RowMatrixXs daba_dtau
Definition: timings-derivatives.cpp:149
BENCHMARK_DEFINE_F
BENCHMARK_DEFINE_F(DerivativesFixture, FORWARD_KINEMATICS_Q_V_A)(benchmark
Definition: timings-derivatives.cpp:183
pinocchio::DataTpl::RowMatrixXs
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor|Options > RowMatrixXs
Definition: multibody/data.hpp:99
ModelFixture::model
pinocchio::Model model
Definition: model-fixture.hpp:79
computeABADerivativesCall
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)
Definition: timings-derivatives.cpp:326
ModelFixture::TearDown
void TearDown(benchmark::State &)
Definition: model-fixture.hpp:51
aligned-vector.hpp
DerivativesFixture::daba_dv
Eigen::MatrixXd daba_dv
Definition: timings-derivatives.cpp:148
forwardKinematicsQVACall
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)
Definition: timings-derivatives.cpp:174
computeABADerivativesNoQVTauCall
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)
Definition: timings-derivatives.cpp:349
ModelFixture
Definition: model-fixture.hpp:37
PINOCCHIO_EIGEN_CONST_CAST
#define PINOCCHIO_EIGEN_CONST_CAST(TYPE, OBJ)
Macro for an automatic const_cast.
Definition: eigen-macros.hpp:51
pinocchio::Convention::WORLD
@ WORLD
kinematics.hpp
rnea_fd
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)
Definition: timings-derivatives.cpp:26
DerivativesFixture::TearDown
void TearDown(benchmark::State &st)
Definition: timings-derivatives.cpp:156
rnea-derivatives.hpp
setup.data
data
Definition: cmake/cython/setup.in.py:48
rneaCall
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)
Definition: timings-derivatives.cpp:214
computeABAFDDerivativesCall
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)
Definition: timings-derivatives.cpp:371
pinocchio::crba
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...
computeCholeskyMinverseCall
static PINOCCHIO_DONT_INLINE void computeCholeskyMinverseCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q, Eigen::MatrixXd &Minv)
Definition: timings-derivatives.cpp:427
pinocchio::aba
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...
DerivativesFixture::GlobalSetUp
static void GlobalSetUp(const ExtraArgs &extra_args)
Definition: timings-derivatives.cpp:161
rnea.hpp
aba-derivatives.hpp
b
Vec3f b
ModelFixture::SetUp
void SetUp(benchmark::State &)
Definition: model-fixture.hpp:39
pinocchio::computeMinverse
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.
aba.hpp
anymal-simulation.model
model
Definition: anymal-simulation.py:8
DerivativesFixture::SetUp
void SetUp(benchmark::State &st)
Definition: timings-derivatives.cpp:122
computeForwardKinematicsDerivativesCall
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)
Definition: timings-derivatives.cpp:194
forward-dynamics-derivatives.tau
tau
Definition: forward-dynamics-derivatives.py:25
DerivativesFixture::PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE
PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(Eigen::MatrixXd) drnea_dq
ModelFixture::GlobalSetUp
static void GlobalSetUp(const ExtraArgs &extra_args)
Definition: model-fixture.hpp:55
pinocchio::computeForwardKinematicsDerivatives
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...
joint-configuration.hpp
pinocchio::ComputeRNEASecondOrderDerivatives
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....
pinocchio::Tensor::setZero
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor & setZero()
Definition: tensor.hpp:161
PINOCCHIO_BENCHMARK_MAIN_WITH_SETUP
PINOCCHIO_BENCHMARK_MAIN_WITH_SETUP(DerivativesFixture::GlobalSetUp)
reachable-workspace-with-collisions.alpha
float alpha
Definition: reachable-workspace-with-collisions.py:162
pinocchio::integrate
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.
Definition: joint-configuration.hpp:70
computeMinverseCall
static PINOCCHIO_DONT_INLINE void computeMinverseCall(const pinocchio::Model &model, pinocchio::Data &data)
Definition: timings-derivatives.cpp:411
model-fixture.hpp
urdf.hpp
cartpole.v
v
Definition: cartpole.py:153
computeMinverseQCall
static PINOCCHIO_DONT_INLINE void computeMinverseQCall(const pinocchio::Model &model, pinocchio::Data &data, const Eigen::VectorXd &q)
Definition: timings-derivatives.cpp:394
DerivativesFixture::dtau2_dq
Tensor3x dtau2_dq
Definition: timings-derivatives.cpp:151
DerivativesFixture::dtau_dadq
Tensor3x dtau_dadq
Definition: timings-derivatives.cpp:154
inverse-dynamics._
_
Definition: inverse-dynamics.py:22
q
q
computeRNEAFDDerivativesCall
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)
Definition: timings-derivatives.cpp:283
rnea-second-order-derivatives.hpp
a
Vec3f a
cholesky.hpp
DerivativesFixture::dtau2_dqv
Tensor3x dtau2_dqv
Definition: timings-derivatives.cpp:153
pinocchio::cholesky::decompose
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.
computeRNEASecondOrderDerivativesCall
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)
Definition: timings-derivatives.cpp:257
pinocchio::cholesky::computeMinv
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.
pinocchio::rnea
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...
pinocchio::Convention::LOCAL
@ LOCAL
pinocchio::ModelTpl::nv
int nv
Dimension of the velocity vector space.
Definition: multibody/model.hpp:101
kinematics-derivatives.hpp
computeRNEADerivativesCall
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)
Definition: timings-derivatives.cpp:234
DerivativesFixture::dtau2_dv
Tensor3x dtau2_dv
Definition: timings-derivatives.cpp:152
Tensor3x
pinocchio::Data::Tensor3x Tensor3x
Definition: timings-derivatives.cpp:23
BENCHMARK_REGISTER_F
BENCHMARK_REGISTER_F(DerivativesFixture, FORWARD_KINEMATICS_Q_V_A) -> Apply(CustomArguments)
DerivativesFixture::drnea_da
Eigen::MatrixXd drnea_da
Definition: timings-derivatives.cpp:145
pinocchio::Tensor< Scalar, 3, Options >
pinocchio::python::computeABADerivatives
bp::tuple computeABADerivatives(const context::Model &model, context::Data &data, const context::VectorXs &q, const context::VectorXs &v, const context::VectorXs &tau)
Definition: expose-aba-derivatives.cpp:21
abaLocalCall
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)
Definition: timings-derivatives.cpp:306
sample-models.hpp
pinocchio::ModelTpl< context::Scalar, context::Options >
cartpole.a0
a0
Definition: cartpole.py:155
crba.hpp
CustomArguments
static void CustomArguments(benchmark::internal::Benchmark *b)
Definition: timings-derivatives.cpp:167
ExtraArgs
Store custom command line arguments.
Definition: model-fixture.hpp:24
DerivativesFixture::daba_dq
Eigen::MatrixXd daba_dq
Definition: timings-derivatives.cpp:147
DerivativesFixture
Definition: timings-derivatives.cpp:120


pinocchio
Author(s):
autogenerated on Wed Apr 16 2025 02:41:51