emiliofidalgo / bimos

Binary descriptor-based Image Mosaicing
GNU General Public License v3.0
24 stars 14 forks source link

Error in compile #4

Closed lizzzcai closed 7 years ago

lizzzcai commented 7 years ago

Running command: "make cmake_check_build_system" in "/home/lizecai/catkin_ws/build"

Running command: "make -j1 -l1" in "/home/lizecai/catkin_ws/build"

[ 6%] Built target binaryindex [ 10%] Built target test_bindex [ 13%] Building CXX object bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o In file included from /home/lizecai/catkin_ws/src/bimos/src/util/Params.cpp:21:0: /home/lizecai/catkin_ws/src/bimos/include/bimos/util/Params.h:28:31: fatal error: bimos/BimosConfig.h: No such file or directory

include <bimos/BimosConfig.h>

                           ^

compilation terminated. make[2]: [bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o] Error 1 make[1]: [bimos/CMakeFiles/bimos_convfactors.dir/all] Error 2 make: *** [all] Error 2 Invoking "make -j1 -l1" failed lizecai@ubuntu:~/catkin_ws$

emiliofidalgo commented 7 years ago

Hi Lawrence,

What ROS version are you using? For Kinetic, you should use the 'kinetic' branch. I have not tested BIMOS in Lunar yet, but I think it should also work.

Another idea: try to use: catkin_make -DCMAKE_BUILD_TYPE=Release to compile, as suggested in the installation instructions, instead of doing a direct make.

Regards,

lizzzcai commented 7 years ago

It is ROS Indigo running on a fresh ubuntu 14.04 in a virtual machine. I used the command catkin_make -DCMAKE_BUILD_TYPE=Release to compile the package but it has a error saying that /home/lizecai/catkin_ws/src/bimos/include/bimos/util/Params.h:28:31: fatal error: bimos/BimosConfig.h: No such file or directory

The detail is shown below. Please help to solve this problem.

lizecai@ubuntu:~/catkin_ws/src$ git clone https://github.com/emiliofidalgo/bimos.git Cloning into 'bimos'... remote: Counting objects: 1066, done. remote: Total 1066 (delta 0), reused 0 (delta 0), pack-reused 1066 Receiving objects: 100% (1066/1066), 1.70 MiB | 309.00 KiB/s, done. Resolving deltas: 100% (630/630), done. Checking connectivity... done. lizecai@ubuntu:~/catkin_ws/src$ cd .. lizecai@ubuntu:~/catkin_ws$ catkin_make -DCMAKE_BUILD_TYPE=Release Base path: /home/lizecai/catkin_ws Source space: /home/lizecai/catkin_ws/src Build space: /home/lizecai/catkin_ws/build Devel space: /home/lizecai/catkin_ws/devel Install space: /home/lizecai/catkin_ws/install

Running command: "cmake /home/lizecai/catkin_ws/src -DCMAKE_BUILD_TYPE=Release -DCATKIN_DEVEL_PREFIX=/home/lizecai/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/lizecai/catkin_ws/install -G Unix Makefiles" in "/home/lizecai/catkin_ws/build"

-- Using CATKIN_DEVEL_PREFIX: /home/lizecai/catkin_ws/devel -- Using CMAKE_PREFIX_PATH: /opt/ros/indigo -- This workspace overlays: /opt/ros/indigo -- Using PYTHON_EXECUTABLE: /usr/bin/python -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/lizecai/catkin_ws/build/test_results -- Found gtest sources under '/usr/src/gtest': gtests will be built -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.6.19 -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~ -- ~~ traversing 2 packages in topological order: -- ~~ - obindex -- ~~ - bimos -- ~~~~~~~~~~~~~ -- +++ processing catkin package: 'obindex' -- ==> add_subdirectory(obindex) -- Boost version: 1.54.0 -- Found the following Boost libraries: -- system -- filesystem -- +++ processing catkin package: 'bimos' -- ==> add_subdirectory(bimos) -- Boost version: 1.54.0 -- Found the following Boost libraries: -- system -- filesystem -- thread -- Found required Ceres dependency: Eigen version 3.2.0 in /usr/include/eigen3 -- Found required Ceres dependency: Glog in /usr/include -- Found Ceres version: 1.8.0 installed in: /usr -- Configuring done -- Generating done -- Build files have been written to: /home/lizecai/catkin_ws/build

Running command: "make -j1 -l1" in "/home/lizecai/catkin_ws/build"

[ 6%] Built target binaryindex [ 10%] Built target test_bindex Scanning dependencies of target bimos_convfactors [ 13%] Building CXX object bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o In file included from /home/lizecai/catkin_ws/src/bimos/src/util/Params.cpp:21:0: /home/lizecai/catkin_ws/src/bimos/include/bimos/util/Params.h:28:31: fatal error: bimos/BimosConfig.h: No such file or directory

include <bimos/BimosConfig.h>

                           ^

