Skip to content

Commit 2deed58

Browse files
committed
Change terminal constraint for jump
1 parent 9da8e74 commit 2deed58

File tree

2 files changed

+11
-31
lines changed

2 files changed

+11
-31
lines changed

src/fulldynamics.cpp

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
#include "aligator/modelling/dynamics/multibody-constraint-fwd.hpp"
55
#include <aligator/modelling/dynamics/integrator-semi-euler.hpp>
6-
#include <aligator/modelling/multibody/center-of-mass-translation.hpp>
76
#include <aligator/modelling/multibody/centroidal-momentum.hpp>
87
#include <aligator/modelling/multibody/contact-force.hpp>
98
#include <aligator/modelling/multibody/dcm-position.hpp>
@@ -26,7 +25,6 @@ namespace simple_mpc
2625
using FrameTranslationResidual = FrameTranslationResidualTpl<double>;
2726
using FrameVelocityResidual = FrameVelocityResidualTpl<double>;
2827
using DCMPositionResidual = DCMPositionResidualTpl<double>;
29-
using CenterOfMassTranslationResidual = CenterOfMassTranslationResidualTpl<double>;
3028
using IntegratorSemiImplEuler = dynamics::IntegratorSemiImplEulerTpl<double>;
3129

3230
FullDynamicsOCP::FullDynamicsOCP(const FullDynamicsSettings & settings, const RobotModelHandler & model_handler)
@@ -423,9 +421,9 @@ namespace simple_mpc
423421

424422
term_cost.addCost(
425423
"state_cost", QuadraticStateCost(ter_space, nu_, model_handler_.getReferenceState(), settings_.w_x));
426-
/* term_cost.addCost(
424+
term_cost.addCost(
427425
"centroidal_cost",
428-
QuadraticResidualCost(ter_space, cent_mom, settings_.w_cent)); */
426+
QuadraticResidualCost(ter_space, cent_mom, settings_.w_cent * 10));
429427

430428
return term_cost;
431429
}
@@ -436,30 +434,12 @@ namespace simple_mpc
436434
{
437435
throw std::runtime_error("Create problem first!");
438436
}
439-
CenterOfMassTranslationResidual com_cstr =
440-
CenterOfMassTranslationResidual(ndx_, nu_, model_handler_.getModel(), com_ref);
441-
437+
442438
double tau = sqrt(com_ref[2] / 9.81);
443439
DCMPositionResidual dcm_cstr = DCMPositionResidual(ndx_, nu_, model_handler_.getModel(), com_ref, tau);
444440

445441
problem_->addTerminalConstraint(dcm_cstr, EqualityConstraint());
446442

447-
Motion v_ref = Motion::Zero();
448-
for (auto const & name : model_handler_.getFeetNames())
449-
{
450-
FrameVelocityResidual frame_vel = FrameVelocityResidual(
451-
ndx_, nu_, model_handler_.getModel(), v_ref, model_handler_.getFootId(name), pinocchio::LOCAL_WORLD_ALIGNED);
452-
if (settings_.force_size == 6)
453-
problem_->addTerminalConstraint(frame_vel, EqualityConstraint());
454-
else
455-
{
456-
std::vector<int> vel_id = {0, 1, 2};
457-
458-
FunctionSliceXpr vel_slice = FunctionSliceXpr(frame_vel, vel_id);
459-
problem_->addTerminalConstraint(vel_slice, EqualityConstraint());
460-
}
461-
}
462-
463443
terminal_constraint_ = true;
464444
}
465445

src/kinodynamics.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
#include <aligator/modelling/centroidal/centroidal-wrench-cone.hpp>
55
#include <aligator/modelling/dynamics/integrator-semi-euler.hpp>
66
#include <aligator/modelling/dynamics/kinodynamics-fwd.hpp>
7-
#include <aligator/modelling/multibody/center-of-mass-translation.hpp>
87
#include <aligator/modelling/multibody/centroidal-momentum-derivative.hpp>
98
#include <aligator/modelling/multibody/centroidal-momentum.hpp>
109
#include <aligator/modelling/multibody/frame-placement.hpp>
1110
#include <aligator/modelling/multibody/frame-translation.hpp>
1211
#include <aligator/modelling/multibody/frame-velocity.hpp>
12+
#include <aligator/modelling/multibody/dcm-position.hpp>
1313

1414
namespace simple_mpc
1515
{
@@ -23,8 +23,8 @@ namespace simple_mpc
2323
using FramePlacementResidual = FramePlacementResidualTpl<double>;
2424
using FrameTranslationResidual = FrameTranslationResidualTpl<double>;
2525
using FrameVelocityResidual = FrameVelocityResidualTpl<double>;
26-
using CenterOfMassTranslationResidual = CenterOfMassTranslationResidualTpl<double>;
2726
using IntegratorSemiImplEuler = dynamics::IntegratorSemiImplEulerTpl<double>;
27+
using DCMPositionResidual = DCMPositionResidualTpl<double>;
2828

2929
KinodynamicsOCP::KinodynamicsOCP(const KinodynamicsSettings & settings, const RobotModelHandler & model_handler)
3030
: Base(model_handler)
@@ -367,21 +367,21 @@ namespace simple_mpc
367367
{
368368
throw std::runtime_error("Create problem first!");
369369
}
370-
CenterOfMassTranslationResidual com_cstr =
371-
CenterOfMassTranslationResidual(ndx_, nu_, model_handler_.getModel(), com_ref);
370+
double tau = sqrt(com_ref[2] / 9.81);
371+
DCMPositionResidual dcm_cstr = DCMPositionResidual(ndx_, nu_, model_handler_.getModel(), com_ref, tau);
372372

373-
problem_->addTerminalConstraint(com_cstr, EqualityConstraint());
373+
problem_->addTerminalConstraint(dcm_cstr, EqualityConstraint());
374374
terminal_constraint_ = true;
375375
}
376376

377377
void KinodynamicsOCP::updateTerminalConstraint(const Eigen::Vector3d & com_ref)
378378
{
379379
if (terminal_constraint_)
380380
{
381-
CenterOfMassTranslationResidual * CoMres =
382-
problem_->term_cstrs_.getConstraint<CenterOfMassTranslationResidual>(0);
381+
DCMPositionResidual * DCMres =
382+
problem_->term_cstrs_.getConstraint<DCMPositionResidual>(0);
383383

384-
CoMres->setReference(com_ref);
384+
DCMres->setReference(com_ref);
385385
}
386386
}
387387

0 commit comments

Comments
 (0)