htkseason / VOLDOR

VOLDOR-SLAM is a real-time dense-indirect SLAM system takes dense optical flows as input that supports monocular, stereo and RGB-D video sequence.
472 stars 56 forks source link

ImportError for VO and Full SLAM Module #22

Open donkeymouse opened 2 years ago

donkeymouse commented 2 years ago

Hello guys! First of all, Thank you for such a wonderful work! As a fellow academic who researches in optical flow, this is a great asset to the community!

I have been trying to execute the VO and the Full-SLAM module following your guidelines you suggested. I have installed all dependencies you mentioned (libopencv-dev, DBoW3, Ceres2 (all tests passed!), PyOpenGL) and think I managed to create the 'vo.so' and 'slam_full.so' files (with bunch of warnings displayed in the terminal window?).

I tried to run the VO demo first then execute the Full Slam demo, however, from both approaches I receive the following import errors.

"VO"

"ImportError: /home/hri/PycharmProjects/VOLDOR/VOLDOR/demo/pyvoldor_vo.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2cv6String10deallocateEv"

"Full SLAM"

"ImportError: /home/hri/PycharmProjects/VOLDOR/VOLDOR/demo/pyvoldor_full.cpython-36m-x86_64-linux-gnu.so: undefined symbol: cusolverDnSetStream"

I am not sure of how to handle the following errors?

The environment I am currently working with is:

Again, thanks for your support

htkseason commented 2 years ago

Thanks for your kind words. The problem with your VO compling seems related to opencv. Did you install it from apt? Can you try using opencv 3.4.X follow the README?

donkeymouse commented 2 years ago

Hello Min! Thanks for your reply.

By following your instructions, I reinstalled OpenCV from source and was able to run the VO part. (It seemed like I needed to reinstall my OpenCV after my recent upgrade of my GPU)

However, I am still unable to run the full-SLAM architecture. I am able to execute the setuplinux_full.py as you have instructed and can generate the .so and linux-gpu kernel files.

I still suffer from the following error: "ImportError: /home/hri/PycharmProjects/VOLDOR/VOLDOR/demo/pyvoldor_full.cpython-36m-x86_64-linux-gnu.so: undefined symbol: cusolverDnSetStream"

From looking at other issue posts, it seemed like there were frequent sources of errors due to incorrect installation of Ceres2 with SuiteSparse so I reinstalled the entire library again and was able to pass all the tests ( and have executed sudo make install)

ceres_test_passed

I followed the instruction and install SuiteSparse through "sudo apt-get install libsuitesparse-dev"

After all this, I was stilll unable to execute the full_slam pipeline.

Do you have any idea on how to solve this?

Many Thanks

donkeymouse

htkseason commented 2 years ago

Can you run VO-only now?

donkeymouse commented 2 years ago

Hello Min. Yes, I can run VO-only now. However, I am still not able to run the Full-SLAM module part...

htkseason commented 2 years ago

Your current issue seems similar to this guy. https://github.com/htkseason/VOLDOR/issues/17#issuecomment-1121961868 Could you please try add -l cusolver -l cublas to slam_py/install/setup_linux_full.py line 16. If it does not work, maybe add cusolver, cusolver to the list in line 29.

It is strange since what is additionally needed in full-slam pipeline is only ceres, but this error points to cuda. Have you installed cuda toolkit?

donkeymouse commented 2 years ago

Hello Min, Thank you for your reply.

I have attempted both of your suggested methods (adding -l cusolver to line 16 and adding it to the list in 29) but the problem persists.

I have tried the following line for the first approach:

gpu_kernel_build_cmd = f'/usr/local/cuda/bin/nvcc --compiler-options "-shared -fPIC" {gpu_sources_cpp} {gpu_sources_cu} -l cusolver -l cublas -lib -o libgpu-kernels.so -O3 {nvcc_machine_code}'

I have cuda toolkit 11.4 installed into my machine.

Here is my output from running " nvcc -V"

image

Happy to provide more info if you need one.

Thanks alot

donkeymouse

bytezh commented 2 years ago

Hello Min, Thank you for your reply.

I have attempted both of your suggested methods (adding -l cusolver to line 16 and adding it to the list in 29) but the problem persists.

I have tried the following line for the first approach:

gpu_kernel_build_cmd = f'/usr/local/cuda/bin/nvcc --compiler-options "-shared -fPIC" {gpu_sources_cpp} {gpu_sources_cu} -l cusolver -l cublas -lib -o libgpu-kernels.so -O3 {nvcc_machine_code}'

I have cuda toolkit 11.4 installed into my machine.

Here is my output from running " nvcc -V"

image

Happy to provide more info if you need one.

Thanks alot

donkeymouse

Hello, I got the same error with you.

I found that the current ceres official website is ceres 2.1. I downloaded ceres 2.0 on github and solved this error