MSCEqF 1.0
Multi State Constraint Equivariant Filter for visual inertial navigation
Loading...
Searching...
No Matches
fptypes.hpp
1// Copyright (C) 2023 Alessandro Fornasier.
2// Control of Networked Systems, University of Klagenfurt, Austria.
3//
4// All rights reserved.
5//
6// This software is licensed under the terms of the Apache License, Version 2.0
7// (the "License"); you may not use this file except in compliance with the
8// License. You may obtain a copy of the License at
9//
10// http://www.apache.org/licenses/LICENSE-2.0
11//
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15// License for the specific language governing permissions and limitations
16// under the License.
17//
18// You can contact the authors at <alessandro.fornasier@ieee.org>
19
20#ifndef FPTYPES_HPP
21#define FPTYPES_HPP
22
23#include <groups/In.hpp>
24#include <groups/SDB.hpp>
25#include <groups/TG.hpp>
26#include <groups/SOT3.hpp>
27
28namespace msceqf
29{
30#ifdef SINGLE_PRECISION
31
32using fp = float;
33
34#else
35
36using fp = double;
37
38#endif
39
40using SO3 = group::SO3<fp>;
41
42using SE3 = group::SEn3<fp, 1>;
43
44using SE23 = group::SEn3<fp, 2>;
45
46using SOT3 = group::SOT3<fp>;
47
48using In = group::In<fp>;
49
50using SDB = group::SemiDirectBias<fp>;
51
52using TG = group::Tangent<fp>;
53
54using Vector2 = Eigen::Matrix<fp, 2, 1>;
55
56using Vector3 = Eigen::Matrix<fp, 3, 1>;
57
58using Vector4 = Eigen::Matrix<fp, 4, 1>;
59
60using Vector6 = Eigen::Matrix<fp, 6, 1>;
61
62using Vector9 = Eigen::Matrix<fp, 9, 1>;
63
64using Vector15 = Eigen::Matrix<fp, 15, 1>;
65
66using Vector18 = Eigen::Matrix<fp, 18, 1>;
67
68using Vector21 = Eigen::Matrix<fp, 21, 1>;
69
70using Vector24 = Eigen::Matrix<fp, 24, 1>;
71
72using Vector25 = Eigen::Matrix<fp, 25, 1>;
73
74using Vector29 = Eigen::Matrix<fp, 29, 1>;
75
76using VectorX = Eigen::Matrix<fp, Eigen::Dynamic, 1>;
77
78using Matrix2 = Eigen::Matrix<fp, 2, 2>;
79
80using Matrix3 = Eigen::Matrix<fp, 3, 3>;
81
82using Matrix4 = Eigen::Matrix<fp, 4, 4>;
83
84using Matrix5 = Eigen::Matrix<fp, 5, 5>;
85
86using Matrix6 = Eigen::Matrix<fp, 6, 6>;
87
88using Matrix7 = Eigen::Matrix<fp, 7, 7>;
89
90using Matrix9 = Eigen::Matrix<fp, 9, 9>;
91
92using Matrix12 = Eigen::Matrix<fp, 12, 12>;
93
94using Matrix15 = Eigen::Matrix<fp, 15, 15>;
95
96using Matrix18 = Eigen::Matrix<fp, 18, 18>;
97
98using Matrix21 = Eigen::Matrix<fp, 21, 21>;
99
100using Matrix24 = Eigen::Matrix<fp, 24, 24>;
101
102using Matrix25 = Eigen::Matrix<fp, 25, 25>;
103
104using Matrix29 = Eigen::Matrix<fp, 24, 24>;
105
106using MatrixX = Eigen::MatrixXd;
107
108using Quaternion = Eigen::Quaternion<fp>;
109
110template <int R, int C, int T = Eigen::ColMajor>
111using Matrix = Eigen::Matrix<fp, R, C, T>;
112
113template <typename T>
114using Ref = Eigen::Ref<T>;
115
116template <typename T>
117using Map = Eigen::Map<T>;
118
119} // namespace msceqf
120
121#endif // FPTYPES_HPP