2#ifdef ALIGATOR_WITH_PINOCCHIO
11void exposeFreeFwdDynamics() {
12 using namespace aligator::dynamics;
17 using MultibodyFreeFwdData = MultibodyFreeFwdDataTpl<Scalar>;
18 using MultibodyFreeFwdDynamics = MultibodyFreeFwdDynamicsTpl<Scalar>;
24 bp::class_<MultibodyFreeFwdDynamics, bp::bases<ODEAbstract>>(
25 "MultibodyFreeFwdDynamics",
26 "Free-space forward dynamics on multibodies using Pinocchio's ABA "
28 bp::init<MultibodyPhaseSpace, const context::MatrixXs &>(
29 "Constructor where the actuation matrix is provided.",
30 (
"self"_a,
"space",
"actuation_matrix")))
31 .def(bp::init<MultibodyPhaseSpace>(
32 "Constructor without actuation matrix (assumed to be the (nu,nu) "
35 .add_property(
"ntau", &MultibodyFreeFwdDynamics::ntau,
38 "isUnderactuated", &MultibodyFreeFwdDynamics::isUnderactuated,
39 "Whether the system is underactuated, i.e. if the actuation matrix "
40 "rank is lower than the acceleration vector's dimension.")
41 .add_property(
"actuationMatrixRank",
42 &MultibodyFreeFwdDynamics::getActuationMatrixRank,
43 "Get the rank of the actuation matrix.")
46 bp::register_ptr_to_python<shared_ptr<MultibodyFreeFwdData>>();
48 bp::class_<MultibodyFreeFwdData, bp::bases<ODEData>>(
"MultibodyFreeFwdData",
50 .def_readwrite(
"tau", &MultibodyFreeFwdData::tau_)
51 .def_readwrite(
"dtau_dx", &MultibodyFreeFwdData::dtau_dx_)
52 .def_readwrite(
"dtau_du", &MultibodyFreeFwdData::dtau_du_)
53 .def_readwrite(
"pin_data", &MultibodyFreeFwdData::pin_data_);
dynamics::ContinuousDynamicsDataTpl< Scalar > ODEData
dynamics::ContinuousDynamicsAbstractTpl< Scalar > ContinuousDynamicsAbstract
MultibodyPhaseSpace< Scalar > MultibodyPhaseSpace
dynamics::ODEAbstractTpl< Scalar > ODEAbstract
Continuous dynamics described by differential-algebraic equations (DAEs) .
Data struct for ContinuousDynamicsAbstractTpl.
Base class for ODE dynamics .