hku-mars / FAST-LIVO

A Fast and Tightly-coupled Sparse-Direct LiDAR-Inertial-Visual Odometry (LIVO).
GNU General Public License v2.0
1.26k stars 202 forks source link

Thread 1 "fastlivo_mappin" received signal SIGSEGV, Segmentation fault. #151

Closed DioBakery closed 2 days ago

DioBakery commented 4 days ago

使用dataset的时候,gdb报错:

Thread 1 "fastlivo_mappin" received signal SIGSEGV, Segmentation fault.
0x000055555559e464 in lidar_selection::Frame::w2c (xyz_w=..., this=0x55555ddb8540)
    at /home/cgy/fast_livo_ws/src/FAST-LIVO/include/frame.h:89
89    inline Vector2d w2c(const Vector3d& xyz_w) const { return cam_->world2cam( T_f_w_ * xyz_w ); }

函数压栈:

(gdb) bt
#0  0x000055555559e464 in lidar_selection::Frame::w2c (xyz_w=..., this=0x55555e1df280)
    at /home/cgy/fast_livo_ws/src/FAST-LIVO/include/frame.h:89
#1  publish_frame_world_rgb (pubLaserCloudFullRes=..., lidar_selector=...)
    at /home/cgy/fast_livo_ws/src/FAST-LIVO/src/laserMapping.cpp:737
#2  0x000055555558c31f in main (argc=<optimized out>, argv=<optimized out>)
    at /usr/local/include/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp:108

其中当时T_f_w_和xyz_w分别为:

(gdb) print xyz_w
$1 = (const Eigen::Vector3d &) @0x7fffffff6a40: {<Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<Eigen::DenseBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {14.793684959411621, 3.272404670715332, 
          1.4355673789978027}}}}, <No data fields>}
(gdb) print T_f_w_
$2 = {static DoF = 6, so3_ = {static DoF = 3, 
    unit_quaternion_ = {<Eigen::QuaternionBase<Eigen::Quaternion<double, 0> >> = {<Eigen::RotationBase<Eigen::Quaternion<double, 0>, 3>> = {<No data fields>}, <No data fields>}, 
      m_coeffs = {<Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 1, 0, 4, 1> >> = {<Eigen::MatrixBase<Eigen::Matrix<double, 4, 1, 0, 4, 1> >> = {<Eigen::DenseBase<Eigen::Matrix<double, 4, 1, 0, 4, 1> >> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1, 0, 4, 1>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1, 0, 4, 1>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1, 0, 4, 1>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<double, 4, 1, 0, 4, 1> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, 
          m_storage = {m_data = {array = {30.184574018987618, 3.4038943833243388e-09, 
                1.1710290195993843e-119, 9113278308579446}}}}, <No data fields>}}}, 
  translation_ = {<Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<Eigen::DenseBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, 
      m_storage = {m_data = {array = {14.131364293191456, 1.4626882875754682e-95, 
            0.00046034186395706514}}}}, <No data fields>}}

环境:ROS noetic, Ubuntu 20.04

DioBakery commented 2 days ago

已经解决了,参考 https://github.com/hku-mars/FAST-LIVO/issues/40#issuecomment-1499543455