You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**manif** is a header-only c++11 Lie theory library for state-estimation
10
+
**manif** is a header-only C++11 Lie theory library for state-estimation
11
11
targeted at robotics applications.
12
12
13
13
At the moment, it provides the groups:
14
14
- SO(2): rotations in the plane.
15
-
- SE(2): righd motion (rotation and translation) in the plane.
15
+
- SE(2): rigid motion (rotation and translation) in the plane.
16
16
- SO(3): rotations in 3D space.
17
-
- SE(3): righd motion (rotation and translation) in 3D space.
17
+
- SE(3): rigid motion (rotation and translation) in 3D space.
18
18
19
19
Other Lie groups can and will be added, contributions are welcome.
20
20
21
21
**manif** is based on the mathematical presentation of the Lie theory available in [this paper](http://arxiv.org/abs/1812.01537).
22
22
We recommend every user of **manif** to read the paper (17 pages) before starting to use the library.
23
-
The paper provides a thorough introduction to Lie theory, in a simplified way so as to make the entrance to Lie theory easy for average robotician who is interested in designing rigorous and elegant state estimation algorithms.
23
+
The paper provides a thorough introduction to Lie theory, in a simplified way so as to make the entrance to Lie theory easy for the average robotician who is interested in designing rigorous and elegant state estimation algorithms.
24
24
25
25
**manif** has been designed for an easy integration to larger projects:
26
26
- A single dependency on [Eigen](http://eigen.tuxfamily.org),
27
27
- header-only for easy integration,
28
28
- templated on the underlying scalar type so that one can use its own,
29
-
- and c++11, since not everyone gets to enjoy the latest c++ features, especially in industry.
29
+
- and C++11, since not everyone gets to enjoy the latest C++ features, especially in industry.
30
30
31
31
It provides analytic computation of Jacobians for all the operations.
32
32
It also supports template scalar types. In particular, it can work with the
33
33
[`ceres::Jet`](http://ceres-solver.org/automatic_derivatives.html#dual-numbers-jets) type, allowing for automatic Jacobian computation --
34
-
<ahref="#jacobians">see related paragraph on Jacobians below</a>.
34
+
[see related paragraph on Jacobians below](#jacobians).
35
35
36
-
All Lie group classes defined in **manif** have in common that they inherit from a templated base class (CRTP).
36
+
All Lie group classes defined in **manif** have in common that they inherit from a templated base class ([CRTP](https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)).
37
37
It allows one to write generic code abstracting the Lie group details.
38
38
Please find more information in the related [wiki page](https://github.com/artivis/manif/wiki/Writing-generic-code)
39
39
@@ -65,7 +65,9 @@ ___
65
65
66
66
### Dependencies
67
67
68
-
- Eigen 3 : ```apt-get install libeigen3-dev```
68
+
- Eigen 3 :
69
+
- Ubuntu and similar ```apt-get install libeigen3-dev```
70
+
- OS X ```brew install eigen```
69
71
-[lt::optional](https://github.com/TartanLlama/optional) : included in the `external` folder
@@ -125,8 +124,8 @@ target_include_directories(${PROJECT_NAME} SYSTEM ${manif_INCLUDE_DIRS})
125
124
| Act on vector | <imgsrc="https://latex.codecogs.com/png.latex?\mathbf\mathcal{X}\circ\mathbf&space;v"/> |`X.act(v)`|
126
125
| Retract to group element | <imgsrc="https://latex.codecogs.com/png.latex?\exp(\mathbf\varphi^\wedge)"title="\exp(\mathbf \varphi^{^})" /> |`w.exp()`|
127
126
| Lift to tangent space | <imgsrc="https://latex.codecogs.com/png.latex?\log(\mathbf&space;\mathcal{X})^\vee"title="\log(\mathbf \Phi)" /> |`X.log()`|
| Manifold right plus | <imgsrc="https://latex.codecogs.com/png.latex?\mathbf\mathcal{X}\oplus\mathbf\varphi=\mathbf\mathcal{X}\circ\exp(\mathbf\varphi^\wedge)" /> |`X + w`<br/>`X.plus(w)`<br/>`X.rplus(w)`|
132
131
| Manifold left plus | <imgsrc="https://latex.codecogs.com/png.latex?\mathbf\varphi\oplus\mathbf\mathcal{X}=\exp(\mathbf\varphi^\wedge)\circ\mathbf\mathcal{X}" /> |`w + X`<br/>`w.plus(X)`<br/>`w.lplus(X)`|
@@ -184,9 +183,9 @@ local perturbation on the tangent space.
184
183
These Jacobians map tangent spaces, as described in [this paper](http://arxiv.org/abs/1812.01537).
185
184
186
185
However, many non-linear solvers
187
-
(e.g. [Ceres](http://ceres-solver.org/)) expect functions to be differentiated wrt the underlying
186
+
(e.g. [Ceres](http://ceres-solver.org/)) expect functions to be differentiated with respect to the underlying
188
187
representation vector of the group element
189
-
(e.g. wrt to quaternion vector for <imgsrc="https://latex.codecogs.com/png.latex?SO^3"/>).
188
+
(e.g. with respect to quaternion vector for <imgsrc="https://latex.codecogs.com/png.latex?SO^3"/>).
190
189
191
190
For this reason **manif** is compliant with [Ceres](http://ceres-solver.org/)
192
191
auto-differentiation and the
@@ -208,11 +207,11 @@ Some more general documentation and tips on the use of the library is available
208
207
To generate the documentation on your machine, type in the terminal
209
208
210
209
```terminal
211
-
cd [manif]
210
+
cd manif
212
211
doxygen .doxygen.txt
213
212
```
214
213
215
-
and find it at `[manif]/doc/html/index.html`.
214
+
and find it at `manif/doc/html/index.html`.
216
215
217
216
Throughout the code documentation we refer to 'the paper' which you can
218
217
find in the section <ahref="#publications">Publications</a>.
0 commit comments