[ros-users] pcl normals

Michael Krainin mkrainin at cs.washington.edu
Thu Jul 22 19:30:03 UTC 2010


After switching from point_cloud_mapping to pcl, I noticed that the
normals I was getting for point clouds were of noticeably worse
quality.

I ended up doing a side-by-side comparison of the outputs of
cloud_geometry::nearest::computePointNormal and
pcl::NormalEstimation::computePointNormal. I found differences in
resulting normals of as much as 30 degrees.

After further debugging, I traced the problem down to the performance
of Eigen::SelfAdjointEigenSolver when using Matrix3f rather than
Matrix3d (recall that point_cloud_mapping used Matrix3d for covariance
and pcl uses Matrix3f). I have filed a bug report with eigen
(http://bitbucket.org/eigen/eigen/issue/149/selfadjointeigensolver-matrix3f-vs).

For now, I would very strongly recommend changing covariance_matrix_
in pcl/features/normal_3d.h to an Eigen::Matrix3d and adjusting
functions that use it accordingly. I have done so in my local copy,
and can confirm that it fixes the problem.

-Michael Krainin



More information about the ros-users mailing list