Skip to content

Commit 66b9301

Browse files
committed
Make setReferenceFootPlacement use foot index instead of name for coherence and performance (if needed)
1 parent 3a04d4d commit 66b9301

File tree

6 files changed

+30
-26
lines changed

6 files changed

+30
-26
lines changed

benchmark/go2.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ int main()
4444
model_handler.addPointFoot("FR_foot", base_joint_name);
4545
model_handler.addPointFoot("RL_foot", base_joint_name);
4646
model_handler.addPointFoot("RR_foot", base_joint_name);
47-
model_handler.setFootReferencePlacement("FL_foot", ref_FL_foot);
48-
model_handler.setFootReferencePlacement("FR_foot", ref_FR_foot);
49-
model_handler.setFootReferencePlacement("RL_foot", ref_RL_foot);
50-
model_handler.setFootReferencePlacement("RR_foot", ref_RR_foot);
47+
model_handler.setFootReferencePlacement(model_handler.getFootNb("FL_foot"), ref_FL_foot);
48+
model_handler.setFootReferencePlacement(model_handler.getFootNb("FR_foot"), ref_FR_foot);
49+
model_handler.setFootReferencePlacement(model_handler.getFootNb("RL_foot"), ref_RL_foot);
50+
model_handler.setFootReferencePlacement(model_handler.getFootNb("RR_foot"), ref_RR_foot);
5151

5252
RobotDataHandler data_handler(model_handler);
5353

benchmark/talos.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,11 @@ int main()
7676
model_handler.addQuadFoot("right_sole_link", base_joint);
7777

7878
model_handler.setFootReferencePlacement(
79-
"left_sole_link", pinocchio::SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0., 0.1, 0.)));
79+
model_handler.getFootNb("left_sole_link"),
80+
pinocchio::SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0., 0.1, 0.)));
8081
model_handler.setFootReferencePlacement(
81-
"right_sole_link", pinocchio::SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0., -0.1, 0.)));
82+
model_handler.getFootNb("right_sole_link"),
83+
pinocchio::SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0., -0.1, 0.)));
8284

8385
RobotDataHandler data_handler(model_handler);
8486

include/simple-mpc/robot-handler.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ namespace simple_mpc
7777
const ContactPointsMatrix & contactPoints);
7878

7979
/**
80-
* @brief Update the reference placement of the foot wrt to the frame it is attached to
80+
* @brief Update the placement of the foot reference frame wrt to the joint/frame it is attached to
8181
*
8282
* @param foot_name Foot frame name
8383
* @param refMfoot Placement in the local frame
8484
*/
85-
void setFootReferencePlacement(const std::string & foot_name, const SE3 & refMfoot);
85+
void setFootReferencePlacement(size_t foot_nb, const SE3 & refMfoot);
8686

8787
/**
8888
* @brief Perform a finite difference on the sates.
@@ -107,7 +107,7 @@ namespace simple_mpc
107107

108108
size_t getFeetNb() const
109109
{
110-
return size(feet_ids_);
110+
return size(feet_frame_ids_);
111111
}
112112

113113
size_t getFootNb(const std::string & foot_frame_name) const
@@ -128,7 +128,7 @@ namespace simple_mpc
128128

129129
const std::vector<FrameIndex> & getFeetFrameIds() const
130130
{
131-
return feet_ids_;
131+
return feet_frame_ids_;
132132
}
133133

134134
const std::vector<std::string> & getFeetFrameNames() const
@@ -148,12 +148,12 @@ namespace simple_mpc
148148

149149
FrameIndex getFootFrameId(size_t foot_nb) const
150150
{
151-
return feet_ids_.at(foot_nb);
151+
return feet_frame_ids_.at(foot_nb);
152152
}
153153

154154
FrameIndex getFootRefFrameId(size_t foot_nb) const
155155
{
156-
return feet_ref_frame_ids.at(foot_nb);
156+
return feet_ref_frame_ids_.at(foot_nb);
157157
}
158158

159159
double getMass() const
@@ -211,12 +211,12 @@ namespace simple_mpc
211211
/**
212212
* @brief Ids of the frames to be in contact with the environment
213213
*/
214-
std::vector<FrameIndex> feet_ids_;
214+
std::vector<FrameIndex> feet_frame_ids_;
215215

216216
/**
217217
* @brief Ids of the frames that are reference position for the feet
218218
*/
219-
std::vector<FrameIndex> feet_ref_frame_ids;
219+
std::vector<FrameIndex> feet_ref_frame_ids_;
220220

