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
----------------------------------------------



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/