lukasvst / dm-vio-ros

ROS wrapper for DM-VIO: Delayed Marginalization Visual-Inertial Odometry
GNU General Public License v3.0
111 stars 21 forks source link

Running Problem #6

Closed jts2008315 closed 1 year ago

jts2008315 commented 1 year ago

Hi, I've followed the tutorial and successfully compiled the dm-vio-ros. Then I tried to run the "Example 1: Using EuRoC Bags", It only lasted one second and then crashed..... , which will also be repeats at DSO.There is my condition:

PHOTOMETRIC MODE WITHOUT CALIBRATION! Reading Calibration from file /home/hiroya/catkin_dm/src/dm-vio-master/configs/camera.txt ... found! found RadTan (OpenCV) camera model, building rectifier. Creating RadTan undistorter Input resolution: 752 480 In: 458.654000 457.296000 367.215000 248.375000 -0.283408 0.073959 0.000194 0.000018 Out: Rectify Crop Output resolution: 640 480 finding CROP optimal new model! initial range: x: -1.0297 - 1.1007; y: -0.6043 - 0.5523! iteration 00001: range: x: -1.0245 - 1.0952; y: -0.6043 - 0.5523! iteration 00002: range: x: -1.0194 - 1.0897; y: -0.6043 - 0.5523! iteration 00003: range: x: -1.0194 - 1.0897; y: -0.6013 - 0.5495! iteration 00004: range: x: -1.0194 - 1.0897; y: -0.5983 - 0.5468! iteration 00005: range: x: -1.0194 - 1.0897; y: -0.5983 - 0.5468!

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! set timestamps and exposures to zero! set EXPOSURES to zero! got 3682 images and 0 timestamps and 0 exposures.! ImageFolderReader: got 3682 files in /home/hiroya/下载/Test-bag/euroc/mav0/cam1/data! using pyramid levels 0 to 3. coarsest resolution: 80 x 60! START PANGOLIN! OpenGL Error 502: GL_INVALID_OPERATION: The specified operation is not allowed in the current state. In: /usr/local/include/pangolin/gl/gl.hpp, line 214 Initialization: keep 21.8% (need 2000, have 9173)! INITIALIZE FROM INITIALIZER (2048 pts)! SPARSITY: MinActDist 2.100000 (need 2000 points, have 2048 points)! Segmentation fault (core dumped)!

Not only does Euroc not work properly, but TUM's also has the same error. And I can't solve the "OpenGL Error 502". Is it an environment configuration error or a parameter setting problem? Thank you for your help!

lukasvst commented 1 year ago

What is the command you are running DM-VIO with? Are you trying to run the ROS node with a rosbag or the dataset version which runs on a folder of images?

Example 1 would use the former, but your output suggests you might be trying the latter.

jts2008315 commented 1 year ago

My bad....I have tried to run the ROS node with rosbag, and then what come out is.....

………………………… ………………………… NO PHOTOMETRIC Calibration! Reading Photometric Calibration from file /home/hiroya/catkin_dm/src/dm-vio-master/configs/pcalib.txt PhotometricUndistorter: Could not open file! using pyramid levels 0 to 3. coarsest resolution: 64 x 64! START PANGOLIN! Switching to initializer state: RealtimeCoarseIMUInitState PixelSelector: Using block sizes: 16, 16 OpenGL Error 502: GL_INVALID_OPERATION: The specified operation is not allowed in the current state. In: /usr/local/include/pangolin/gl/gl.hpp, line 214 PixelSelector: Using block sizes: 16, 16 InitTimeBetweenFrames: 0.0500011 InitTimeBetweenFrames: 0.100003 InitTimeBetweenFrames: 0.150004 InitTimeBetweenFrames: 0.200006 InitTimeBetweenFrames: 0.250007 InitTimeBetweenFrames: 0.300028 InitTimeBetweenFrames: 0.35003 InitTimeBetweenFrames: 0.400031 InitTimeBetweenFrames: 0.450033 InitTimeBetweenFrames: 0.500034 InitTimeBetweenFrames: 0.550036 InitTimeBetweenFrames: 0.600037 InitTimeBetweenFrames: 0.650039 InitTimeBetweenFrames: 0.700044 InitTimeBetweenFrames: 0.750046 Scaling with rescaleFactor: 1.38666 Initialization: keep 25.4% (need 2000, have 7864)! INITIALIZE FROM INITIALIZER (2049 pts)! Frame history size: 17 Preparing keyframe: 16 Segmentation fault (core dumped)!

