Re: [eigen] Potential unsupported module: Lie Groups |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
Hi,
I wrote a library MTK with similar goals some time ago. It is published
here:
http://openslam.org/MTK
MTK is Eigen-based as well and supports manifold primitives such as R^n,
SO(2), SO(3) but also S^2 which is not a Lie-Group (all primitives are
templated for arbitrary scalar types).
If you are just interested in these, see here:
https://openslam.informatik.uni-freiburg.de/data/svn/MTK/trunk/cpp/mtk/types/
A strength of MTK is its ability to construct compound manifolds, e.g.
SO(3) x R^3 x R^3 is again a manifold, etc.
From an algorithm's point of view, compound manifolds act like any
other manifold, but from the user's point they are easily accessible by
their sub-components.
The construction depends strongly on Boost-preprocessor macros, so I
guess it would not be suited for integration into Eigen.
We backed up the theory behind our method in a paper:
"Integrating generic sensor fusion algorithms with sound state
representations through encapsulation of manifolds"
The paper also emphasizes the advantage of using manifold-based
representations over singular representations (such as Euler angles for
SO(3)).
On 06.05.2012 17:24, Hauke Strasdat wrote:
Also, a number of unit test are included (which verify that
singularities in exp and log are sidestepped properly).
I'm afraid you missed a singularity for log of the negative unit
quaternion (w=-1, v=0). Also, by using acos instead of atan, your
results will degenerate if your quaternion gets denormalized over time.
I am aware that this library has quite an overlap with the Geometry
module. Still, I think it might be quite useful to
some users since it offers additional functionality and a unified API.
If there is some interest, I could add it as an unsupported Eigen
module. In the long run,
one could try to figure out, how to merge it or integrate it further
with the Geometry module.
I think a first step could be to integrate quaternion exp and log into
Eigen, maybe also add scaled-axis representation (i.e. the result of
SO3::log) as another representation for rotations.
Christoph
--
----------------------------------------------
Dipl.-Inf. Christoph Hertzberg
Cartesium 0.049
Universität Bremen
Enrique-Schmidt-Straße 5
28359 Bremen
Tel: +49 (421) 218-64252
----------------------------------------------