diff --git a/trajopt_sco/include/trajopt_sco/osqp_interface.hpp b/trajopt_sco/include/trajopt_sco/osqp_interface.hpp index 49fb9902..739b3a16 100644 --- a/trajopt_sco/include/trajopt_sco/osqp_interface.hpp +++ b/trajopt_sco/include/trajopt_sco/osqp_interface.hpp @@ -21,6 +21,11 @@ struct OSQPModelConfig : public ModelConfig OSQPSettings settings{}; }; +struct csc_delete +{ + void operator()(csc* matrix); +}; + /** * OSQPModel uses the BSD solver OSQP to solve a linearly constrained QP. * OSQP solves a problem in the form: @@ -60,8 +65,8 @@ class OSQPModel : public Model ConstraintTypeVector cnt_types_; /**< constraints types */ DblVec solution_; /**< optimizizer's solution for current model */ - std::unique_ptr P_; /**< Takes ownership of OSQPData.P to avoid having to deallocate manually */ - std::unique_ptr A_; /**< Takes ownership of OSQPData.A to avoid having to deallocate manually */ + std::unique_ptr P_; /**< Takes ownership of OSQPData.P to avoid having to deallocate manually */ + std::unique_ptr A_; /**< Takes ownership of OSQPData.A to avoid having to deallocate manually */ std::vector P_row_indices_; /**< row indices for P, CSC format */ std::vector P_column_pointers_; /**< column pointers for P, CSC format */ DblVec P_csc_data_; /**< P values in CSC format */ @@ -104,4 +109,6 @@ class OSQPModel : public Model void writeToFile(const std::string& fname) const override; VarVector getVars() const override; }; + + } // namespace sco diff --git a/trajopt_sco/src/osqp_interface.cpp b/trajopt_sco/src/osqp_interface.cpp index cdb7e6f3..641284e2 100644 --- a/trajopt_sco/src/osqp_interface.cpp +++ b/trajopt_sco/src/osqp_interface.cpp @@ -1,3 +1,4 @@ +#include #include TRAJOPT_IGNORE_WARNINGS_PUSH #include @@ -385,4 +386,7 @@ void OSQPModel::writeToFile(const std::string& fname) const } outStream << "End"; } + +void csc_delete::operator()(csc* c) { free(c); } + } // namespace sco