jhu-lcsr / handeye_calib_camodocal

Easy to use and accurate hand eye calibration which has been working reliably for years (2016-present) with kinect, kinectv2, rgbd cameras, optical trackers, and several robots including the ur5 and kuka iiwa.
BSD 2-Clause "Simplified" License
543 stars 178 forks source link

Eigen::JacobiSVD runtime SIGSEGV #6

Closed Mirmix closed 6 years ago

Mirmix commented 6 years ago

Hi while running the calibration i am getting the following segmentation fault. While debugging i learnt that this segmentation fault arising from Eigen. I have already installed eigen3. What can be the reason for such behavior?

Thread 1 "hand_eye_calib" received signal SIGSEGV, Segmentation fault.
0x00007ffff6af2cbc in Eigen::JacobiSVD<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::compute(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, unsigned int) ()
   from /usr/local/lib/camodocal/libcamodocal_calib.so
(gdb) where
#0  0x00007ffff6af2cbc in Eigen::JacobiSVD<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::compute(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, unsigned int) () from /usr/local/lib/camodocal/libcamodocal_calib.so
#1  0x00007ffff6adcd7d in camodocal::HandEyeCalibration::estimateHandEyeScrewInitial(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, bool) () from /usr/local/lib/camodocal/libcamodocal_calib.so
#2  0x00007ffff6adde91 in camodocal::HandEyeCalibration::estimateHandEyeScrew(std::vector<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&, std::vector<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&, std::vector<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&, std::vector<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&, Eigen::Matrix<double, 4, 4, 0, 4, 4>&, bool) () from /usr/local/lib/camodocal/libcamodocal_calib.so
#3  0x00000000004d8919 in estimateHandEye(std::vector<Eigen::Transform<double, 3, 2, 0>, Eigen::aligned_allocator<Eigen::Transform<double, 3, 2, 0> > > const&, std::vector<Eigen::Transform<double, 3, 2, 0>, Eigen::aligned_allocator<Eigen::Transform<double, 3, 2, 0> > > const&) ()
#4  0x00000000004d9129 in estimateHandEye(std::vector<Eigen::Transform<double, 3, 2, 0>, Eigen::aligned_allocator<Eigen::Transform<double, 3, 2, 0> > > const&, std::vector<Eigen::Transform<double, 3, 2, 0>, Eigen::aligned_allocator<Eigen::Transform<double, 3, 2, 0> > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#5  0x00000000004dac1b in main ()
ahundt commented 6 years ago

Did you try running the example? One likely problem source is the dimensions of the data you are inputting.

Mirmix commented 6 years ago

The weird thing is when i am trying same input with other computer which has older version it works.Yes i also tried example same situation.

ahundt commented 6 years ago

If the example failed then I'm almost completely certain it is a problem with your computer's configuration, and not a problem with the code here. reinstall eigen, ceres, etc, then clean and rebuild this library from scratch. This is a common problem if ceres and eigen are not installed correctly, particularly if one is updated and not the other.

ahundt commented 6 years ago

closing due to inactivity, feel free to comment if something else is needed.

bereze commented 1 year ago

Hi, I'm wondering which version of ceres/eigen/opencv did you used to compile?