Skip to content

Commit 1a35ad5

Browse files
committed
Change to Eigen::Vector
1 parent 6c5e05d commit 1a35ad5

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

bindings/expose-mpc.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,9 @@ namespace simple_mpc
6464
void exposeMPC()
6565
{
6666
using StageVec = std::vector<std::shared_ptr<StageModel>>;
67-
using ForceVec = std::vector<Eigen::Vector3d>;
6867
using MapBool = std::map<std::string, bool>;
6968
StdVectorPythonVisitor<StageVec, true>::expose(
7069
"StdVec_StageModel", eigenpy::details::overload_base_get_item_for_std_vector<StageVec>());
71-
StdVectorPythonVisitor<ForceVec, true>::expose(
72-
"StdVec_Force", eigenpy::details::overload_base_get_item_for_std_vector<ForceVec>());
7370

7471
StdVectorPythonVisitor<std::vector<MapBool>, true>::expose("StdVec_MapBool");
7572

examples/go2_fulldynamics.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -241,16 +241,16 @@
241241
a0 = mpc.getStateDerivative(0)[nv:]
242242
a1 = mpc.getStateDerivative(1)[nv:]
243243

244-
forces_vec = mpc.getContactForces(0)
244+
forces_vec0 = mpc.getContactForces(0)
245+
forces_vec1 = mpc.getContactForces(1)
245246
contact_states = mpc.ocp_handler.getContactState(0)
246-
total_forces = np.concatenate((forces_vec[0], forces_vec[1], forces_vec[2], forces_vec[3]))
247247

248-
force_FL.append(forces_vec[0])
249-
force_FR.append(forces_vec[1])
250-
force_RL.append(forces_vec[2])
251-
force_RR.append(forces_vec[3])
248+
force_FL.append(forces_vec0[:3])
249+
force_FR.append(forces_vec0[3:6])
250+
force_RL.append(forces_vec0[6:9])
251+
force_RR.append(forces_vec0[9:12])
252252

253-
forces = [total_forces, total_forces]
253+
forces = [forces_vec0, forces_vec1]
254254
ddqs = [a0, a1]
255255
xss = [mpc.xs[0], mpc.xs[1]]
256256
uss = [mpc.us[0], mpc.us[1]]

include/simple-mpc/mpc.hpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,11 @@ namespace simple_mpc
186186
return int_data->continuous_data->xdot_;
187187
}
188188

189-
const std::vector<Eigen::Vector3d> getContactForces(const std::size_t t)
189+
const Eigen::VectorXd getContactForces(const std::size_t t)
190190
{
191-
std::vector<Eigen::Vector3d> contact_forces;
191+
Eigen::VectorXd contact_forces;
192+
contact_forces.resize(3 * (long)ee_names_.size());
193+
192194
ExplicitIntegratorData * int_data =
193195
dynamic_cast<ExplicitIntegratorData *>(&*solver_->workspace_.problem_data.stage_data[t]->dynamics_data);
194196
assert(int_data != nullptr);
@@ -202,12 +204,12 @@ namespace simple_mpc
202204
{
203205
if (contact_state[i])
204206
{
205-
contact_forces.push_back(mc_data->constraint_datas_[force_id].contact_force.linear());
207+
contact_forces.segment((long)i * 3, 3) = mc_data->constraint_datas_[force_id].contact_force.linear();
206208
force_id += 1;
207209
}
208210
else
209211
{
210-
contact_forces.push_back(Eigen::Vector3d::Zero());
212+
contact_forces.segment((long)i * 3, 3).setZero();
211213
}
212214
}
213215
return contact_forces;

tests/mpc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ BOOST_AUTO_TEST_CASE(mpc_fulldynamics)
9191

9292
Eigen::VectorXd xdot = mpc.getStateDerivative(0);
9393

94-
std::vector<Eigen::Vector3d> forces = mpc.getContactForces(0);
94+
Eigen::VectorXd forces = mpc.getContactForces(0);
9595
}
9696

9797
BOOST_AUTO_TEST_CASE(mpc_kinodynamics)

0 commit comments

Comments
 (0)