polynomial.h
Go to the documentation of this file.
00001 
00027 #ifndef INCLUDE_STOMP_MOVEIT_UTILS_POLYNOMIAL_H_
00028 #define INCLUDE_STOMP_MOVEIT_UTILS_POLYNOMIAL_H_
00029 
00030 #include <stomp_core/utils.h>
00031 #include <moveit/robot_model/robot_model.h>
00032 #include <Eigen/Core>
00033 
00037 namespace stomp_moveit
00038 {
00039 
00043 namespace utils
00044 {
00045 
00049 namespace polynomial
00050 {
00052   struct PolyFitRequest
00053   {
00054     int d;                                          
00055     Eigen::Matrix<double, 2, Eigen::Dynamic>  xy;   
00056     Eigen::Matrix<double, 2, Eigen::Dynamic>  xyfp; 
00057     Eigen::Matrix<double, 2, Eigen::Dynamic>  xyfs; 
00058     Eigen::VectorXd output_domain;                  
00064     bool hasConstraints() const
00065     {
00066       return ((xyfp.cols() > 0) || (xyfs.cols() > 0));
00067     }
00068 
00073     bool hasPositionConstraints() const
00074     {
00075       return (xyfp.cols() > 0);
00076     }
00077 
00082     bool hasSlopeConstraints() const
00083     {
00084       return (xyfs.cols() > 0);
00085     }
00086 
00087   };
00088 
00090   struct PolyFitResults
00091   {
00092     Eigen::VectorXd p;   
00093     Eigen::VectorXd x;   
00094     Eigen::VectorXd y;   
00095     bool successful;     
00096   };
00097 
00098 
00104   PolyFitResults polyFit(const PolyFitRequest &request);
00105 
00118   void generateMinimumDomainValues(const std::vector<const  moveit::core::JointModel*> joint_models, const Eigen::MatrixXd &parameters,
00119                                    Eigen::VectorXd &domain_values);
00120 
00128   void fillVandermondeMatrix(const Eigen::ArrayXd &domain_vals, const int &order, Eigen::MatrixXd &v);
00129 
00140   bool applyPolynomialSmoothing(moveit::core::RobotModelConstPtr robot_model, const std::string& group_name, Eigen::MatrixXd& parameters,
00141                                        int poly_order = 5, double joint_limit_margin = 1e-5);
00142 
00143 } // end of namespace smoothing
00144 } // end of namespace utils
00145 } // end of namespace stomp_moveit
00146 
00147 
00148 #endif /* INCLUDE_STOMP_MOVEIT_UTILS_POLYNOMIAL_H_ */


stomp_moveit
Author(s): Jorge Nicho
autogenerated on Sat Jun 8 2019 19:24:01