Skip to content

Commit 8f60cbb

Browse files
Store OSQPEigenSettings by value
1 parent cf5a48f commit 8f60cbb

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

tesseract_motion_planners/trajopt_ifopt/include/tesseract_motion_planners/trajopt_ifopt/profile/trajopt_ifopt_osqp_solver_profile.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,15 @@ class TrajOptIfoptOSQPSolverProfile : public TrajOptIfoptSolverProfile
5656
using ConstPtr = std::shared_ptr<const TrajOptIfoptOSQPSolverProfile>;
5757

5858
TrajOptIfoptOSQPSolverProfile();
59+
TrajOptIfoptOSQPSolverProfile(TrajOptIfoptOSQPSolverProfile&&) = default;
60+
TrajOptIfoptOSQPSolverProfile& operator=(TrajOptIfoptOSQPSolverProfile&&) = default;
61+
62+
// Delete because OsqpEigen::Settings stores raw pointer
63+
TrajOptIfoptOSQPSolverProfile(const TrajOptIfoptOSQPSolverProfile&) = delete;
64+
TrajOptIfoptOSQPSolverProfile& operator=(const TrajOptIfoptOSQPSolverProfile&) = delete;
5965

6066
/** @brief The OSQP convex solver settings to use */
61-
std::unique_ptr<OsqpEigen::Settings> qp_settings{ nullptr };
67+
OsqpEigen::Settings qp_settings;
6268

6369
/** @brief Optimization parameters */
6470
trajopt_sqp::SQPParameters opt_params{};

tesseract_motion_planners/trajopt_ifopt/include/tesseract_motion_planners/trajopt_ifopt/profile/trajopt_ifopt_profile.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ namespace ifopt
4545
class ConstraintSet;
4646
}
4747

48+
namespace tesseract_planning
49+
{
4850
/** @brief Structure to store TrajOpt IFOPT constrant and cost term infos */
4951
struct TrajOptIfoptTermInfos
5052
{
@@ -62,8 +64,6 @@ struct TrajOptIfoptWaypointInfo
6264
bool fixed{ false };
6365
};
6466

65-
namespace tesseract_planning
66-
{
6767
class TrajOptIfoptPlanProfile : public Profile
6868
{
6969
public:

tesseract_motion_planners/trajopt_ifopt/src/profile/trajopt_ifopt_osqp_solver_profile.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,13 @@ namespace tesseract_planning
9696
{
9797
TrajOptIfoptOSQPSolverProfile::TrajOptIfoptOSQPSolverProfile()
9898
{
99-
qp_settings = std::make_unique<OsqpEigen::Settings>();
100-
qp_settings->setVerbosity(false);
101-
qp_settings->setWarmStart(true);
102-
qp_settings->setPolish(true);
103-
qp_settings->setAdaptiveRho(true);
104-
qp_settings->setMaxIteration(8192);
105-
qp_settings->setAbsoluteTolerance(1e-4);
106-
qp_settings->setRelativeTolerance(1e-6);
99+
qp_settings.setVerbosity(false);
100+
qp_settings.setWarmStart(true);
101+
qp_settings.setPolish(true);
102+
qp_settings.setAdaptiveRho(true);
103+
qp_settings.setMaxIteration(8192);
104+
qp_settings.setAbsoluteTolerance(1e-4);
105+
qp_settings.setRelativeTolerance(1e-6);
107106
}
108107

109108
std::unique_ptr<trajopt_sqp::TrustRegionSQPSolver> TrajOptIfoptOSQPSolverProfile::create(bool verbose) const
@@ -113,8 +112,8 @@ std::unique_ptr<trajopt_sqp::TrustRegionSQPSolver> TrajOptIfoptOSQPSolverProfile
113112

114113
// There seems to be no way to set objects solver_->settings() (OsqpEigen::Settings)
115114
// or solver_->settings()->getSettings() (OSQPSettings) at once
116-
copyOSQPEigenSettings(*qp_solver->solver_->settings(), *qp_settings);
117-
qp_solver->solver_->settings()->setVerbosity((qp_settings->getSettings()->verbose != 0) || verbose);
115+
copyOSQPEigenSettings(*qp_solver->solver_->settings(), qp_settings);
116+
qp_solver->solver_->settings()->setVerbosity((qp_settings.getSettings()->verbose != 0) || verbose);
118117

119118
auto solver = std::make_unique<trajopt_sqp::TrustRegionSQPSolver>(qp_solver);
120119
solver->params = opt_params;

0 commit comments

Comments
 (0)