Re: [eigen] eigen3 SelfAdjointEigenSolver<Matrix3f> still "buggy"

[ Thread Index | Date Index | More Archives ]

Done. Thanks! We'll keep it until Eigen3 beta2 comes out and then replace our code with calls to Eigen.

Is your last remark something we should worry about? What happens if two eigenvalues are the same?


On 09/01/2010 04:01 AM, Gael Guennebaud wrote:
On Tue, Aug 31, 2010 at 8:28 PM, Radu Bogdan Rusu<rusu@xxxxxxxxxxxxxxxx>  wrote:
Do you have anything against us copying these two methods in PCL until
Eigen3 beta2 comes out? This is a hefty speed-up, and our 3D feature
estimation will be happier. :)

no problem, but please use the latest version that I've just committed
which includes the respective copyrights (part of the code comes form
Geometric Tools).

Note that currently it assumes all eigenvalues are different....


| Radu Bogdan Rusu |

On 08/31/2010 11:24 AM, Benoit Jacob wrote:

2010/8/31 Radu Bogdan Rusu<rusu@xxxxxxxxxxxxxxxx>:

Wow, not bad at all:

0.196087 seconds
0.06826 seconds
Eigenvalue/eigenvector diffs:
  1.15484e-07 -2.38419e-07  3.57628e-07
-5.96046e-08  6.55651e-07  2.98023e-08
-2.98023e-08 -8.34465e-07  4.17233e-07
-5.96046e-08  4.17233e-07 -3.57628e-07

This might be good enough for us :) I wonder what numerical issues were
referring to. All in all, this would be a great addition to Eigen3! If
add it as a template specialization it might be difficult for someone
to avoid using it. I vote for a special class.

I agree, a special class makes the most sense.



On 08/31/2010 01:14 AM, Gael Guennebaud wrote:

If you want an even faster 3x3 eigen decomposition, you can have a
look at the file bench/eig33.cpp (in the hg repo), which compares
current Eigen's 3x3 eigensolver against a direct method solving the
underlying degree 3 polynomial. To test it:

g++ -I .. -O2 -lrt eig33.cpp -DNDEBUG&&      ./a.out

Here it is about 4 times faster though the speed of the default method
is not constant since this is an iterative method. I'm still unsure
about how to integrate it into Eigen because I don't want to make it
the default. Indeed, it might suffers from some numerical issues if
the matrix is not well conditioned. It also involves some
trigonometric functions that is not very nice. So I guess we could add
a template option to SelfAdjointEigenSolver or add a special class...
well there are many possibilities!

| Radu Bogdan Rusu |

| Radu Bogdan Rusu |

Mail converted by MHonArc 2.6.19+