1 // g2o - General Graph Optimization 2 // Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard 3 // All rights reserved. 4 // 5 // Redistribution and use in source and binary forms, with or without 6 // modification, are permitted provided that the following conditions are 7 // met: 8 // 9 // * Redistributions of source code must retain the above copyright notice, 10 // this list of conditions and the following disclaimer. 11 // * Redistributions in binary form must reproduce the above copyright 12 // notice, this list of conditions and the following disclaimer in the 13 // documentation and/or other materials provided with the distribution. 14 // 15 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 16 // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 18 // PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 27 #ifndef G2O_EIGEN_TYPES_H 28 #define G2O_EIGEN_TYPES_H 29 30 #include <Eigen/Core> 31 #include <Eigen/Geometry> 32 33 #include "g2o/config.h" 34 35 namespace g2o { 36 37 typedef Eigen::Matrix<int,2,1,Eigen::ColMajor> Vector2I; 38 typedef Eigen::Matrix<int,3,1,Eigen::ColMajor> Vector3I; 39 typedef Eigen::Matrix<int,4,1,Eigen::ColMajor> Vector4I; 40 typedef Eigen::Matrix<int,Eigen::Dynamic,1,Eigen::ColMajor> VectorXI; 41 42 typedef Eigen::Matrix<float,2,1,Eigen::ColMajor> Vector2F; 43 typedef Eigen::Matrix<float,3,1,Eigen::ColMajor> Vector3F; 44 typedef Eigen::Matrix<float,4,1,Eigen::ColMajor> Vector4F; 45 typedef Eigen::Matrix<float,Eigen::Dynamic,1,Eigen::ColMajor> VectorXF; 46 47 template<int N> 48 using VectorN = Eigen::Matrix<number_t, N, 1, Eigen::ColMajor>; 49 using Vector2 = VectorN<2>; 50 using Vector3 = VectorN<3>; 51 using Vector4 = VectorN<4>; 52 using Vector6 = VectorN<6>; 53 using Vector7 = VectorN<7>; 54 using VectorX = VectorN<Eigen::Dynamic>; 55 56 typedef Eigen::Matrix<int,2,2,Eigen::ColMajor> Matrix2I; 57 typedef Eigen::Matrix<int,3,3,Eigen::ColMajor> Matrix3I; 58 typedef Eigen::Matrix<int,4,4,Eigen::ColMajor> Matrix4I; 59 typedef Eigen::Matrix<int,Eigen::Dynamic,Eigen::Dynamic,Eigen::ColMajor> MatrixXI; 60 61 typedef Eigen::Matrix<float,2,2,Eigen::ColMajor> Matrix2F; 62 typedef Eigen::Matrix<float,3,3,Eigen::ColMajor> Matrix3F; 63 typedef Eigen::Matrix<float,4,4,Eigen::ColMajor> Matrix4F; 64 typedef Eigen::Matrix<float,Eigen::Dynamic,Eigen::Dynamic,Eigen::ColMajor> MatrixXF; 65 66 template<int N> 67 using MatrixN = Eigen::Matrix<number_t, N, N, Eigen::ColMajor>; 68 using Matrix2 = MatrixN<2>; 69 using Matrix3 = MatrixN<3>; 70 using Matrix4 = MatrixN<4>; 71 using MatrixX = MatrixN<Eigen::Dynamic>; 72 73 typedef Eigen::Transform<number_t,2,Eigen::Isometry,Eigen::ColMajor> Isometry2; 74 typedef Eigen::Transform<number_t,3,Eigen::Isometry,Eigen::ColMajor> Isometry3; 75 76 typedef Eigen::Transform<number_t,2,Eigen::Affine,Eigen::ColMajor> Affine2; 77 typedef Eigen::Transform<number_t,3,Eigen::Affine,Eigen::ColMajor> Affine3; 78 79 typedef Eigen::Rotation2D<number_t> Rotation2D; 80 81 typedef Eigen::Quaternion<number_t> Quaternion; 82 83 typedef Eigen::AngleAxis<number_t> AngleAxis; 84 85 } // end namespace g2o 86 87 #endif 88