Skip to content

Commit 030b339

Browse files
author
earlaud
committed
Bind getAccelerations
1 parent 8354e63 commit 030b339

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

bindings/expose-inverse-dynamics.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,18 @@ namespace simple_mpc
1414
const Eigen::Ref<const Eigen::VectorXd> & q_meas,
1515
const Eigen::Ref<const Eigen::VectorXd> & v_meas)
1616
{
17-
Eigen::VectorXd tau_res(v_meas.size());
17+
Eigen::VectorXd tau_res(self.model_handler_.getModel().nv - 6);
1818
self.solve(t, q_meas, v_meas, tau_res);
1919
return tau_res;
2020
}
2121

22+
Eigen::VectorXd getAccelerationsProxy(KinodynamicsID & self)
23+
{
24+
Eigen::VectorXd a(self.model_handler_.getModel().nv - 6);
25+
self.getAccelerations(a);
26+
return a;
27+
}
28+
2229
void exposeInverseDynamics()
2330
{
2431
bp::class_<KinodynamicsID::Settings>("KinodynamicsIDSettings", bp::init<>(bp::args("self")))
@@ -37,7 +44,8 @@ namespace simple_mpc
3744
"KinodynamicsID", bp::init<const simple_mpc::RobotModelHandler &, double, const KinodynamicsID::Settings>(
3845
bp::args("self", "model_handler", "control_dt", "settings")))
3946
.def("setTarget", &KinodynamicsID::setTarget)
40-
.def("solve", &solveProxy);
47+
.def("solve", &solveProxy)
48+
.def("getAccelerations", &getAccelerationsProxy);
4149
}
4250
} // namespace python
4351
} // namespace simple_mpc

include/simple-mpc/inverse-dynamics.hpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,15 @@ namespace simple_mpc
6969
const Eigen::Ref<const Eigen::VectorXd> & v_meas,
7070
Eigen::Ref<Eigen::VectorXd> tau_res);
7171

72-
const Eigen::VectorXd & getAccelerations();
72+
void getAccelerations(Eigen::Ref<Eigen::VectorXd> a);
7373

74-
private:
75-
// Order matters to be instanciated in the right order
74+
public:
75+
// Order matters to be instantiated in the right order
7676
const Settings settings_;
7777
const simple_mpc::RobotModelHandler & model_handler_;
78+
79+
private:
80+
// Order still matter here
7881
simple_mpc::RobotDataHandler data_handler_;
7982
tsid::robots::RobotWrapper robot_;
8083
tsid::InverseDynamicsFormulationAccForce formulation_;

src/inverse-dynamics.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ void KinodynamicsID::solve(
156156
tau_res = formulation_.getActuatorForces(last_solution_);
157157
}
158158

159-
const Eigen::VectorXd & KinodynamicsID::getAccelerations()
159+
void KinodynamicsID::getAccelerations(Eigen::Ref<Eigen::VectorXd> ddq)
160160
{
161-
return formulation_.getAccelerations(last_solution_);
161+
ddq = formulation_.getAccelerations(last_solution_);
162162
}

tests/inverse_dynamics.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ BOOST_AUTO_TEST_CASE(KinodynamicsID_postureTask)
7171
{
7272
// Solve and get solution
7373
solver.solve(t, q, v, tau);
74-
a = solver.getAccelerations();
74+
solver.getAccelerations(a);
7575

7676
// Integrate
7777
t += dt;
@@ -133,7 +133,7 @@ BOOST_AUTO_TEST_CASE(KinodynamicsID_contact)
133133
{
134134
// Solve and get solution
135135
solver.solve(t, q, v, tau);
136-
a = solver.getAccelerations();
136+
solver.getAccelerations(a);
137137

138138
// Integrate
139139
t += dt;
@@ -191,7 +191,7 @@ BOOST_AUTO_TEST_CASE(KinodynamicsID_baseTask)
191191
{
192192
// Solve and get solution
193193
solver.solve(t, q, v, tau);
194-
a = solver.getAccelerations();
194+
solver.getAccelerations(a);
195195

196196
// Integrate
197197
t += dt;
@@ -253,7 +253,7 @@ BOOST_AUTO_TEST_CASE(KinodynamicsID_allTasks)
253253
{
254254
// Solve and get solution
255255
solver.solve(t, q, v, tau);
256-
a = solver.getAccelerations();
256+
solver.getAccelerations(a);
257257

258258
// Integrate
259259
t += dt;

0 commit comments

Comments
 (0)