Skip to content

Commit 8925fb9

Browse files
committed
Setter for state reference
1 parent f9e8af7 commit 8925fb9

File tree

8 files changed

+26
-6
lines changed

8 files changed

+26
-6
lines changed

bindings/expose-mpc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ namespace simple_mpc
8989
.def("getFootLandCycle", &MPC::getFootLandCycle, ("self"_a, "ee_name"))
9090
.def("getStateDerivative", &MPC::getStateDerivative, ("self"_a, "t"))
9191
.def("getContactForces", &MPC::getContactForces, ("self"_a, "t"))
92+
.def("setReferenceState", &MPC::setReferenceState, ("self"_a, "state_ref"))
9293
.def("getCyclingContactState", &MPC::getCyclingContactState, ("self"_a, "t", "ee_name"))
9394
.def(
9495
"getModelHandler", &MPC::getModelHandler, "self"_a, bp::return_internal_reference<>(),

bindings/expose-problem.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ namespace simple_mpc
7777
("self"_a, "x0", "horizon", "force_size", "gravity", "terminal_constraint"))
7878
.def("setReferenceControl", &OCPHandler::setReferenceControl, ("self"_a, "t", "u_ref"))
7979
.def("getReferenceControl", &OCPHandler::getReferenceControl, ("self"_a, "t"))
80+
.def("setReferenceState", &OCPHandler::setReferenceState, ("self"_a, "x_ref"))
81+
.def("getReferenceState", &OCPHandler::getReferenceState, ("self"_a))
8082
.def("getProblem", +[](OCPHandler & ocp) { return boost::ref(ocp.getProblem()); }, "self"_a);
8183

8284
exposeContainers();

include/simple-mpc/fulldynamics.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,6 @@ namespace simple_mpc
112112
FullDynamicsSettings settings_;
113113
ProximalSettings prox_settings_;
114114

115-
// State reference
116-
Eigen::VectorXd x0_;
117-
118115
// Actuation matrix
119116
Eigen::MatrixXd actuation_matrix_;
120117

include/simple-mpc/kinodynamics.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ namespace simple_mpc
100100

101101
protected:
102102
KinodynamicsSettings settings_;
103-
Eigen::VectorXd x0_;
104103
};
105104

106105
} // namespace simple_mpc

include/simple-mpc/mpc.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ namespace simple_mpc
131131
pose_base_ = pose_ref;
132132
}
133133

134+
void setReferenceState(const VectorXd & state_ref)
135+
{
136+
ocp_handler_->setReferenceState(state_ref);
137+
}
138+
134139
ConstVectorRef getPoseBase(const std::size_t t) const;
135140

136141
// getters and setters

include/simple-mpc/ocp-handler.hpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,13 @@ namespace simple_mpc
107107
const double gravity,
108108
const bool terminal_constraint);
109109

110-
// Setter and getter for control reference
110+
// Setter and getter for state and control reference
111111
void setReferenceControl(const std::size_t t, const ConstVectorRef & u_ref);
112112
ConstVectorRef getReferenceControl(const std::size_t t);
113113

114+
void setReferenceState(const ConstVectorRef & x_ref);
115+
ConstVectorRef getReferenceState();
116+
114117
// Getter for various objects and quantities
115118
CostStack * getCostStack(std::size_t t);
116119
CostStack * getTerminalCostStack();
@@ -150,6 +153,9 @@ namespace simple_mpc
150153
bool problem_initialized_ = false;
151154
bool terminal_constraint_ = false;
152155

156+
/// State reference
157+
Eigen::VectorXd x0_;
158+
153159
/// The robot model
154160
RobotModelHandler model_handler_;
155161

src/mpc.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,6 @@ namespace simple_mpc
303303
}
304304

305305
ocp_handler_->setVelocityBase(ocp_handler_->getSize() - 1, velocity_base_);
306-
ocp_handler_->setPoseBase(ocp_handler_->getSize() - 1, pose_base_);
307306

308307
Eigen::Vector3d com_ref;
309308
com_ref << 0, 0, 0;

src/ocp-handler.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,17 @@ namespace simple_mpc
6969
return qc->getTarget();
7070
}
7171

72+
void OCPHandler::setReferenceState(const ConstVectorRef & x_ref)
73+
{
74+
assert(x_ref.size() == x0_.size() && "x_ref not of the right size");
75+
x0_ = x_ref;
76+
}
77+
78+
ConstVectorRef OCPHandler::getReferenceState()
79+
{
80+
return x0_;
81+
}
82+
7283
CostStack * OCPHandler::getCostStack(std::size_t t)
7384
{
7485
if (t >= getSize())

0 commit comments

Comments
 (0)