simple_casadi_mpc
GitHub
Loading...
Searching...
No Matches
casadi_utils.hpp
1#pragma once
2
3#include <Eigen/Dense>
4#include <casadi/casadi.hpp>
5#include <memory>
6#include <vector>
7
9namespace casadi_utils {
10
14inline Eigen::MatrixXd to_eigen(const casadi::DM &dm) {
15 Eigen::MatrixXd mat(dm.size1(), dm.size2());
16 std::memcpy(mat.data(), dm.ptr(), sizeof(double) * dm.size1() * dm.size2());
17 return mat;
18}
19
23inline casadi::DM to_casadi(const Eigen::MatrixXd &mat) {
24 casadi::DM dm = casadi::DM::zeros(mat.rows(), mat.cols());
25 std::memcpy(dm.ptr(), mat.data(), sizeof(double) * mat.rows() * mat.cols());
26 return dm;
27}
28
29} // namespace casadi_utils
Small adapters between CasADi DM matrices and Eigen dense matrices.
Definition casadi_utils.hpp:9
casadi::DM to_casadi(const Eigen::MatrixXd &mat)
Convert an Eigen MatrixXd into a CasADi DM.
Definition casadi_utils.hpp:23
Eigen::MatrixXd to_eigen(const casadi::DM &dm)
Convert a CasADi DM (column-major) into an Eigen MatrixXd.
Definition casadi_utils.hpp:14