MIT-SPARK / Kimera-VIO

Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.
BSD 2-Clause "Simplified" License
1.53k stars 416 forks source link

Kimera crashes whenever a loop is detected. #209

Open brytsknguyen opened 1 year ago

brytsknguyen commented 1 year ago

Description:

Install Kimera on ubuntu 20.04 with the recommended instructions. Kimera VIO works fine. However if you select use_lcd, the software crashes. I have also tested on a virtual machine running ubuntu 18.04, same problem.

Command:

# roslaunch kimera_vio_ros_euroc.launch from kimera_vio_ros repo, with gdb launch prefix

<node name="kimera_vio_ros_node" pkg="kimera_vio_ros" type="kimera_vio_ros_node"
        output="screen" ns="kimera_vio_ros"
        args="--use_lcd=$(arg use_lcd)
              --vocabulary_path=$(arg path_to_vocab)
              --flagfile=$(arg params_folder)/flags/Mesher.flags
              --flagfile=$(arg params_folder)/flags/VioBackend.flags
              --flagfile=$(arg params_folder)/flags/RegularVioBackend.flags
              --flagfile=$(arg params_folder)/flags/Visualizer3D.flags
              --logtostderr=1
              --colorlogtostderr=1
              --log_prefix=1
              --v=$(arg verbosity)
              --log_output=$(arg log_output)
              --log_euroc_gt_data=$(arg log_output)
              --output_path=$(arg log_output_path)
              --viz_type=$(arg viz_type)
              --visualize=$(arg visualize)"
              launch-prefix="gdb -ex run --args">

Console output:


# GBD backtrace 

Thread 24 "kimera_vio_ros_" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff967fc700 (LWP 161936)]
__GI___libc_free (mem=0x25) at malloc.c:3102
3102    malloc.c: No such file or directory.
(gdb) bt
#0  __GI___libc_free (mem=0x25) at malloc.c:3102
#1  0x00007ffff345f0ea in void Eigen::internal::lmpar2<double>(Eigen::ColPivHouseholderQR<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, double, double&, Eigen::Matrix<double, -1, 1, 0, -1, 1>&) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#2  0x00007ffff34cdb2c in Eigen::LevenbergMarquardt<Eigen::NumericalDiff<opengv::relative_pose::modules::fivept_nister::PollishCoefficientsFunctor, (Eigen::NumericalDiffMode)0>, double>::minimizeOneStep(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#3  0x00007ffff34cb7d3 in opengv::relative_pose::modules::fivept_nister::pollishCoefficients(Eigen::Matrix<double, 10, 20, 0, 10, 20> const&, double&, double&, double&) ()
    at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#4  0x00007ffff347c6a2 in opengv::relative_pose::modules::fivept_nister_main(Eigen::Matrix<double, 9, 4, 0, 9, 4> const&, std::vector<Eigen::Matrix<double, 3, 3, 0, 3, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 3, 0, 3, 3> > >&) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#5  0x00007ffff344fe06 in opengv::relative_pose::fivept_nister(opengv::relative_pose::RelativeAdapterBase const&, opengv::Indices const&) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#6  0x00007ffff3450101 in opengv::relative_pose::fivept_nister(opengv::relative_pose::RelativeAdapterBase const&, std::vector<int, std::allocator<int> > const&) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#7  0x00007ffff343a0ac in opengv::sac_problems::relative_pose::CentralRelativePoseSacProblem::computeModelCoefficients(std::vector<int, std::allocator<int> > const&, Eigen::Matrix<double, 3, 4, 0, 3, 4>&) const ()
    at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#8  0x00007ffff326cb0e in opengv::sac::Ransac<opengv::sac_problems::relative_pose::CentralRelativePoseSacProblem>::computeModel(int) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#9  0x00007ffff33ced4c in VIO::LoopClosureDetector::geometricVerificationNister(unsigned long const&, unsigned long const&, gtsam::Pose3*, std::vector<unsigned long, std::allocator<unsigned long> >*, std::vector<unsigned long, std::allocator<unsigned long> >*) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so
#10 0x00007ffff33cf345 in VIO::LoopClosureDetector::geometricVerificationCheck(unsigned long const&, unsigned long const&, gtsam::Pose3*, std::vector<unsigned long, std::allocator<unsigned long> >*, std::vector<unsigned long, std::allocator<unsigned long> >*) () at /home/tmn/kimera_ws/devel/lib/libkimera_vio.so

Console output:


# Without GBD

