#pragma once #include #include #include #include #include #include #include #include "ConstraintsManager.h" using namespace DQ_robotics; class QuadraticProgramMotionGenerator { private: using Vector7d = Eigen::Matrix; double speed_factor_; VectorXd q_; VectorXd q_dot_; int n_links_ = 7; Vector7d q_dot_max_ = (Vector7d() << 2.0, 1.0, 1.5, 1.25, 3, 1.5, 3).finished(); Vector7d q_dot_dot_max_ = (Vector7d() << 8, 8, 8, 8, 8, 8, 8).finished(); double n2_ = 1.0; double n1_ = 2000*std::sqrt(n2_); VectorXd N1_ = (VectorXd(7)< solver_; std::unique_ptr constraints_manager_; void _check_speed_factor(const double& speed_factor) const; public: QuadraticProgramMotionGenerator(const double &speed_factor, const Eigen::VectorXd &q_initial, const Eigen::VectorXd &q_dot_initial, const Eigen::VectorXd &q_goal); QuadraticProgramMotionGenerator(const double &speed_factor, const Eigen::VectorXd &q_dot_initial, const Eigen::VectorXd &q_dot_goal); VectorXd compute_new_configuration(const VectorXd& q_goal, const double& T); VectorXd compute_new_configuration_velocities(const VectorXd& q_dot_goal, const double& T); void set_gains(const double& n1, const double& n2); void set_diagonal_gains(const VectorXd& K1, const VectorXd& K2); };