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/core/fwd.hpp" 20 #include "crocoddyl/multibody/fwd.hpp" 21 #include "crocoddyl/multibody/actions/contact-fwddyn.hpp" 22 #include "crocoddyl/multibody/actions/impulse-fwddyn.hpp" 23 #include "crocoddyl/core/integrator/euler.hpp" 24 #include "crocoddyl/multibody/actuations/floating-base.hpp" 25 #include "crocoddyl/multibody/contacts/contact-3d.hpp" 26 #include "crocoddyl/multibody/impulses/impulse-3d.hpp" 27 #include "crocoddyl/multibody/costs/com-position.hpp" 28 #include "crocoddyl/multibody/costs/frame-translation.hpp" 29 #include "crocoddyl/multibody/costs/frame-velocity.hpp" 30 #include "crocoddyl/multibody/costs/state.hpp" 31 #include "crocoddyl/core/costs/control.hpp" 32 #include "crocoddyl/core/activations/weighted-quadratic.hpp" 33 #include "crocoddyl/core/optctrl/shooting.hpp" 40 const std::string& lh_foot,
const std::string& rh_foot);
43 boost::shared_ptr<crocoddyl::ShootingProblem> createWalkingProblem(
const Eigen::VectorXd& x0,
44 const double stepLength,
const double stepHeight,
45 const double timeStep,
46 const std::size_t stepKnots,
47 const std::size_t supportKnots);
49 std::vector<boost::shared_ptr<crocoddyl::ActionModelAbstract> > createFootStepModels(
50 const double timeStep, Eigen::Vector3d& comPos0, std::vector<Eigen::Vector3d>& feetPos0,
const double stepLength,
51 const double stepHeight,
const std::size_t numKnots,
const std::vector<pinocchio::FrameIndex>& supportFootIds,
52 const std::vector<pinocchio::FrameIndex>& swingFootIds);
54 boost::shared_ptr<ActionModelAbstract> createSwingFootModel(
55 const double timeStep,
const std::vector<pinocchio::FrameIndex>& supportFootIds,
56 const Eigen::Vector3d& comTask = Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity()),
57 const std::vector<crocoddyl::FramePlacement>& swingFootTask = std::vector<crocoddyl::FramePlacement>());
59 boost::shared_ptr<ActionModelAbstract> createFootSwitchModel(
60 const std::vector<pinocchio::FrameIndex>& supportFootIds,
const std::vector<FramePlacement>& swingFootTask,
61 const bool pseudoImpulse =
false);
63 boost::shared_ptr<ActionModelAbstract> createPseudoImpulseModel(
64 const std::vector<pinocchio::FrameIndex>& supportFootIds,
const std::vector<FramePlacement>& swingFootTask);
66 boost::shared_ptr<ActionModelAbstract> createImpulseModel(
const std::vector<pinocchio::FrameIndex>& supportFootIds,
67 const std::vector<FramePlacement>& swingFootTask);
69 const Eigen::VectorXd& get_defaultState()
const;
72 pinocchio::Model rmodel_;
73 pinocchio::Data rdata_;
74 pinocchio::FrameIndex lf_foot_id_, rf_foot_id_, lh_foot_id_, rh_foot_id_;
75 boost::shared_ptr<StateMultibody> state_;
76 boost::shared_ptr<ActuationModelFloatingBase> actuation_;
78 Eigen::VectorXd defaultstate_;
82 #endif // CROCODDYL_MULTIBODY_UTILS_QUADRUPED_GAITS_HPP_