Skip to content

Commit f42ec7f

Browse files
committed
refactored trajectory spread of Ipm variables
1 parent 7be7c49 commit f42ec7f

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

ocs2_ipm/src/IpmSolver.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,14 @@ void IpmSolver::runImpl(scalar_t initTime, const vector_t& initState, scalar_t f
210210
scalar_t barrierParam = settings_.initialBarrierParameter;
211211
vector_array_t slackStateIneq, slackStateInputIneq, dualStateIneq, dualStateInputIneq;
212212
if (!slackIneqTrajectory_.timeTrajectory.empty()) {
213+
const auto& oldModeSchedule = primalSolution_.modeSchedule_;
213214
const auto& newModeSchedule = this->getReferenceManager().getModeSchedule();
214-
std::tie(slackStateIneq, slackStateInputIneq) = ipm::interpolateInteriorPointTrajectory(
215-
primalSolution_.modeSchedule_, newModeSchedule, timeDiscretization, std::move(slackIneqTrajectory_));
216-
std::tie(dualStateIneq, dualStateInputIneq) = ipm::interpolateInteriorPointTrajectory(
217-
primalSolution_.modeSchedule_, newModeSchedule, timeDiscretization, std::move(dualIneqTrajectory_));
215+
std::ignore = trajectorySpread(oldModeSchedule, newModeSchedule, slackIneqTrajectory_);
216+
std::ignore = trajectorySpread(oldModeSchedule, newModeSchedule, dualIneqTrajectory_);
217+
std::tie(slackStateIneq, slackStateInputIneq) =
218+
ipm::interpolateInteriorPointTrajectory(oldModeSchedule, newModeSchedule, timeDiscretization, std::move(slackIneqTrajectory_));
219+
std::tie(dualStateIneq, dualStateInputIneq) =
220+
ipm::interpolateInteriorPointTrajectory(oldModeSchedule, newModeSchedule, timeDiscretization, std::move(dualIneqTrajectory_));
218221
} else {
219222
slackStateIneq.resize(timeDiscretization.size());
220223
slackStateInputIneq.resize(timeDiscretization.size() - 1);

ocs2_ipm/src/IpmTrajectoryAdjustment.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,6 @@ std::pair<vector_array_t, vector_array_t> interpolateInteriorPointTrajectory(con
112112
DualSolution&& oldDualSolution) {
113113
const auto oldTimeTrajectory = oldDualSolution.timeTrajectory;
114114
const auto oldPostEventIndices = oldDualSolution.postEventIndices;
115-
116-
if (!oldTimeTrajectory.empty()) {
117-
std::ignore = trajectorySpread(oldModeSchedule, newModeSchedule, oldDualSolution);
118-
}
119-
120115
const auto newTimeTrajectory = toInterpolationTime(time);
121116
const auto newPostEventIndices = toPostEventIndices(time);
122117

0 commit comments

Comments
 (0)