5 #include <pinocchio/autodiff/casadi.hpp> 7 #include <boost/variant.hpp> 9 #include <boost/test/unit_test.hpp> 10 #include <boost/utility/binary.hpp> 12 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
16 Eigen::Matrix<casadi::SX, 3, 3>
A, B;
17 Eigen::Matrix<casadi::SX, 3, 1>
a, b;
18 Eigen::Matrix<casadi::SX, 3, 1>
c = A * a - B.transpose() * b;
22 template <
typename Scalar,
typename T1,
typename T2,
typename T3,
typename T4>
23 Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
25 Eigen::MatrixBase<T2>
const& a,
26 Eigen::MatrixBase<T3>
const& B,
27 Eigen::MatrixBase<T4>
const& b)
29 Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
c(4);
30 c.segment(1, 3) = A * a.segment(1, 3) - B.transpose() * b;
43 Eigen::Matrix<casadi::SX, 3, 3>
A, B;
44 Eigen::Matrix<casadi::SX, -1, 1>
a (4),
c (4);
45 Eigen::Matrix<casadi::SX, 3, 1> b;
52 A(
i, j) = 10. *
static_cast<double>(
i) + static_cast<double>(j);
53 B(
i, j) = -10. *
static_cast<double>(
i) - static_cast<double>(j);
62 c = eigenFun<casadi::SX>(A,
a, B, b);
65 casadi::SX cs_c = casadi::SX(casadi::Sparsity::dense(c.rows(), 1));
69 std::cout <<
"c = " << cs_c << std::endl;
72 casadi::SX dc_da = jacobian(cs_c, cs_a);
75 std::cout <<
"dc/da = " << dc_da << std::endl;
78 casadi::Function fun(
"fun", casadi::SXVector {cs_a, cs_b}, casadi::SXVector {cs_c, dc_da});
79 std::cout <<
"fun = " << fun << std::endl;
82 casadi::DMVector
res = fun(casadi::DMVector {std::vector<double> {1., 2., 3., 4.}, std::vector<double> {-1., -2., -3.}});
83 std::cout <<
"fun(a, b)=" << res << std::endl;
91 cs_y(0) = cs_x(0) + cs_x(1) + cs_x(2);
94 std::cout <<
"y = " << cs_y << std::endl;
97 casadi::SX dy_dx = jacobian(cs_x, cs_x);
100 std::cout <<
"dy/dx = " << dy_dx << std::endl;
106 Eigen::Matrix<casadi::SX, 3, 4> eig_mat;
109 std::cout << eig_mat << std::endl;
114 Eigen::Matrix<casadi::SX, 3, 4> eig_mat;
120 std::cout << cs_mat << std::endl;
127 casadi::Function fun(
"fun", casadi::SXVector {
x, y}, casadi::SXVector {x + y});
129 casadi::CodeGenerator gen(
"module");
132 std::cout << gen.dump();
146 BOOST_AUTO_TEST_SUITE_END()
AD< Scalar > max(const AD< Scalar > &x, const AD< Scalar > &y)
void sym(const Eigen::MatrixBase< MatrixDerived > &eig_mat, std::string const &name)
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > eigenFun(Eigen::MatrixBase< T1 > const &A, Eigen::MatrixBase< T2 > const &a, Eigen::MatrixBase< T3 > const &B, Eigen::MatrixBase< T4 > const &b)
BOOST_AUTO_TEST_CASE(test_eigen)
void copy(::casadi::Matrix< Scalar > const &src, Eigen::MatrixBase< MT > &dst)