Skip to content

Commit d6ebfb9

Browse files
author
earlaud
committed
TargetContactForce now a list of vector instead of matrices
1 parent 5d1ce4a commit d6ebfb9

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

examples/talos_kinodynamics.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@
235235
xs_interp = interpolator.interpolateLinear(delay, dt_mpc, xss)
236236
acc_interp = interpolator.interpolateLinear(delay, dt_mpc, ddqs)
237237
force_interp = interpolator.interpolateLinear(delay, dt_mpc, forces).reshape((2,6))
238+
force_interp = [force_interp[0, :], force_interp[1, :]]
238239

239240
q_interp = xs_interp[:mpc.getModelHandler().getModel().nq]
240241
v_interp = xs_interp[mpc.getModelHandler().getModel().nq:]

include/simple-mpc/inverse-dynamics.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ namespace simple_mpc
2626
class KinodynamicsID
2727
{
2828
public:
29-
typedef Eigen::Matrix<double, Eigen::Dynamic, 3> MatrixN3d;
29+
typedef Eigen::VectorXd TargetContactForce;
30+
// typedef Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 6, 1> TargetContactForce;
3031

3132
struct Settings
3233
{
@@ -61,7 +62,7 @@ namespace simple_mpc
6162
const Eigen::Ref<const Eigen::VectorXd> & v_target,
6263
const Eigen::Ref<const Eigen::VectorXd> & a_target,
6364
const std::vector<bool> & contact_state_target,
64-
const Eigen::Ref<const MatrixN3d> & f_target);
65+
const std::vector<TargetContactForce> & f_target);
6566

6667
void solve(
6768
const double t,

src/inverse-dynamics.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void KinodynamicsID::setTarget(
122122
const Eigen::Ref<const Eigen::VectorXd> & v_target,
123123
const Eigen::Ref<const Eigen::VectorXd> & a_target,
124124
const std::vector<bool> & contact_state_target,
125-
const Eigen::Ref<const MatrixN3d> & f_target)
125+
const std::vector<TargetContactForce> & f_target)
126126
{
127127
data_handler_.updateInternalData(q_target, v_target, false);
128128

@@ -151,11 +151,11 @@ void KinodynamicsID::setTarget(
151151
switch (model_handler_.getFootType(i))
152152
{
153153
case RobotModelHandler::FootType::POINT: {
154-
std::static_pointer_cast<tsid::contacts::ContactPoint>(tsid_contacts[i])->setForceReference(f_target.row(i));
154+
std::static_pointer_cast<tsid::contacts::ContactPoint>(tsid_contacts[i])->setForceReference(f_target.at(i));
155155
break;
156156
}
157-
case RobotModelHandler::FootType::SIX_D: {
158-
std::static_pointer_cast<tsid::contacts::Contact6d>(tsid_contacts[i])->setForceReference(f_target.row(i));
157+
case RobotModelHandler::FootType::QUAD: {
158+
std::static_pointer_cast<tsid::contacts::Contact6d>(tsid_contacts[i])->setForceReference(f_target.at(i));
159159
break;
160160
}
161161
default: {

tests/inverse_dynamics.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ BOOST_AUTO_TEST_CASE(KinodynamicsID_postureTask)
5757

5858
solver.setTarget(
5959
q_target, Eigen::VectorXd::Zero(model_handler.getModel().nv), Eigen::VectorXd::Zero(model_handler.getModel().nv),
60-
{false, false, false, false}, Eigen::MatrixXd::Zero(4, 3));
60+
{false, false, false, false}, {});
6161

6262
double t = 0;
6363
Eigen::VectorXd q = solo_q_start(model_handler);
@@ -110,12 +110,12 @@ BOOST_AUTO_TEST_CASE(KinodynamicsID_contact)
110110
.set_w_contact_force(1.0));
111111

112112
const Eigen::VectorXd q_target = model_handler.getReferenceState().head(model_handler.getModel().nq);
113-
Eigen::MatrixXd f_target = Eigen::MatrixXd::Zero(4, 3);
114-
f_target(0, 2) = model_handler.getMass() * 9.81 / 4;
115-
f_target(1, 2) = model_handler.getMass() * 9.81 / 4;
116-
f_target(2, 2) = model_handler.getMass() * 9.81 / 4;
117-
f_target(3, 2) = model_handler.getMass() * 9.81 / 4;
118-
113+
std::vector<KinodynamicsID::TargetContactForce> f_target;
114+
for (int i = 0; i < 4; i++)
115+
{
116+
f_target.push_back(KinodynamicsID::TargetContactForce::Zero(3));
117+
f_target[i][2] = model_handler.getMass() * 9.81 / 4;
118+
}
119119
solver.setTarget(
120120
q_target, Eigen::VectorXd::Zero(model_handler.getModel().nv), Eigen::VectorXd::Zero(model_handler.getModel().nv),
121121
{true, true, true, true}, f_target);

0 commit comments

Comments
 (0)