9 #ifndef CROCODDYL_MULTIBODY_UTILS_QUADRUPED_GAITS_HPP_ 10 #define CROCODDYL_MULTIBODY_UTILS_QUADRUPED_GAITS_HPP_ 12 #include <pinocchio/spatial/se3.hpp> 13 #include <pinocchio/multibody/model.hpp> 14 #include <pinocchio/multibody/frame.hpp> 15 #include <pinocchio/algorithm/frames.hpp> 16 #include <pinocchio/algorithm/center-of-mass.hpp> 17 #include <pinocchio/algorithm/kinematics.hpp> 19 #include "crocoddyl/multibody/fwd.hpp" 20 #include "crocoddyl/multibody/actions/contact-fwddyn.hpp" 21 #include "crocoddyl/multibody/actions/impulse-fwddyn.hpp" 22 #include "crocoddyl/core/integrator/euler.hpp" 23 #include "crocoddyl/multibody/actuations/floating-base.hpp" 24 #include "crocoddyl/multibody/contacts/contact-3d.hpp" 25 #include "crocoddyl/multibody/impulses/impulse-3d.hpp" 26 #include "crocoddyl/multibody/costs/com-position.hpp" 27 #include "crocoddyl/multibody/costs/frame-translation.hpp" 28 #include "crocoddyl/multibody/costs/frame-velocity.hpp" 29 #include "crocoddyl/multibody/costs/state.hpp" 30 #include "crocoddyl/multibody/costs/control.hpp" 31 #include "crocoddyl/core/activations/weighted-quadratic.hpp" 32 #include "crocoddyl/core/optctrl/shooting.hpp" 39 const std::string& lh_foot,
const std::string& rh_foot);
42 boost::shared_ptr<crocoddyl::ShootingProblem> createWalkingProblem(
const Eigen::VectorXd& x0,
43 const double stepLength,
const double stepHeight,
44 const double timeStep,
45 const std::size_t stepKnots,
46 const std::size_t supportKnots);
48 std::vector<boost::shared_ptr<crocoddyl::ActionModelAbstract> > createFootStepModels(
49 double timeStep, Eigen::Vector3d& comPos0, std::vector<Eigen::Vector3d>& feetPos0,
double stepLength,
50 double stepHeight, std::size_t numKnots,
const std::vector<pinocchio::FrameIndex>& supportFootIds,
51 const std::vector<pinocchio::FrameIndex>& swingFootIds);
53 boost::shared_ptr<ActionModelAbstract> createSwingFootModel(
54 double timeStep,
const std::vector<pinocchio::FrameIndex>& supportFootIds,
55 const Eigen::Vector3d& comTask = Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity()),
56 const std::vector<crocoddyl::FramePlacement>& swingFootTask = std::vector<crocoddyl::FramePlacement>());
58 boost::shared_ptr<ActionModelAbstract> createFootSwitchModel(
59 const std::vector<pinocchio::FrameIndex>& supportFootIds,
const std::vector<FramePlacement>& swingFootTask,
60 bool pseudoImpulse =
true);
62 boost::shared_ptr<ActionModelAbstract> createPseudoImpulseModel(
63 const std::vector<pinocchio::FrameIndex>& supportFootIds,
const std::vector<FramePlacement>& swingFootTask);
65 boost::shared_ptr<ActionModelAbstract> createImpulseModel(
const std::vector<pinocchio::FrameIndex>& supportFootIds,
66 const std::vector<FramePlacement>& swingFootTask);
68 const Eigen::VectorXd& get_defaultState()
const;
71 pinocchio::Model rmodel_;
72 pinocchio::Data rdata_;
73 pinocchio::FrameIndex lf_foot_id_, rf_foot_id_, lh_foot_id_, rh_foot_id_;
74 boost::shared_ptr<StateMultibody> state_;
75 boost::shared_ptr<ActuationModelFloatingBase> actuation_;
77 Eigen::VectorXd defaultstate_;
81 #endif // CROCODDYL_MULTIBODY_UTILS_QUADRUPED_GAITS_HPP_