Skip to content

Commit 825192f

Browse files
committed
Access to step_nb and step_progress
1 parent b047e3d commit 825192f

File tree

4 files changed

+27
-14
lines changed

4 files changed

+27
-14
lines changed

bindings/expose-interpolate.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ namespace simple_mpc
2727
.add_property("x_interpolated", &Interpolator::x_interpolated_)
2828
.add_property("u_interpolated", &Interpolator::u_interpolated_)
2929
.add_property("a_interpolated", &Interpolator::a_interpolated_)
30-
.add_property("forces_interpolated", &Interpolator::forces_interpolated_);
30+
.add_property("forces_interpolated", &Interpolator::forces_interpolated_)
31+
.add_property("step_nb", &Interpolator::step_nb_)
32+
.add_property("step_progress", &Interpolator::step_progress_);
3133
}
3234

3335
} // namespace python

include/simple-mpc/interpolator.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,20 @@ namespace simple_mpc
2929
std::vector<Eigen::VectorXd> ddqs,
3030
std::vector<Eigen::VectorXd> forces);
3131

32+
// Interpolated trajectories
3233
Eigen::VectorXd x_interpolated_;
3334
Eigen::VectorXd u_interpolated_;
3435
Eigen::VectorXd a_interpolated_;
3536
Eigen::VectorXd forces_interpolated_;
37+
38+
// Timestep of trajectories
3639
double MPC_timestep_;
40+
41+
// Time knot associated with current delay
42+
size_t step_nb_;
43+
44+
// Interpolation time between two knots
45+
double step_progress_;
3746
};
3847
} // namespace simple_mpc
3948

src/interpolator.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,25 @@ namespace simple_mpc
2727
std::vector<Eigen::VectorXd> forces)
2828
{
2929
// Compute the time knot corresponding to the current delay
30-
size_t step_nb = static_cast<size_t>(delay / MPC_timestep_);
31-
double step_progress = (delay - (double)step_nb * MPC_timestep_) / MPC_timestep_;
30+
step_nb_ = static_cast<size_t>(delay / MPC_timestep_);
31+
step_progress_ = (delay - (double)step_nb_ * MPC_timestep_) / MPC_timestep_;
3232

3333
// Interpolate state and command trajectories
34-
if (step_nb >= xs.size() - 1)
34+
if (step_nb_ >= xs.size() - 1)
3535
{
36-
step_nb = xs.size() - 1;
37-
step_progress = 0.0;
38-
x_interpolated_ = xs[step_nb];
39-
u_interpolated_ = us[step_nb];
40-
a_interpolated_ = ddqs[step_nb];
41-
forces_interpolated_ = forces[step_nb];
36+
step_nb_ = xs.size() - 1;
37+
step_progress_ = 0.0;
38+
x_interpolated_ = xs[step_nb_];
39+
u_interpolated_ = us[step_nb_];
40+
a_interpolated_ = ddqs[step_nb_];
41+
forces_interpolated_ = forces[step_nb_];
4242
}
4343
else
4444
{
45-
x_interpolated_ = xs[step_nb + 1] * step_progress + xs[step_nb] * (1. - step_progress);
46-
u_interpolated_ = us[step_nb + 1] * step_progress + us[step_nb] * (1. - step_progress);
47-
a_interpolated_ = ddqs[step_nb + 1] * step_progress + ddqs[step_nb] * (1. - step_progress);
48-
forces_interpolated_ = forces[step_nb + 1] * step_progress + forces[step_nb] * (1. - step_progress);
45+
x_interpolated_ = xs[step_nb_ + 1] * step_progress_ + xs[step_nb_] * (1. - step_progress_);
46+
u_interpolated_ = us[step_nb_ + 1] * step_progress_ + us[step_nb_] * (1. - step_progress_);
47+
a_interpolated_ = ddqs[step_nb_ + 1] * step_progress_ + ddqs[step_nb_] * (1. - step_progress_);
48+
forces_interpolated_ = forces[step_nb_ + 1] * step_progress_ + forces[step_nb_] * (1. - step_progress_);
4949
}
5050
}
5151

tests/interpolator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ BOOST_AUTO_TEST_CASE(interpolate)
3636
BOOST_CHECK(us[2].isApprox(interpolator.u_interpolated_));
3737
BOOST_CHECK(ddqs[2].isApprox(interpolator.a_interpolated_));
3838
BOOST_CHECK(forces[2].isApprox(interpolator.forces_interpolated_));
39+
BOOST_CHECK(interpolator.step_nb_ == 2);
40+
BOOST_CHECK(interpolator.step_progress_ == 0.);
3941
}
4042

4143
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)