Skip to content

Commit 50ff095

Browse files
author
earlaud
committed
Contact position computed with measured data, not target
1 parent b96ddeb commit 50ff095

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

include/simple-mpc/inverse-dynamics.hpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ namespace simple_mpc
155155
formulation_.addRigidContact(tsid_contacts[i], settings_.w_contact_force, settings_.w_contact_motion, 0);
156156
}
157157
tsid_contacts[i].setForceReference(f_target.segment(i * 3, 3));
158-
tsid_contacts[i].setReference(data_handler_.getFootPose(i));
159158
active_tsid_contacts_[i] = true;
160159
}
161160
else
@@ -173,6 +172,16 @@ namespace simple_mpc
173172
void
174173
solve(const double t, const Eigen::VectorXd & q_meas, const Eigen::VectorXd & v_meas, Eigen::VectorXd & tau_res)
175174
{
175+
// Update contact position based on the real robot foot placement
176+
data_handler_.updateInternalData(q_meas, v_meas, false);
177+
for (std::size_t i = 0; i < active_tsid_contacts_.size(); i++)
178+
{
179+
if (active_tsid_contacts_[i])
180+
{
181+
tsid_contacts[i].setReference(data_handler_.getFootPose(i));
182+
}
183+
}
184+
176185
const tsid::solvers::HQPData & solver_data_ = formulation_.computeProblemData(t, q_meas, v_meas);
177186
last_solution_ = solver_->solve(solver_data_);
178187
tau_res = formulation_.getActuatorForces(last_solution_);

0 commit comments

Comments
 (0)