lukasvst / dm-vio

Source code for the paper DM-VIO: Delayed Marginalization Visual-Inertial Odometry
GNU General Public License v3.0
1.05k stars 184 forks source link

The compilation succeeds, but the visualization window crashes when the dataset is run #41

Open Lijingbohere opened 1 year ago

Lijingbohere commented 1 year ago

Why does the visualization window crash when I run the EuRoC dataset and report a segment error in the terminal

Lijingbohere commented 1 year ago

linsanity@linsanity-Legion-Y7000P-IAH7:~/dm-vio-ros/src/dm-vio-ros$ rosrun dmvio_ros node calib=/home/linsanity/dm-vio-ros/src/dm-vio-ros/camConfigs/euroc.txt settingsFile=/home/linsanity/DM-VIO/src/dm-vio/configs/euroc.yaml mode=1 nogui=0 preset=0 useimu=1 quiet=1 start=2 init_requestFullResetNormalizedErrorThreshold=0.8 init_pgba_skipFirstKFs=1 Loading settings from yaml file: /home/linsanity/DM-VIO/src/dm-vio/configs/euroc.yaml! PHOTOMETRIC MODE WITHOUT CALIBRATION!

=============== PRESET Settings: =============== DEFAULT settings:

Rectified Kamera Matrix: 302.967 0 308.852 0 418.335 250.271 0 0 1

NO PHOTOMETRIC Calibration! Reading Photometric Calibration from file PhotometricUndistorter: Could not open file! using pyramid levels 0 to 3. coarsest resolution: 80 x 60! START PANGOLIN! Switching to initializer state: RealtimeCoarseIMUInitState PixelSelector: Using block sizes: 16, 16 OpenGL Error: GL_INVALID_OPERATION: The specified operation is not allowed in the current state. (1282) In: /usr/local/include/pangolin/gl/gl.hpp, line 201 PixelSelector: Using block sizes: 16, 16 InitTimeBetweenFrames: 0.05 InitTimeBetweenFrames: 0.1 InitTimeBetweenFrames: 0.15 InitTimeBetweenFrames: 0.2 InitTimeBetweenFrames: 0.25 InitTimeBetweenFrames: 0.3 Scaling with rescaleFactor: 1.19942 INITIALIZE FROM INITIALIZER (972 pts)! 段错误 (核心已转储)

lukasvst commented 1 year ago

This might be a duplicate of https://github.com/lukasvst/dm-vio-ros/issues/6 Do you have multiple boost versions installed on your machine?

Other possibilities: Does the system work with useimu=0?

Does running DM-VIO on a dataset (without the ROS driver) work?

Otherwise you can run the code with gdb and print the backtrace to find the cause of the issue.

Lijingbohere commented 1 year ago

Thank you very much for taking the time to reply to me, I have successfully reproduced your project with dm-vio-ros, and have conducted experiments on the EuRoC dataset and evaluated the results. Now I want to run your project on the Field Environment Dataset (ROOAD), which provides monocular data streams and IMU data streams, but I can't successfully estimate pose after setting up the camera.txt and corresponding yaml files. I'm guessing it might be somewhere where the configuration is imperfect.

image 2023-05-01 17-08-56 的屏幕截图

Lijingbohere commented 1 year ago

I've evaluated the ROOAD dataset on VINSFusion and I think your project is definitely better than VINSFusion, but I've had some issues and would like your guidance.

lukasvst commented 1 year ago

From your screenshots it looks like it doesn't get past the "visual-init" stage. This would suggest that the camera calibration is not good enough (or maybe the motion is too fast for it to initialize?). Can you confirm that it can successfully track easy (slow) sequences with this camera calibration?

Another trick might be to use the following settings if you are on a vehicle which only moves forward:

setting_weightZeroPriorDSOInitY: 5e09
setting_weightZeroPriorDSOInitX: 5e09

(Maybe you need also to want to increase maxTimeBetweenInitFrames: 1.0, e.g to 2.0)