Skip to content

Commit 8ab667a

Browse files
author
earlaud
committed
Properly compute dry run data in ID
1 parent 2d8dfd3 commit 8ab667a

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

include/simple-mpc/inverse-dynamics.hpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ namespace simple_mpc
6666
const size_t nv = model.nv;
6767
const size_t nu = nv - 6;
6868

69-
formulation_.computeProblemData(0, model_handler.getReferenceState().head(nq), Eigen::VectorXd::Zero(nv));
70-
7169
// Prepare contact point task
7270
const size_t n_contacts = model_handler_.getFeetNames().size();
7371
const Eigen::Vector3d normal{0, 0, 1};
@@ -101,7 +99,6 @@ namespace simple_mpc
10199
std::make_shared<tsid::tasks::TaskSE3Equality>("task-base", robot_, model_handler_.getBaseFrameName());
102100
baseTask_->Kp(settings_.kp_base * Eigen::VectorXd::Ones(6));
103101
baseTask_->Kd(2.0 * baseTask_->Kp().cwiseSqrt());
104-
baseTask_->setReference(pose_base_);
105102
formulation_.addMotionTask(*baseTask_, settings_.w_base, 1);
106103

107104
sampleBase_ = tsid::trajectories::TrajectorySample(12, 6);
@@ -111,8 +108,17 @@ namespace simple_mpc
111108
solver_->resize(formulation_.nVar(), formulation_.nEq(), formulation_.nIn());
112109

113110
// Dry run to initialize solver data & output
114-
const tsid::solvers::HQPData & solver_data = formulation_.computeProblemData(
115-
0, model_handler.getReferenceState().head(nq), model_handler.getReferenceState().tail(nv));
111+
const Eigen::VectorXd q_ref = model_handler.getReferenceState().head(nq);
112+
const Eigen::VectorXd v_ref = model_handler.getReferenceState().tail(nv);
113+
std::vector<bool> c_ref(n_contacts);
114+
Eigen::VectorXd f_ref = Eigen::VectorXd::Zero(3 * n_contacts);
115+
for (int i = 0; i < n_contacts; i++)
116+
{
117+
c_ref[i] = true;
118+
f_ref[2 + 3 * i] = weight / n_contacts;
119+
}
120+
setTarget(q_ref, v_ref, v_ref, c_ref, f_ref);
121+
const tsid::solvers::HQPData & solver_data = formulation_.computeProblemData(0, q_ref, v_ref);
116122
last_solution_ = solver_->solve(solver_data);
117123
}
118124

0 commit comments

Comments
 (0)