221221
/**
222222
* @brief Base frame id

src/robot-handler.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ namespace simple_mpc
2626

2727
void RobotModelHandler::addFootFrames(const std::string & foot_name, const std::string & reference_frame_name)
2828
{
29+
const size_t new_foot_index = getFeetNb();
30+
2931
feet_frame_names_.push_back(foot_name);
30-
feet_ids_.push_back(model_.getFrameId(foot_name));
32+
feet_frame_ids_.push_back(model_.getFrameId(foot_name));
3133

3234
// Create reference frame
3335
FrameIndex reference_frame_id = model_.getFrameId(reference_frame_name);
@@ -38,7 +40,7 @@ namespace simple_mpc
3840
auto frame_id = model_.addFrame(new_frame);
3941

4042
// Save foot id
41-
feet_ref_frame_ids.push_back(frame_id);
43+
feet_ref_frame_ids_.push_back(frame_id);
4244

4345
// Set placement to default value
4446
pinocchio::Data data(model_);
@@ -47,7 +49,7 @@ namespace simple_mpc
4749

4850
const pinocchio::SE3 default_placement = data.oMf[reference_frame_id].actInv(data.oMf[frame_id]);
4951

50-
setFootReferencePlacement(foot_name, default_placement);
52+
setFootReferencePlacement(new_foot_index, default_placement);
5153
}
5254

5355
size_t RobotModelHandler::addPointFoot(const std::string & foot_name, const std::string & reference_frame_name)
@@ -68,9 +70,9 @@ namespace simple_mpc
6870
return foot_nb;
6971
}
7072

71-
void RobotModelHandler::setFootReferencePlacement(const std::string & foot_name, const SE3 & refMfoot)
73+
void RobotModelHandler::setFootReferencePlacement(size_t foot_nb, const SE3 & refMfoot)
7274
{
73-
model_.frames[model_.getFrameId(foot_name + "_ref", pinocchio::OP_FRAME)].placement = refMfoot;
75+
model_.frames[feet_ref_frame_ids_.at(foot_nb)].placement = refMfoot;
7476
}
7577

7678
Eigen::VectorXd RobotModelHandler::difference(const ConstVectorRef & x1, const ConstVectorRef & x2) const

tests/robot_handler.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ BOOST_AUTO_TEST_CASE(model_handler)
4646
RobotModelHandler model_handler(model, default_conf_name, base_frame);
4747

4848
// Add feet
49-
for (size_t i = 0; i < feet_names.size(); i++)
49+
for (size_t foot_nb = 0; foot_nb < feet_names.size(); foot_nb++)
5050
{
51-
model_handler.addPointFoot(feet_names.at(i), base_frame);
52-
model_handler.setFootReferencePlacement(feet_names.at(i), feet_refs.at(i));
51+
model_handler.addPointFoot(feet_names.at(foot_nb), base_frame);
52+
model_handler.setFootReferencePlacement(foot_nb, feet_refs.at(foot_nb));
5353
}
5454

5555
/*********/

tests/test_utils.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,13 @@ RobotModelHandler getSoloHandler()
9393
model_handler.addPointFoot("HR_FOOT", base_joint);
9494
model_handler.addPointFoot("HL_FOOT", base_joint);
9595
model_handler.setFootReferencePlacement(
96-
"FR_FOOT", SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0.1, -0.1, 0.)));
96+
model_handler.getFootNb("FR_FOOT"), SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0.1, -0.1, 0.)));
9797
model_handler.setFootReferencePlacement(
98-
"FL_FOOT", SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0.1, 0.1, 0.)));
98+
model_handler.getFootNb("FL_FOOT"), SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(0.1, 0.1, 0.)));
9999
model_handler.setFootReferencePlacement(
100-
"HR_FOOT", SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(-0.1, -0.1, 0.)));
100+
model_handler.getFootNb("HR_FOOT"), SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(-0.1, -0.1, 0.)));
101101
model_handler.setFootReferencePlacement(
102-
"HL_FOOT", SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(-0.1, 0.1, 0.)));
102+
model_handler.getFootNb("HL_FOOT"), SE3(Eigen::Quaternion(0., 0., 0., 1.), Eigen::Vector3d(-0.1, 0.1, 0.)));
103103

104104
return model_handler;
105105
}

0 commit comments

Comments
 (0)