Skip to content

Commit d3bb9cf

Browse files
authored
Merge pull request #25 from Simple-Robotics/topic/more-eigen-refs
Use Eigen::Ref types more
2 parents 987d06b + 6b6b989 commit d3bb9cf

File tree

4 files changed

+45
-44
lines changed

4 files changed

+45
-44
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ci:
44
submodules: true
55
repos:
66
- repo: https://github.com/pre-commit/mirrors-clang-format
7-
rev: v19.1.4
7+
rev: v19.1.5
88
hooks:
99
- id: clang-format
1010
types_or: []

include/simple-mpc/fwd.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ namespace simple_mpc
4343

4444
using Eigen::MatrixXd;
4545
using Eigen::VectorXd;
46+
using MatrixRef = Eigen::Ref<MatrixXd>;
4647
using VectorRef = Eigen::Ref<VectorXd>;
48+
using ConstMatrixRef = Eigen::Ref<const MatrixXd>;
4749
using ConstVectorRef = Eigen::Ref<const VectorXd>;
4850

4951
using Vector6d = Eigen::Matrix<double, 6, 1>;

include/simple-mpc/lowlevel-control.hpp

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
namespace simple_mpc
2323
{
2424
using namespace proxsuite;
25-
using pin::SE3;
2625

2726
struct IDSettings
2827
{
@@ -88,23 +87,23 @@ namespace simple_mpc
8887
void computeMatrices(
8988
pin::Data & data,
9089
const std::vector<bool> & contact_state,
91-
const Eigen::VectorXd & v,
92-
const Eigen::VectorXd & a,
93-
const Eigen::VectorXd & tau,
94-
const Eigen::VectorXd & forces,
95-
const Eigen::MatrixXd & M);
90+
const ConstVectorRef & v,
91+
const ConstVectorRef & a,
92+
const ConstVectorRef & tau,
93+
const ConstVectorRef & forces,
94+
const ConstMatrixRef & M);
9695

9796
public:
9897
explicit IDSolver(const IDSettings & settings, const pin::Model & model);
9998

10099
void solveQP(
101100
pin::Data & data,
102101
const std::vector<bool> & contact_state,
103-
const Eigen::VectorXd & v,
104-
const Eigen::VectorXd & a,
105-
const Eigen::VectorXd & tau,
106-
const Eigen::VectorXd & forces,
107-
const Eigen::MatrixXd & M);
102+
const ConstVectorRef & v,
103+
const ConstVectorRef & a,
104+
const ConstVectorRef & tau,
105+
const ConstVectorRef & forces,
106+
const ConstMatrixRef & M);
108107

109108
SIMPLE_MPC_DEPRECATED
110109
proxqp::dense::Model<double> getQP()
@@ -181,27 +180,27 @@ namespace simple_mpc
181180
void computeMatrices(
182181
pin::Data & data,
183182
const std::vector<bool> & contact_state,
184-
const Eigen::VectorXd & x_measured,
185-
const Eigen::VectorXd & forces,
186-
const Eigen::VectorXd & dH,
187-
const Eigen::MatrixXd & M);
183+
const ConstVectorRef & x_measured,
184+
const ConstVectorRef & forces,
185+
const ConstVectorRef & dH,
186+
const ConstMatrixRef & M);
188187

189188
public:
190189
explicit IKIDSolver(const IKIDSettings & settings, const pin::Model & model);
191190

192191
void computeDifferences(
193192
pin::Data & data,
194-
const Eigen::VectorXd & x_measured,
195-
const std::vector<pin::SE3> foot_refs,
196-
const std::vector<pin::SE3> foot_refs_next);
193+
const ConstVectorRef & x_measured,
194+
const std::vector<pin::SE3> & foot_refs,
195+
const std::vector<pin::SE3> & foot_refs_next);
197196

