Go to the documentation of this file.
8 int main(
int ,
char ** )
24 model.lowerPositionLimit.head<3>().
fill(-1.);
25 model.upperPositionLimit.head<3>().
fill(1.);
29 Eigen::VectorXd
q(
model.nq);
39 ConfigVectorAD q_ad(
model.nq);
40 q_ad = Eigen::Map<ConfigVectorAD>(
static_cast<std::vector<ADScalar>
>(cs_q).
data(),
model.nq, 1);
44 ad_data.M.triangularView<Eigen::StrictlyLower>() =
45 ad_data.M.transpose().triangularView<Eigen::StrictlyLower>();
47 for (Eigen::DenseIndex j = 0; j <
model.nv; ++j)
49 for (Eigen::DenseIndex
i = 0;
i <
model.nv; ++
i)
51 M_ad(
i, j) = ad_data.M(
i, j);
55 ::casadi::Function eval_crba(
"eval_crba", ::casadi::SXVector{cs_q}, ::casadi::SXVector{M_ad});
58 std::vector<double> q_vec((
size_t)
model.nq);
59 Eigen::Map<Eigen::VectorXd>(q_vec.data(),
model.nq, 1) =
q;
61 ::casadi::DM M_res = eval_crba(::casadi::DMVector{q_vec})[0];
63 Eigen::Map<Data::MatrixXs>(
static_cast<std::vector<double>
>(M_res).
data(),
model.nv,
model.nv);
67 data.M.triangularView<Eigen::StrictlyLower>() =
68 data.M.transpose().triangularView<Eigen::StrictlyLower>();
71 std::cout <<
"pinocchio double:\n" <<
"\tM =\n" <<
data.M << std::endl;
72 std::cout <<
"pinocchio CasADi:\n" <<
"\tM =\n" << M_mat.transpose() << std::endl;
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Options > MatrixXs
void sym(const Eigen::MatrixBase< MatrixDerived > &eig_mat, std::string const &name)
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...
void humanoidRandom(ModelTpl< Scalar, Options, JointCollectionTpl > &model, bool usingFF=true, bool mimic=false)
Create a humanoid kinematic tree with 6-DOF limbs and random joint placements.
void randomConfiguration(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &lowerLimits, const Eigen::MatrixBase< ConfigVectorIn2 > &upperLimits, const Eigen::MatrixBase< ReturnType > &qout)
Generate a configuration vector uniformly sampled among provided limits.
DataTpl< context::Scalar, context::Options > Data
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
CppAD::AD< Scalar > ADScalar
pinocchio::ModelTpl< ADScalar > ADModel
VectorXs ConfigVectorType
Dense vectorized version of a joint configuration vector.
ModelTpl< context::Scalar, context::Options > Model
JointCollectionTpl & model
Main pinocchio namespace.
pinocchio
Author(s):
autogenerated on Wed May 28 2025 02:41:15