The Eigen3 library can not compute the eigenvectors together with the eigenvalues
Hi!, I'm using ubuntu 16.04 and ROS-Kinetic branches,
I have cloned elevation mapping package from https://github.com/ethz-asl/elevation_mapping.
The problem is when I launching the elevation mapping packages at first I get some fused elevation mapping data then after sometimes I get an exception error from the Egien3 library which says:
elevationmapping: /usr/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h:347: Eigen::EigenSolver<MatrixType>::EigenvectorsType Eigen::EigenSolver<MatrixType>::eigenvectors() const [with _MatrixType = Eigen::Matrix
; Eigen::EigenSolver< MatrixType>::EigenvectorsType = Eigen::Matrixstd::complex<double, 2, 2>; typename Eigen::NumTraits::Real = double]: Assertion `m_eigenvectorsOk && "The eigenvectors have not been computed together with the eigenvalues."' failed.
And It crashes.
Is there any way to fix this problem?
I'll appreciate any help.
Asked by DT on 2017-04-17 03:06:44 UTC
Comments
Is there anything else in the error message? Do you know where in elevation_mapping the error is coming from?
Asked by Airuno2L on 2017-04-17 09:04:20 UTC
No, actually I'm on it and when finding it out I'll let you know. But what I know is it refers to "347" lines of the EigenSolver header which relates to ComplexScalar() function.
Asked by DT on 2017-04-17 09:24:58 UTC
I've found it! It comes from line 276 of the ElevationMap.cpp in elevation_mapping. I have tried it with try & catch but It doesn't work.
Asked by DT on 2017-04-18 02:13:09 UTC
this is the line which causes the error and crash; const double ellipseRotation(atan2(solver.eigenvectors().col(maxEigenvalueIndex).real()(1), solver.eigenvectors().col(maxEigenvalueIndex).real()(0)));
Asked by DT on 2017-04-18 02:13:49 UTC
I don't know the code but when I set the default parameters 1,0 permanent the error disappear.
Asked by DT on 2017-04-18 05:46:06 UTC
I've also posted this Issue here https://github.com/ethz-asl/elevation_mapping/issues/39 But got no answer.
Asked by DT on 2017-04-18 08:23:53 UTC
are you sure you don't have any "false" flag set in your code? I'm not sure where but in mine code Eigen::EigenSolver es(matrixname, false); <-- "false" was the reason
Asked by tomek3001 on 2020-02-17 10:40:52 UTC