198197
void solve_qp(
199198
pin::Data & data,
200199
const std::vector<bool> & contact_state,
201-
const Eigen::VectorXd & x_measured,
202-
const Eigen::VectorXd & forces,
203-
const Eigen::VectorXd & dH,
204-
const Eigen::MatrixXd & M);
200+
const ConstVectorRef & x_measured,
201+
const ConstVectorRef & forces,
202+
const ConstVectorRef & dH,
203+
const ConstMatrixRef & M);
205204

206205
SIMPLE_MPC_DEPRECATED
207206
proxqp::dense::Model<double> getQP()

src/lowlevel-control.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,11 @@ namespace simple_mpc
9999
void IDSolver::computeMatrices(
100100
pinocchio::Data & data,
101101
const std::vector<bool> & contact_state,
102-
const Eigen::VectorXd & v,
103-
const Eigen::VectorXd & a,
104-
const Eigen::VectorXd & tau,
105-
const Eigen::VectorXd & forces,
106-
const Eigen::MatrixXd & M)
102+
const ConstVectorRef & v,
103+
const ConstVectorRef & a,
104+
const ConstVectorRef & tau,
105+
const ConstVectorRef & forces,
106+
const ConstMatrixRef & M)
107107
{
108108
// Reset matrices
109109
Jc_.setZero();
@@ -160,11 +160,11 @@ namespace simple_mpc
160160
void IDSolver::solveQP(
161161
pinocchio::Data & data,
162162
const std::vector<bool> & contact_state,
163-
const Eigen::VectorXd & v,
164-
const Eigen::VectorXd & a,
165-
const Eigen::VectorXd & tau,
166-
const Eigen::VectorXd & forces,
167-
const Eigen::MatrixXd & M)
163+
const ConstVectorRef & v,
164+
const ConstVectorRef & a,
165+
const ConstVectorRef & tau,
166+
const ConstVectorRef & forces,
167+
const ConstMatrixRef & M)
168168
{
169169

170170
computeMatrices(data, contact_state, v, a, tau, forces, M);
@@ -292,9 +292,9 @@ namespace simple_mpc
292292

293293
void IKIDSolver::computeDifferences(
294294
pinocchio::Data & data,
295-
const Eigen::VectorXd & x_measured,
296-
const std::vector<pinocchio::SE3> foot_refs,
297-
const std::vector<pinocchio::SE3> foot_refs_next)
295+
const ConstVectorRef & x_measured,
296+
const std::vector<pinocchio::SE3> & foot_refs,
297+
const std::vector<pinocchio::SE3> & foot_refs_next)
298298
{
299299
difference(model_, x_measured.head(model_.nq), settings_.x0.head(model_.nq), q_diff_);
300300
dq_diff_ = settings_.x0.tail(model_.nv) - x_measured.tail(model_.nv);
@@ -322,10 +322,10 @@ namespace simple_mpc
322322
void IKIDSolver::computeMatrices(
323323
pinocchio::Data & data,
324324
const std::vector<bool> & contact_state,
325-
const Eigen::VectorXd & v_current,
326-
const Eigen::VectorXd & forces,
327-
const Eigen::VectorXd & dH,
328-
const Eigen::MatrixXd & M)
325+
const ConstVectorRef & v_current,
326+
const ConstVectorRef & forces,
327+
const ConstVectorRef & dH,
328+
const ConstMatrixRef & M)
329329
{
330330

331331
H_.topLeftCorner(model_.nv, model_.nv) = settings_.w_qref * Eigen::MatrixXd::Identity(model_.nv, model_.nv);
@@ -409,10 +409,10 @@ namespace simple_mpc
409409
void IKIDSolver::solve_qp(
410410
pinocchio::Data & data,
411411
const std::vector<bool> & contact_state,
412-
const Eigen::VectorXd & v_current,
413-
const Eigen::VectorXd & forces,
414-
const Eigen::VectorXd & dH,
415-
const Eigen::MatrixXd & M)
412+
const ConstVectorRef & v_current,
413+
const ConstVectorRef & forces,
414+
const ConstVectorRef & dH,
415+
const ConstMatrixRef & M)
416416
{
417417
computeMatrices(data, contact_state, v_current, forces, dH, M);
418418

0 commit comments

Comments
 (0)