Crocoddyl
mathbase.hpp
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2020-2021, LAAS-CNRS, University of Edinburgh
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
8 
9 #ifndef CROCODDYL_CORE_MATHBASE_HPP_
10 #define CROCODDYL_CORE_MATHBASE_HPP_
11 
12 #include <Eigen/Core>
13 #include <Eigen/Geometry>
14 
15 namespace crocoddyl {
16 
17 template <typename _Scalar>
18 struct MathBaseTpl {
19  public:
20  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
21 
22  typedef _Scalar Scalar;
23  typedef Eigen::Matrix<Scalar, 2, 1> Vector2s;
24  typedef Eigen::Matrix<Scalar, 3, 1> Vector3s;
25  typedef Eigen::Matrix<Scalar, 4, 1> Vector4s;
26  typedef Eigen::Matrix<Scalar, 6, 1> Vector6s;
27  typedef Eigen::Matrix<Scalar, 2, 2> Matrix2s;
28  typedef Eigen::Matrix<Scalar, 3, 3> Matrix3s;
29  typedef Eigen::Matrix<Scalar, 4, 6> Matrix46s;
30  typedef Eigen::Matrix<Scalar, 6, 6> Matrix6s;
31  typedef Eigen::Matrix<Scalar, 1, 2> RowVector2s;
32 
33  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 3> MatrixX3s;
34  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 6> MatrixX6s;
35  typedef Eigen::Matrix<Scalar, 3, Eigen::Dynamic> Matrix3xs;
36  typedef Eigen::Matrix<Scalar, 6, Eigen::Dynamic> Matrix6xs;
37 
38  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1> VectorXs;
39  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> MatrixXs;
40  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
41  MatrixXsRowMajor;
42  typedef Eigen::Array<Scalar, Eigen::Dynamic, 1> ArrayXs;
43  typedef Eigen::Quaternion<Scalar> Quaternions;
44  typedef Eigen::DiagonalMatrix<Scalar, Eigen::Dynamic> DiagonalMatrixXs;
45 };
46 
47 } // namespace crocoddyl
48 
49 #endif