mihaibujanca / dynamicfusion

Implementation of Newcombe et al. CVPR 2015 DynamicFusion paper
BSD 3-Clause "New" or "Revised" License
391 stars 105 forks source link

Error generating kfusion files #58

Open nicole-antoine opened 6 years ago

nicole-antoine commented 6 years ago

Hello, I've been trying to build this project but I'm facing some issue that I'm not sure how I could correct them, like:

[ 21%] Built target apidoc
Segmentation fault (core dumped)
Segmentation fault (core dumped)
Segmentation fault (core dumped)
CMake Error at kfusion_generated_tsdf_volume.cu.o.cmake:282 (message):
  Error generating file
  /home/vclab/dynamicfusion/build/kfusion/CMakeFiles/kfusion.dir/src/cuda/./kfusion_generated_tsdf_volume.cu.o

kfusion/CMakeFiles/kfusion.dir/build.make:989: recipe for target 'kfusion/CMakeFiles/kfusion.dir/src/cuda/kfusion_generated_tsdf_volume.cu.o' failed
make[2]: *** [kfusion/CMakeFiles/kfusion.dir/src/cuda/kfusion_generated_tsdf_volume.cu.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMake Error at kfusion_generated_proj_icp.cu.o.cmake:282 (message):
  Error generating file
  /home/vclab/dynamicfusion/build/kfusion/CMakeFiles/kfusion.dir/src/cuda/./kfusion_generated_proj_icp.cu.o

CMake Error at kfusion_generated_imgproc.cu.o.cmake:282 (message):
  Error generating file
  /home/vclab/dynamicfusion/build/kfusion/CMakeFiles/kfusion.dir/src/cuda/./kfusion_generated_imgproc.cu.o

kfusion/CMakeFiles/kfusion.dir/build.make:677: recipe for target 'kfusion/CMakeFiles/kfusion.dir/src/cuda/kfusion_generated_proj_icp.cu.o' failed
make[2]: *** [kfusion/CMakeFiles/kfusion.dir/src/cuda/kfusion_generated_proj_icp.cu.o] Error 1
kfusion/CMakeFiles/kfusion.dir/build.make:366: recipe for target 'kfusion/CMakeFiles/kfusion.dir/src/cuda/kfusion_generated_imgproc.cu.o' failed
make[2]: *** [kfusion/CMakeFiles/kfusion.dir/src/cuda/kfusion_generated_imgproc.cu.o] Error 1
CMakeFiles/Makefile2:154: recipe for target 'kfusion/CMakeFiles/kfusion.dir/all' failed
make[1]: *** [kfusion/CMakeFiles/kfusion.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

I installed Cuda 9.2, and even though I couldn't find the 375.66 nvidia drivers in 'additional drivers', If i remember well when I tried to update nvidia-375 it displayed that it was up to date as drivers version 396. I don't really know what to check now, I saw an old topic related to kinect lines in cmake to remove (https://github.com/mihaibujanca/dynamicfusion/issues/33) but I don't want to make any mistake so, if you have any idea why I can't build, it'd be a great help. Thank you

mihaibujanca commented 6 years ago

Hi, apologies for the delay.

What host compiler (and version) are you using?

YJonmo commented 6 years ago

Hi there,

I am facing the same issue: I am using Ubuntu 16.04.

/home/yaqub/dynamicfusion/kfusion/src/warp_field.cpp:157:13: error: ‘struct ceres::Solver::Options’ has no member named ‘num_linear_solver_threads’ options.num_linear_solver_threads = 8;

/home/yaqub/dynamicfusion/deps/Opt/examples/external/mLib/include/../src/core-math/triangleIntersection.cpp:497:50: warning: backslash and newline separated by space ADD(isectpoint0,diff,VTX0); \ ^ kfusion/CMakeFiles/kfusion.dir/build.make:107: recipe for target 'kfusion/CMakeFiles/kfusion.dir/src/warp_field.cpp.o' failed make[2]: *** [kfusion/CMakeFiles/kfusion.dir/src/warp_field.cpp.o] Error 1

/home/yaqub/dynamicfusion/kfusion/src/capture.cpp:105:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] sprintf ("%s, %s", license.strVendor, vendor); ^ CMakeFiles/Makefile2:85: recipe for target 'kfusion/CMakeFiles/kfusion.dir/all' failed make[1]: [kfusion/CMakeFiles/kfusion.dir/all] Error 2 Makefile:127: recipe for target 'all' failed make: [all] Error 2

NVIDIA Driver Version: 396.26 CUDA Cores: 512 Graphics Processor: GeForce 940MX

YJonmo commented 6 years ago

In fact, everything goes well till the line before the last in build.sh (make -j4), where I get the errors that I mentioned above.

Commenting out 157th line in warp_field.cpp stops the error, but I don't think this is the solution for the error.

mihaibujanca commented 6 years ago

Hi @YJonmo,

Firstly, the two problems might generate the same error but are almost certainly unrelated.

Looks like it's coming from ceres, they have removed num_linear_solver_threads: See this commit: https://github.com/ceres-solver/ceres-solver/commit/cfdc2af28b400a921d7465ab066656d5fafccc7a

I'll push a change soon, but all you need to do is replace num_linear_solver_threads with num_threads_used on that line. I might remove ceres as a dependency altogether in the future since CPU based optimisation will be way too slow anyway. That being said, the project is in need of some serious cleanup and I wouldn't offer any guarantees that it will work in practice as of now.

YJonmo commented 6 years ago

I did what you said and still it gives error when running make -j4.

Thanks

mihaibujanca commented 6 years ago

Is it the same error though? Pretty sure the one with num_linear_solver_threads should be solved by the above

YJonmo commented 6 years ago

Sorry I might have done something wrong, but here is the details I did: in warp_field.cpp I replaced the num_linear_solver_threads with num_threads_used. Then in \~/dynamicfusion/build difrectory I ran cmake -DOpenCV_DIR=\~/opencv/build -DBOOST_ROOT=\~/boost_1_64_0/ -DOPENNI_INCLUDE_DIR=/usr/include/ni -DOpenCV_FOUND=TRUE .. make -j4

but I got: . . . .../dynamicfusion/kfusion/src/warp_field.cpp:158:10: error: ‘struct ceres::Solver::Options’ has no member named ‘num_threads_used’ options.num_threads_used = 8; . . .

mihaibujanca commented 6 years ago

My bad, apologies. It was just num_threads, not num_threads_used

YJonmo commented 6 years ago

num_threads is already there, so commenting the num_threads_used should be the solution?

mihaibujanca commented 6 years ago

Yeah that should work.

wine3603 commented 4 years ago

@mihaibujanca haha, thanks man, I should read to the bottom