luigifreda / plvs

PLVS is a real-time SLAM system with points, lines, volumetric mapping and 3D unsupervised incremental segmentation.
GNU General Public License v3.0
453 stars 67 forks source link

The RGBD camera running effect under the TUM data set was amazing.But below I encountered a new problem, I hope you can help. #13

Closed dansonZhang closed 9 months ago

dansonZhang commented 9 months ago

I tried running PLVSII again, and the RGBD camera running effect under the TUM data set was amazing. I admire it very much.

But below I encountered a new problem, I hope you can help.

I found that in Stereo mode or Stereo-Inertial mode, only line features can be added (other new feature parameters are set to 0). When I add new feature parameters such as PointCloudMapping.on: 1, the system will crash with a segmentation fault. Is this caused by my problem? Some detailed documents below. Run command: ./run_tum_vi_stereo.sh or ./run_tum_vi_stereo_inertial.sh Terminal output: terminal_output_run_tum_vi_stereo.txt or terminal_output_run_tum_vi_stereo_inertial.txt YAML file: TUM-VI_rectified.yaml(only modified PointCloudMapping.on: 1)

I found that when the stereo mode of PLVSII only turns on the point and line features, in the dataset-outdoors8_512_16 sequence of the TUM-VI dataset, after leaving the building, the trajectory will drift circularly at a constant speed (as shown in the figure stereo_TUM -VI-dataset-outdoors8_512_16_point_line_1.png, stereo_TUM-VI-dataset-outdoors8_512_16_point_line_2.png). It seems to be caused by fisheye camera distortion.

Similar to the second doubt, I found that the stereo-inertial of PLVSII, when only the point and line features are turned on, in the dataset-outdoors8_512_16 sequence of the TUM-VI dataset, is in a specific place (as shown in the figure stereo-inertial_TUM -VI-dataset-outdoors8_512_16_point_line_1.png, stereo-inertial_TUM-VI-dataset-outdoors8_512_16_point_line_2.png) will cause the IMU to run away.

dansonZhang commented 9 months ago

terminal_output_run_tum_vi_stereo.txt terminal_output_run_tum_vi_stereo_inertial.txt

dansonZhang commented 9 months ago

stereo_TUM-VI-dataset-outdoors8_512_16_point_line_1.png: stereo_TUM-VI-dataset-outdoors8_512_16_point_line_1

stereo_TUM-VI-dataset-outdoors8_512_16_point_line_2.png: stereo_TUM-VI-dataset-outdoors8_512_16_point_line_2

stereo-inertial_TUM-VI-dataset-outdoors8_512_16_point_line_1.png: stereo-inertial_TUM-VI-dataset-outdoors8_512_16_point_line_1

stereo-inertial_TUM-VI-dataset-outdoors8_512_16_point_line_2.png: stereo-inertial_TUM-VI-dataset-outdoors8_512_16_point_line_2

luigifreda commented 9 months ago

Hi, thanks for the post.

Some preliminary questions:

1

I found that in Stereo mode or Stereo-Inertial mode, only line features can be added (other new feature parameters are set to 0). When I add new feature parameters such as PointCloudMapping.on: 1, the system will crash with a segmentation fault.

I don't see this problem both on Euroc and TUM-VI. I can enable PointCloudMapping.on: 1 without problems. Can you test on Euroc if you have the same problem? If yes, can you enter in Thirdparty/libelas-gpu/build and run ./test_gpu and copy-paste here what you get as stdout?

I see you are getting the crash problem on the TUM-VI slide3 dataset.

I checked the dataset and nothing got wrong.

2

I found that when the stereo mode of PLVSII only turns on the point and line features, in the dataset-outdoors8_512_16 sequence of the TUM-VI dataset, after leaving the building, the trajectory will drift circularly at a constant speed (as shown in the figure stereo_TUM -VI-dataset-outdoors8_512_16_point_line_1.png, stereo_TUM-VI-dataset-outdoors8_512_16_point_line_2.png). It seems to be caused by fisheye camera distortion.

I reproduced this problem. I solved it by using the setting System.thFarPoints: 20.0 that ignores points that are too far away (like "sky" points). I am pushing some small changes that allow to correctly load that setting.

That being said, I think a couple of notes are in order. In TUM-VI, using a rectified stereo pair allows to use the lines and volumetric mapping. However, this requires a pre-processing (that acts as a pre-filter on the images during the rectification) and reduces the FOV of the camera. In general, these 2 factors may affect both SLAM robustness and accuracy.