compilation terminated. make[2]: [bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o] Error 1 make[1]: [bimos/CMakeFiles/bimos_convfactors.dir/all] Error 2 make: *** [all] Error 2 Invoking "make -j1 -l1" failed lizecai@ubuntu:~/catkin_ws$

emiliofidalgo commented 7 years ago

Hi Lawrence,

We believe that the commit done by @miquelmassot should solve the problem. Please, let us know if it works for your configuration.

lizzzcai commented 7 years ago

I have tried it but I still have the same problem, cannot find <bimos/BimosConfig.h> is there any further information I can provide to help you to diagnose this problem?

Running command: "make -j1 -l1" in "/home/lizecai/catkin_ws/build"

[ 6%] Built target binaryindex [ 10%] Built target test_bindex Scanning dependencies of target bimos_convfactors [ 13%] Building CXX object bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o In file included from /home/lizecai/catkin_ws/src/bimos/src/util/Params.cpp:21:0: /home/lizecai/catkin_ws/src/bimos/include/bimos/util/Params.h:28:31: fatal error: bimos/BimosConfig.h: No such file or directory

include <bimos/BimosConfig.h>

^ compilation terminated. make[2]: [bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o] Error 1 make[1]: [bimos/CMakeFiles/bimos_convfactors.dir/all] Error 2 make: *** [all] Error 2 Invoking "make -j1 -l1" failed lizecai@ubuntu:~/catkin_ws$

emiliofidalgo commented 7 years ago

I have just made a fresh installation of Ubuntu 14.04.05 and ROS Indigo in a Virtual Machine, and next I installed BIMOS following the installation instructions without any problem. It seems that your issue is related to the dynamic_reconfigure configuration, that it should be compiled before in order to be found by the targets. Could you please repeat the process again in a new virtual machine? Perhaps there is any problem in your current system.

lizzzcai commented 7 years ago

Hi emilio, I reinstall the Ubuntu and the problem has been solved. However, when I try to mosaic the dataset ODEMAR, I have the following problem. My Virtual machine has 2GB ram.

...... [ INFO] [1496733096.399567123]: [kfsel] Found 3000 keypoints in image 7 [ INFO] [1496733096.400154201]: [kfsel] Estimating homography between KF 0 and image 7 ... [ INFO] [1496733097.002474079]: [kfsel] Inliers 160, Overlap: 0.339468, Mean Reprojection Error: 430.760964 [ INFO] [1496733097.022926171]: Initializing mosaicing process ... [ INFO] [1496733097.023621205]: Preparing working directory ... [ INFO] [1496733097.025610763]: Working directory ready [ INFO] [1496733097.193792694]: [kfsel] Found 3000 keypoints in image 8 [bimos_node-2] process has died [pid 40895, exit code -11, cmd /home/lize/catkin_ws/devel/lib/bimos/bimos_node ~image:=/image_publisher/image_raw __name:=bimos_node __log:=/home/lize/.ros/log/10a1d87e-4a87-11e7-9faf-000c29c544de/bimos_node-2.log]. log file: /home/lize/.ros/log/10a1d87e-4a87-11e7-9faf-000c29c544de/bimos_node-2*.log

emiliofidalgo commented 7 years ago

Hi Lawrence,

Certainly 2 GB of RAM is little. A virtual machine is not the best place to execute BIMOS. Note that the blending step loads all images in RAM, despite it seems you are not at this point.

Some advices:

lizzzcai commented 7 years ago

Hi, Emilio, I try to install the BIMOS(kinetic branch) in a fresh unbuntu16 virtual system with ROS Kinetic by following the instruction. However, I met the problem as what I have met before, cannot find the <bimos/BimosConfig.h> during the compile. I have also tried to Add dynamic reconfigure dependency, but it doesn't work. Can you help to figure out the problem? Many thanks.

emiliofidalgo commented 7 years ago

Hi Lawrence,

It is really weird the problems you are having with the installation. Some ideas:

lizzzcai commented 7 years ago

Hi Emilio, I have replaced it by add_dependencies(bimos_node ${${PROJECT_NAME}_EXPORTED_TARGETS}), I think the Ceres was installed correctly because it could work for the example. Both obindex and bimos are kinetic versions.

The log was shown like this,

lize@ubuntu:~/catkin_ws$ catkin_make -DCMAKE_BUILD_TYPE=Release Base path: /home/lize/catkin_ws Source space: /home/lize/catkin_ws/src Build space: /home/lize/catkin_ws/build Devel space: /home/lize/catkin_ws/devel Install space: /home/lize/catkin_ws/install

Running command: "cmake /home/lize/catkin_ws/src -DCMAKE_BUILD_TYPE=Release -DCATKIN_DEVEL_PREFIX=/home/lize/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/lize/catkin_ws/install -G Unix Makefiles" in "/home/lize/catkin_ws/build"

-- Using CATKIN_DEVEL_PREFIX: /home/lize/catkin_ws/devel -- Using CMAKE_PREFIX_PATH: /opt/ros/kinetic -- This workspace overlays: /opt/ros/kinetic -- Using PYTHON_EXECUTABLE: /usr/bin/python -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/lize/catkin_ws/build/test_results -- Found gtest sources under '/usr/src/gtest': gtests will be built -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.6 -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~ -- ~~ traversing 2 packages in topological order: -- ~~ - obindex -- ~~ - bimos -- ~~~~~~~~~~~~~ -- +++ processing catkin package: 'obindex' -- ==> add_subdirectory(obindex) -- Boost version: 1.58.0 -- Found the following Boost libraries: -- system -- filesystem -- +++ processing catkin package: 'bimos' -- ==> add_subdirectory(bimos) -- Boost version: 1.58.0 -- Found the following Boost libraries: -- system -- filesystem -- thread -- chrono -- date_time -- atomic -- Found required Ceres dependency: Eigen version 3.2.92 in /usr/include/eigen3 -- Found required Ceres dependency: glog -- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE -- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE - Success -- Found required Ceres dependency: gflags -- Found Ceres version: 1.12.0 installed in: /usr/local with components: [LAPACK, SuiteSparse, SparseLinearAlgebraLibrary, SchurSpecializations, OpenMP] -- Configuring done -- Generating done -- Build files have been written to: /home/lize/catkin_ws/build

Running command: "make -j1 -l1" in "/home/lize/catkin_ws/build"

[ 8%] Built target binaryindex [ 13%] Built target test_bindex Scanning dependencies of target bimos_convfactors [ 16%] Building CXX object bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o In file included from /home/lize/catkin_ws/src/bimos/src/util/Params.cpp:21:0: /home/lize/catkin_ws/src/bimos/include/bimos/util/Params.h:28:31: fatal error: bimos/BimosConfig.h: No such file or directory compilation terminated. bimos/CMakeFiles/bimos_convfactors.dir/build.make:62: recipe for target 'bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o' failed make[2]: [bimos/CMakeFiles/bimos_convfactors.dir/src/util/Params.cpp.o] Error 1 CMakeFiles/Makefile2:980: recipe for target 'bimos/CMakeFiles/bimos_convfactors.dir/all' failed make[1]: [bimos/CMakeFiles/bimos_convfactors.dir/all] Error 2 Makefile:138: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j1 -l1" failed lize@ubuntu:~/catkin_ws$

emiliofidalgo commented 7 years ago

Hi Lawrence,

I am not able to reproduce the error, it works perfect in my case in a fresh installation. Anyway, I added some modifications to the CMakeLists.txt of the kinetic branch that I think could be fix your problem. Please, try these modifications and let us know if it works for your system.

Another temporary solution could be commenting out the BIMOS rotational and conv factors targets in the CMakeLists.txt file. These nodes were created for special purposes in our project and perhaps, if you are only interested in the mosaicing algorithm, they could be avoided.

lizzzcai commented 7 years ago

Hi, Emilio, It works in my system right now after your modification. But the algorithm stops after finding the keypoints. Here is the example after I process the ODEMAR dataset. It stops at image 63. I am not sure what happens, maybe my computer is too weak.. I have given 4G ram to my virtual machine.

[ INFO] [1497077189.743055280]: [kfsel] Found 3000 keypoints in image 61 [ INFO] [1497077189.743554534]: [kfsel] Estimating homography between KF 14 and image 61 ... [ INFO] [1497077190.051581046]: [kfsel] Inliers 611, Overlap: 0.526420, Mean Reprojection Error: 32.290244 [ INFO] [1497077190.109394183]: [kfsel] Found 3000 keypoints in image 62 [ INFO] [1497077190.110040458]: [kfsel] Estimating homography between KF 14 and image 62 ... [ INFO] [1497077190.446414514]: [kfsel] Inliers 357, Overlap: 0.280949, Mean Reprojection Error: 42.228003 [ INFO] [1497077190.489305738]: [kfsel] Found 3000 keypoints in image 63 [ INFO] [1497077190.489880614]: [kfsel] Estimating homography between KF 14 and image 63 ... [ INFO] [1497077190.810772232]: [kfsel] Inliers 266, Overlap: 0.212747, Mean Reprojection Error: 14.946653

emiliofidalgo commented 7 years ago

Hi Lawrence,

I think it is working! Image 63 is the last one of the ODEMAR dataset. Yes ... we should show a message to indicate that the process has finished, but BIMOS can be also used to receive images by a ROS topic, and it waits for images until the node is closed. However the most common used method is from a directory, as you do.

Next step is to optimize and blend the estimated topology to produce the final mosaic. Follow the indicated instructions for that. Good luck!

emiliofidalgo commented 7 years ago

Hi @lizzzcai,

Today we found a bug in the kinetic release that avoids to launch the optimization and blending step after the mosaic creation. Please update the branch if you are still using BIMOS kinetic branch.

Greetings,

lizzzcai commented 7 years ago

Thanks! I will try it. By the way, if the process can be done incrementally rather than put them all into the memory, it may release the burden of the machine.