W0411 20:28:49.462188 162651 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:49.462203 162651 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:49.469087 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.519409 162655 DataProviderModule.cpp:68] Waiting for IMU data...
I0411 20:28:49.564196 162499 KimeraVioRos.cpp:139] Statistics
-----------                                  #  Log Hz  {avg     +- std    }    [min,max]
Display [ms]                                      189   9.98260 {0.121693 +- 0.00000}   [0,23]
Lcd [ms]                                           95   5.01784 {41.4000 +- 3.12301}    [37,62]
Mesher [ms]                                        95   5.02646 {6.61053 +- 2.58183}    [2,16]
Stereo Data Provider [ms]                           0
VioBackend [ms]                                    95   5.02843 {8.90526 +- 3.78989}    [0,17]
VioFrontend Frame Rate [ms]                       284   15.0656 {1.76408 +- 1.15137}    [1,8]
VioFrontend Keyframe Rate [ms]                     94   5.00709 {34.4894 +- 13.8547}    [22,65]
VioFrontend [ms]                                  379   19.9890 {10.0026 +- 16.2115}    [1,65]
Visualizer [ms]                                    95   5.01770 {0.0210526 +- 0.144321} [0,1]
backend_input_queue Size [#]                       95   3.95213 {1.00000 +- 0.00000}    [1,1]
data_provider_left_frame_queue Size [#]           380   15.7613 {1.00000 +- 0.00000}    [1,1]
data_provider_right_frame_queue Size [#]          380   15.7613 {1.00263 +- 0.00000}    [1,2]
display_input_queue Size [#]                      189   7.84623 {1.00000 +- 0.00000}    [1,1]
frontend_input_queue Size [#]                     379   15.7174 {1.00000 +- 0.00000}    [1,1]
lcd_backend_queue Size [#]                         95   5.02447 {1.00000 +- 0.00000}    [1,1]
lcd_frontend_queue Size [#]                       379   19.9734 {2.72296 +- 1.21089}    [1,5]
mesher_backend Size [#]                            95   3.95103 {1.00000 +- 0.00000}    [1,1]
mesher_frontend Size [#]                          379   15.7182 {2.72296 +- 1.21089}    [1,5]
visualizer_backend_queue Size [#]                  95   5.02790 {1.00000 +- 0.00000}    [1,1]
visualizer_frontend_queue Size [#]                379   19.9850 {2.72296 +- 1.21089}    [1,5]
visualizer_lcd_queue Size [#]                      95   5.01778 {1.00000 +- 0.00000}    [1,1]
visualizer_mesher_queue Size [#]                   95   5.02640 {1.00000 +- 0.00000}    [1,1]
W0411 20:28:49.568740 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.618680 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.635601 162648 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:49.635615 162648 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:49.664433 162651 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:49.664449 162651 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:49.668896 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.720077 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.769026 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.818542 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.850425 162648 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:49.850450 162648 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:49.868350 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.880959 162651 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:49.880975 162651 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:49.917809 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:49.967880 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.019332 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.039240 162648 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:50.039255 162648 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:50.067591 162651 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:50.067608 162651 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:50.068687 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.118539 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.164909 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.218595 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.237824 162648 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:50.237839 162648 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
E0411 20:28:50.258699 162650 Mesher.cpp:1729] Delaunay Triangle out of image (size: x: 0, y: 0, height: 480, width 752
 Triangle: x, y: 
0, 2256
529.698, 442.679
659.564, 415.301
W0411 20:28:50.268348 162651 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:50.268366 162651 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:50.269194 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.318542 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.368016 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.418123 162655 DataProviderModule.cpp:68] Waiting for IMU data...
W0411 20:28:50.438990 162648 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:50.439006 162648 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:50.466760 162651 StereoMatcher.cpp:130] sparseStereoMatching: StereoFrame is already rectified!
W0411 20:28:50.466776 162651 StereoCamera.cpp:263] Rectifying already rectified stereo frame ...
W0411 20:28:50.467871 162655 DataProviderModule.cpp:68] Waiting for IMU data...
[kimera_vio_ros/kimera_vio_ros_node-2] process has died [pid 162499, exit code -11, cmd /home/tmn/kimera_ws/devel/lib/kimera_vio_ros/kimera_vio_ros_node --use_lcd=true --vocabulary_path=/home/tmn/kimera_ws/src/Kimera-VIO/vocabulary/ORBvoc.yml --flagfile=/home/tmn/kimera_ws/src/Kimera-VIO/params/Euroc/flags/Mesher.flags --flagfile=/home/tmn/kimera_ws/src/Kimera-VIO/params/Euroc/flags/VioBackend.flags --flagfile=/home/tmn/kimera_ws/src/Kimera-VIO/params/Euroc/flags/RegularVioBackend.flags --flagfile=/home/tmn/kimera_ws/src/Kimera-VIO/params/Euroc/flags/Visualizer3D.flags --logtostderr=1 --colorlogtostderr=1 --log_prefix=1 --v=0 --log_output=false --log_euroc_gt_data=false --output_path=/home/tmn/kimera_ws/src/Kimera-VIO-ROS/output_logs/ --viz_type=0 --visualize=true left_cam/image_raw:=/cam0/image_raw right_cam/image_raw:=/cam1/image_raw imu:=/imu0 left_cam/camera_info:=/cam0/camera_info right_cam/camera_info:=/cam1/camera_info reinit_flag:=reinit_flag reinit_pose:=reinit_pose odometry:=odometry resiliency:=resiliency imu_bias:=imu_bias optimized_trajectory:=optimized_trajectory pose_graph:=pose_graph mesh:=mesh frontend_stats:=frontend_stats debug_mesh_img/image_raw:=debug_mesh_img/image_raw feature_tracks/image_raw:=feature_tracks/image_raw time_horizon_pointcloud:=time_horizon_pointcloud __name:=kimera_vio_ros_node __log:=/home/tmn/.ros/log/bbbcdbb8-d86c-11ed-9a47-813417ced95d/kimera_vio_ros-kimera_vio_ros_node-2.log].
log file: /home/tmn/.ros/log/bbbcdbb8-d86c-11ed-9a47-813417ced95d/kimera_vio_ros-kimera_vio_ros_node-2*.log

Additional files: Please attach all the files needed to reproduce the error.

Please give also the following information: