diff --git a/python/bezier_com_traj.cpp b/python/bezier_com_traj.cpp index 5f757c5da0a8effabe7429065a9433b7b52a6724..3cd2cac5347911dabe4017d7ca3c6214ef30136d 100644 --- a/python/bezier_com_traj.cpp +++ b/python/bezier_com_traj.cpp @@ -373,6 +373,7 @@ struct DummyPath{ typedef std::pair<Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic>, Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> > linear_points_t; +typedef Eigen::Matrix<real, 3, Eigen::Dynamic> point_list_t; struct MatrixVector @@ -403,6 +404,19 @@ MatrixVector* computeEndEffectorVelocityCostPython(const ProblemData& pData, con return res; } + +MatrixVector* computeEndEffectorDistanceCostPython(const ProblemData& pData,const double time,const int numPoints,point_list_t pts_l){ + std::vector<bezier_t::point_t> pi = computeConstantWaypoints(pData,time); + // transform the matrice 3xN in a std::vector<point3_t> of size N : + std::vector<point3_t> pts_path; + for(size_t c = 0 ; c < pts_l.cols() ; ++c){ + pts_path.push_back(pts_l.block<3,1>(0,c)); + } + MatrixVector* res = new MatrixVector(); + res->res =computeDistanceCostFunction(numPoints,pData,time,pts_path); + return res; +} + Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> computeEndEffectorConstantWaypoints(const ProblemData& pData, const double time){ std::vector<bezier_t::point_t> pi = computeConstantWaypoints(pData,time); Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> res (3, pi.size()); @@ -535,6 +549,7 @@ BOOST_PYTHON_MODULE(hpp_bezier_com_traj) def("computeEndEffector", &computeEndEffector, return_value_policy<manage_new_object>()); def("computeEndEffectorConstraints", &computeEndEffectorConstraintsPython, return_value_policy<manage_new_object>()); def("computeEndEffectorVelocityCost", &computeEndEffectorVelocityCostPython, return_value_policy<manage_new_object>()); + def("computeEndEffectorDistanceCost", &computeEndEffectorDistanceCostPython, return_value_policy<manage_new_object>()); def("computeEndEffectorConstantWaypoints", &computeEndEffectorConstantWaypoints);