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