jts2008315 commented 1 year ago

This is the error when I running with EuRoC dataset.

rosrun dmvio_ros node calib=/home/hiroya/catkin_dm/src/dm-vio-master/configs/camera.txt settingsFile=/home/hiroya/catkin_dm/src/dm-vio-master/configs/euroc.yaml mode=1 nogui=0 preset=1 useimu=1 quiet=1 init_requestFullResetNormalizedErrorThreshold=0.8 init_pgba_skipFirstKFs=1

rosbag play '/home/hiroya/download/Test-bag/euroc/MH_01_easy.bag'

I'm pretty sure what I have done is the same as tutorial. And it seems I'm not the only one having this damn problem...

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 502: GL_INVALID_OPERATION: The specified operation is not allowed in the current state. In: /usr/local/include/pangolin/gl/gl.hpp, line 214 PixelSelector: Using block sizes: 16, 16 InitTimeBetweenFrames: 0.05 InitTimeBetweenFrames: 0.1 SKIPPING 0 FRAMES! frames remaining in queue: 2 InitTimeBetweenFrames: 0.15 SKIPPING 0 FRAMES! frames remaining in queue: 4 InitTimeBetweenFrames: 0.2 SKIPPING 0 FRAMES! frames remaining in queue: 6 InitTimeBetweenFrames: 0.25 SKIPPING 0 FRAMES! frames remaining in queue: 8 InitTimeBetweenFrames: 0.3 SKIPPING 0 FRAMES! frames remaining in queue: 10 Scaling with rescaleFactor: 1.19942 Initialization: keep 21.8% (need 2000, have 9162)! INITIALIZE FROM INITIALIZER (2047 pts)! Frame history size: 8 Preparing keyframe: 7 Segmentation fault (core dumped)!

lukasvst commented 1 year ago

This is a bit tricky to debug, as I cannot reproduce the issue on my machine. Here are a couple of things you can try.

(Firstly, does this also happen on V2_01? http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/vicon_room2/V2_01_easy/V2_01_easy.bag )

I assume that the dataset version also doesn't work? (see instructions here: https://github.com/lukasvst/dm-vio#3-running ) Sometimes it's easier to first try to get the dataset version to work. Can you try running the dataset version (e.g. on TUM-VI corridor1) and send me both, the command you are executing, and the commandline output?

If it doesn't work can you also try running the dataset version (not the ROS one) with arguments mode=1 and then also with useimu=0 and tell me if either of them works?

Lastly, you could run the ROS node with GDB and send me the stacktrace after the segmentation fault, then I could try to find the root cause.

jts2008315 commented 1 year ago

Sorry about waiting.. Sadly it still doesn't work with EuRoc-V2_01_easy.bag and TUM-VI corridor1 etc... It seems that all the problems are pointing to the boost library. Ummm, Im na sure if the infomation I provided is complete.. Here is my GDB debug log... Hope it comes in handy,thank u.

DM-VIO-GDB-debug.odt

lukasvst commented 1 year ago

Thanks a lot for the detailed info! It looks like you ran everything correctly.

It seems to be a problem with boost indeed, but unfortunately the stacktrace is not very telling, which makes the issue hard to debug from a distance. In principle the boost version (1.65) is fine (and the same I'm using). Are you sure that all your libraries use the same boost version?

What operating system are you using? (I assume it's Ubuntu 18.04, but if it's not this might be related to the issue.)

I think it might help to execute DM-VIO with the additional commandline arguments nomt=1 and see if it works (or works longer at least). While this will make the system slower, it can help us find the issue.

jts2008315 commented 1 year ago

ahhhyas, I fixed it! The reason for this is because there are several versions of boost libraries co-existing on my device. (The other one is 1.77 and I removed it.) My device is ubuntu18.04 and I also tried it later on ubuntu16.04, but the build failed, possibly because the boost version was too low. Greatly appreciated!

lukasvst commented 1 year ago

Glad to hear that you were able to fix it. Thanks for letting us know what the issue was!