From 53baa3287aef029bd089d437fdad621df3f4d6d1 Mon Sep 17 00:00:00 2001 From: Iori Kumagai Date: Wed, 4 Feb 2026 17:50:45 +0900 Subject: [PATCH] [DdpCentroidal] Preserve latest returned value from ddp_solver_ to check whether ddp_solver_->solve() is successfully solved --- include/CCC/DdpCentroidal.h | 3 +++ src/DdpCentroidal.cpp | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/CCC/DdpCentroidal.h b/include/CCC/DdpCentroidal.h index 8375a65..71c4bf4 100644 --- a/include/CCC/DdpCentroidal.h +++ b/include/CCC/DdpCentroidal.h @@ -362,5 +362,8 @@ class DdpCentroidal //! Force scale limits (i.e., limits of \f$\lambda_i\f$ in the order of lower, upper) std::array force_scale_limits_ = {0.0, 1e6}; + + //! Latest returned value from DDP solver + bool ddp_solved_ = false; }; } // namespace CCC diff --git a/src/DdpCentroidal.cpp b/src/DdpCentroidal.cpp index e09b242..404c703 100644 --- a/src/DdpCentroidal.cpp +++ b/src/DdpCentroidal.cpp @@ -226,11 +226,11 @@ Eigen::VectorXd DdpCentroidal::planOnce(const std::function double t = current_time + i * ddp_problem_->dt(); current_u_list.push_back(DdpProblem::InputDimVector::Zero(ddp_problem_->inputDim(t))); } - ddp_solver_->solve(current_time, initial_param.toState(ddp_problem_->mass_), current_u_list); + ddp_solved_ = ddp_solver_->solve(current_time, initial_param.toState(ddp_problem_->mass_), current_u_list); } else { - ddp_solver_->solve(current_time, initial_param.toState(ddp_problem_->mass_), initial_param.u_list); + ddp_solved_ = ddp_solver_->solve(current_time, initial_param.toState(ddp_problem_->mass_), initial_param.u_list); } return ddp_solver_->controlData().u_list[0];