Go to the documentation of this file.
22 #include <benchmark/benchmark.h>
28 void SetUp(benchmark::State & st)
32 const std::string RF =
"RLEG_LINK6";
34 const std::string LF =
"LLEG_LINK6";
37 ci_RF_6D = std::make_unique<pinocchio::RigidConstraintModel>(
39 ci_LF_6D = std::make_unique<pinocchio::RigidConstraintModel>(
44 contact_models_6D.clear();
45 contact_models_6D.push_back(*
ci_RF_6D);
47 contact_data_6D.clear();
52 contact_models_6D6D.clear();
53 contact_models_6D6D.push_back(*
ci_RF_6D);
54 contact_models_6D6D.push_back(*
ci_LF_6D);
56 contact_data_6D6D.clear();
76 std::unique_ptr<pinocchio::RigidConstraintModel>
ci_RF_6D;
77 std::unique_ptr<pinocchio::RigidConstraintModel>
ci_LF_6D;
107 const Eigen::VectorXd & q,
108 const Eigen::VectorXd &
v,
109 const Eigen::VectorXd &
tau)
144 const Eigen::VectorXd & q,
145 const Eigen::VectorXd &
v,
146 const Eigen::VectorXd &
tau,
166 const Eigen::VectorXd & q,
167 const Eigen::VectorXd &
v,
168 const Eigen::VectorXd &
tau,
190 const Eigen::VectorXd & q,
191 const Eigen::VectorXd &
v,
192 const Eigen::VectorXd &
tau,
223 benchmark::State & st)
229 contact_chol_empty,
model,
data, contact_models_empty, contact_data_empty);
240 contact.inverse(H_inverse);
244 benchmark::State & st)
247 contact_chol_empty.compute(
model,
data, contact_models_empty, contact_data_empty);
248 Eigen::MatrixXd H_inverse(contact_chol_empty.size(), contact_chol_empty.size());
262 const Eigen::VectorXd & q,
263 const Eigen::VectorXd &
v,
264 const Eigen::VectorXd &
tau,
323 contact_chol_6D,
model,
data, contact_models_6D, contact_data_6D);
334 contact_chol_6D.compute(
model,
data, contact_models_6D, contact_data_6D);
335 Eigen::MatrixXd H_inverse(contact_chol_6D.size(), contact_chol_6D.size());
361 const Eigen::MatrixXd &
J,
362 const Eigen::MatrixXd & MJtJ_inv)
370 Eigen::MatrixXd
J(contact_chol_6D.constraintDim(),
model.nv);
373 Eigen::MatrixXd MJtJ_inv(
374 model.nv + contact_chol_6D.constraintDim(),
model.nv + contact_chol_6D.constraintDim());
377 Eigen::VectorXd gamma(contact_chol_6D.constraintDim());
382 model,
data, ci_RF_6D->joint1_id, ci_RF_6D->reference_frame,
J.middleRows<6>(0));
432 benchmark::State & st)
438 contact_chol_6D6D,
model,
data, contact_models_6D6D, contact_data_6D6D);
447 benchmark::State & st)
450 contact_chol_6D6D.compute(
model,
data, contact_models_6D6D, contact_data_6D6D);
451 Eigen::MatrixXd H_inverse(contact_chol_6D6D.size(), contact_chol_6D6D.size());
475 benchmark::State & st)
477 Eigen::MatrixXd
J(contact_chol_6D6D.constraintDim(),
model.nv);
480 Eigen::MatrixXd MJtJ_inv(
481 model.nv + contact_chol_6D6D.constraintDim(),
model.nv + contact_chol_6D6D.constraintDim());
484 Eigen::VectorXd gamma(contact_chol_6D6D.constraintDim());
507 const Eigen::VectorXd & q,
508 const Eigen::VectorXd &
v,
509 const Eigen::VectorXd &
tau,
511 const Eigen::VectorXd & gamma)
521 Eigen::MatrixXd
J(contact_chol_6D6D.constraintDim(),
model.nv);
524 Eigen::VectorXd gamma(contact_chol_6D6D.constraintDim());
PINOCCHIO_DEPRECATED void getKKTContactDynamicMatrixInverse(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConstraintMatrixType > &J, const Eigen::MatrixBase< KKTMatrixType > &KKTMatrix_inv)
Computes the inverse of the KKT matrix for dynamics with contact constraints.
FrameVector frames
Vector of operational frames registered on the model.
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & constrainedABA(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 std::vector< RigidConstraintModelTpl< Scalar, Options >, ContactModelAllocator > &contact_models, std::vector< RigidConstraintDataTpl< Scalar, Options >, ContactDataAllocator > &contact_datas, ProximalSettingsTpl< Scalar > &settings)
The constrained Articulated Body Algorithm (constrainedABA). It computes constrained forward dynamics...
#define PINOCCHIO_DONT_INLINE
Function attribute to forbid inlining. This is a compiler hint that can be not respected.
Scalar mu
Regularization parameter of the proximal algorithm.
void TearDown(benchmark::State &)
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & pv(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 std::vector< RigidConstraintModelTpl< Scalar, Options >, ContactModelAllocator > &contact_models, std::vector< RigidConstraintDataTpl< Scalar, Options >, ContactDataAllocator > &contact_datas, ProximalSettingsTpl< Scalar > &settings)
The Popov-Vereshchagin algorithm. It computes constrained forward dynamics, aka the joint acceleratio...
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...
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...
void initPvSolver(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const std::vector< RigidConstraintModelTpl< Scalar, Options >, Allocator > &contact_models)
Init the data according to the contact information contained in contact_models.
@ CONTACT_6D
Point contact model.
void SetUp(benchmark::State &)
Structure containing all the settings parameters for the proximal algorithms.
void getJointJacobian(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const DataTpl< Scalar, Options, JointCollectionTpl > &data, const JointIndex joint_id, const ReferenceFrame reference_frame, const Eigen::MatrixBase< Matrix6Like > &J)
Computes the Jacobian of a specific joint frame expressed in one of the pinocchio::ReferenceFrame opt...
FrameIndex getFrameId(const std::string &name, const FrameType &type=(FrameType)(JOINT|FIXED_JOINT|BODY|OP_FRAME|SENSOR)) const
Returns the index of a frame given by its name.
const PINOCCHIO_DEPRECATED DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & forwardDynamics(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 Eigen::MatrixBase< ConstraintMatrixType > &J, const Eigen::MatrixBase< DriftVectorType > &gamma, const Scalar inv_damping=0.)
Compute the forward dynamics with contact constraints. Internally, pinocchio::computeAllTerms is call...
void initConstraintDynamics(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const std::vector< RigidConstraintModelTpl< Scalar, Options >, Allocator > &contact_models)
Init the forward dynamics data according to the contact information contained in contact_models.
#define PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(T)
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.
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & contactABA(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 std::vector< RigidConstraintModelTpl< Scalar, Options >, ModelAllocator > &contact_models, std::vector< RigidConstraintDataTpl< Scalar, Options >, DataAllocator > &contact_data)
ContactCholeskyDecompositionTpl< context::Scalar, context::Options > ContactCholeskyDecomposition
int max_iter
Maximal number of iterations.
void computeAllTerms(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType > &v)
Computes efficiently all the terms needed for dynamic simulation. It is equivalent to the call at the...
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & constraintDynamics(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 std::vector< RigidConstraintModelTpl< Scalar, Options >, ConstraintModelAllocator > &contact_models, std::vector< RigidConstraintDataTpl< Scalar, Options >, ConstraintDataAllocator > &contact_datas, ProximalSettingsTpl< Scalar > &settings)
Computes the forward dynamics with contact constraints according to a given list of contact informati...
pinocchio
Author(s):
autogenerated on Wed Apr 16 2025 02:41:51