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 May 28 2025 02:41:22