HKUST-Aerial-Robotics / VINS-Mono

A Robust and Versatile Monocular Visual-Inertial State Estimator
GNU General Public License v3.0
4.83k stars 2.07k forks source link

Build Error On Ubunto 20.04, ROS Noetic, Ceres 2.2 #415

Open MF-Ahmed opened 1 year ago

MF-Ahmed commented 1 year ago

I am Having the following error .... λ › catkin_make ~/catkin_workspace Base path: /home/uzi/catkin_workspace Source space: /home/uzi/catkin_workspace/src Build space: /home/uzi/catkin_workspace/build Devel space: /home/uzi/catkin_workspace/devel Install space: /home/uzi/catkin_workspace/install

Running command: "make cmake_check_build_system" in "/home/uzi/catkin_workspace/build"

Running command: "make -j4 -l4" in "/home/uzi/catkin_workspace/build"

Consolidate compiler generated dependencies of target camera_model Consolidate compiler generated dependencies of target Calibration [ 3%] Built target benchmark_publisher Consolidate compiler generated dependencies of target vins_estimator [ 4%] Building CXX object VINS-Mono/camera_model/CMakeFiles/camera_model.dir/src/calib/CameraCalibration.cc.o [ 6%] Building CXX object VINS-Mono/camera_model/CMakeFiles/camera_model.dir/src/camera_models/CataCamera.cc.o [ 7%] Building CXX object VINS-Mono/camera_model/CMakeFiles/Calibration.dir/src/calib/CameraCalibration.cc.o [ 9%] Building CXX object VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/estimator_node.cpp.o /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc: In member function ‘void camodocal::CameraCalibration::optimize(camodocal::CameraPtr&, std::vector&, std::vector&) const’: /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:507:39: warning: ‘LocalParameterization’ is deprecated: LocalParameterizations will be removed from the Ceres Solver API in version 2.2.0. Use Manifolds instead. [-Wdeprecated-declarations] 507 | ceres::LocalParameterization quaternionParameterization = | ^~~~~~ In file included from /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/include/camodocal/gpl/EigenQuaternionParameterization.h:4, from /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:16: /usr/local/include/ceres/local_parameterization.h:121:18: note: declared here 121 | CERES_EXPORT LocalParameterization { | ^~~~~ /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:510:17: error: ‘class ceres::Problem’ has no member named ‘SetParameterization’; did you mean ‘SetParameterLowerBound’? 510 | problem.SetParameterization(transformVec.at(i).rotationData(), | ^~~~~~~ | SetParameterLowerBound /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc: In member function ‘void camodocal::CameraCalibration::optimize(camodocal::CameraPtr&, std::vector&, std::vector&) const’: /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:507:39: warning: ‘LocalParameterization’ is deprecated: LocalParameterizations will be removed from the Ceres Solver API in version 2.2.0. Use Manifolds instead. [-Wdeprecated-declarations] 507 | ceres::LocalParameterization quaternionParameterization = | ^~~~~~ In file included from /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/include/camodocal/gpl/EigenQuaternionParameterization.h:4, from /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:16: /usr/local/include/ceres/local_parameterization.h:121:18: note: declared here 121 | CERES_EXPORT LocalParameterization { | ^~~~~ /home/uzi/catkin_workspace/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:510:17: error: ‘class ceres::Problem’ has no member named ‘SetParameterization’; did you mean ‘SetParameterLowerBound’? 510 | problem.SetParameterization(transformVec.at(i).rotationData(), | ^~~~~~~ | SetParameterLowerBound make[2]: [VINS-Mono/camera_model/CMakeFiles/camera_model.dir/build.make:90: VINS-Mono/camera_model/CMakeFiles/camera_model.dir/src/calib/CameraCalibration.cc.o] Error 1 make[2]: Waiting for unfinished jobs.... [ 10%] Building CXX object VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/estimator.cpp.o make[2]: [VINS-Mono/camera_model/CMakeFiles/Calibration.dir/build.make:104: VINS-Mono/camera_model/CMakeFiles/Calibration.dir/src/calib/CameraCalibration.cc.o] Error 1 make[1]: [CMakeFiles/Makefile2:1744: VINS-Mono/camera_model/CMakeFiles/Calibration.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... [ 12%] Building CXX object VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/factor/pose_local_parameterization.cpp.o make[1]: [CMakeFiles/Makefile2:1770: VINS-Mono/camera_model/CMakeFiles/camera_model.dir/all] Error 2 [ 13%] Building CXX object VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/utility/utility.cpp.o In file included from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/factor/pose_local_parameterization.cpp:1: /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/factor/pose_local_parameterization.h:7:49: error: invalid use of incomplete type ‘class ceres::LocalParameterization’ 7 | class PoseLocalParameterization : public ceres::LocalParameterization | ^~~~~ In file included from /usr/local/include/ceres/ceres.h:64, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/factor/pose_local_parameterization.h:4, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/factor/pose_local_parameterization.cpp:1: /usr/local/include/ceres/problem.h:56:7: note: forward declaration of ‘class ceres::LocalParameterization’ 56 | class LocalParameterization; | ^~~~~ make[2]: [VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/build.make:132: VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/factor/pose_local_parameterization.cpp.o] Error 1 make[2]: Waiting for unfinished jobs.... In file included from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:16, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator_node.cpp:11: /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/factor/pose_local_parameterization.h:7:49: error: invalid use of incomplete type ‘class ceres::LocalParameterization’ 7 | class PoseLocalParameterization : public ceres::LocalParameterization | ^~~~~ In file included from /usr/local/include/ceres/ceres.h:64, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/initial/initial_sfm.h:2, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:8, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator_node.cpp:11: /usr/local/include/ceres/problem.h:56:7: note: forward declaration of ‘class ceres::LocalParameterization’ 56 | class LocalParameterization; | ^~~~~ In file included from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:16, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:1: /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/factor/pose_local_parameterization.h:7:49: error: invalid use of incomplete type ‘class ceres::LocalParameterization’ 7 | class PoseLocalParameterization : public ceres::LocalParameterization | ^~~~~ In file included from /usr/local/include/ceres/ceres.h:64, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/initial/initial_sfm.h:2, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:8, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:1: /usr/local/include/ceres/problem.h:56:7: note: forward declaration of ‘class ceres::LocalParameterization’ 56 | class LocalParameterization; | ^~~~~ /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp: In member function ‘void Estimator::optimization()’: /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:678:94: error: cannot convert ‘PoseLocalParameterization’ to ‘ceres::LocalParameterization’ in initialization 678 | ceres::LocalParameterization local_parameterization = new PoseLocalParameterization(); | ^ /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:679:82: error: no matching function for call to ‘ceres::Problem::AddParameterBlock(double [7], SIZE_PARAMETERIZATION, ceres::LocalParameterization&)’ 679 | problem.AddParameterBlock(para_Pose[i], SIZE_POSE, local_parameterization); | ^ In file included from /usr/local/include/ceres/ceres.h:64, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/initial/initial_sfm.h:2, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:8, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:1: /usr/local/include/ceres/problem.h:261:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double, int)’ 261 | void AddParameterBlock(double values, int size); | ^~~~~ /usr/local/include/ceres/problem.h:261:8: note: candidate expects 2 arguments, 3 provided /usr/local/include/ceres/problem.h:274:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double, int, ceres::Manifold)’ 274 | void AddParameterBlock(double values, int size, Manifold manifold); | ^~~~~ /usr/local/include/ceres/problem.h:274:62: note: no known conversion for argument 3 from ‘ceres::LocalParameterization’ to ‘ceres::Manifold’ 274 | void AddParameterBlock(double values, int size, Manifold manifold); | ~~^~~~ /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:684:94: error: cannot convert ‘PoseLocalParameterization’ to ‘ceres::LocalParameterization’ in initialization 684 | ceres::LocalParameterization local_parameterization = new PoseLocalParameterization(); | ^ /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:685:85: error: no matching function for call to ‘ceres::Problem::AddParameterBlock(double [7], SIZE_PARAMETERIZATION, ceres::LocalParameterization&)’ 685 | problem.AddParameterBlock(para_Ex_Pose[i], SIZE_POSE, local_parameterization); | ^ In file included from /usr/local/include/ceres/ceres.h:64, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/initial/initial_sfm.h:2, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:8, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:1: /usr/local/include/ceres/problem.h:261:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double, int)’ 261 | void AddParameterBlock(double values, int size); | ^~~~~ /usr/local/include/ceres/problem.h:261:8: note: candidate expects 2 arguments, 3 provided /usr/local/include/ceres/problem.h:274:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double, int, ceres::Manifold)’ 274 | void AddParameterBlock(double values, int size, Manifold manifold); | ^~~~~ /usr/local/include/ceres/problem.h:274:62: note: no known conversion for argument 3 from ‘ceres::LocalParameterization’ to ‘ceres::Manifold’ 274 | void AddParameterBlock(double values, int size, Manifold manifold); | ~~^~~~ /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:772:94: error: cannot convert ‘PoseLocalParameterization’ to ‘ceres::LocalParameterization’ in initialization 772 | ceres::LocalParameterization local_parameterization = new PoseLocalParameterization(); | ^ /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:773:79: error: no matching function for call to ‘ceres::Problem::AddParameterBlock(double [7], SIZE_PARAMETERIZATION, ceres::LocalParameterization&)’ 773 | problem.AddParameterBlock(relo_Pose, SIZE_POSE, local_parameterization); | ^ In file included from /usr/local/include/ceres/ceres.h:64, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/initial/initial_sfm.h:2, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.h:8, from /home/uzi/catkin_workspace/src/VINS-Mono/vins_estimator/src/estimator.cpp:1: /usr/local/include/ceres/problem.h:261:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double, int)’ 261 | void AddParameterBlock(double values, int size); | ^~~~~ /usr/local/include/ceres/problem.h:261:8: note: candidate expects 2 arguments, 3 provided /usr/local/include/ceres/problem.h:274:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double, int, ceres::Manifold)’ 274 | void AddParameterBlock(double values, int size, Manifold manifold); | ^~~~~ /usr/local/include/ceres/problem.h:274:62: note: no known conversion for argument 3 from ‘ceres::LocalParameterization’ to ‘ceres::Manifold’ 274 | void AddParameterBlock(double values, int size, Manifold manifold); | ~~^~~~ make[2]: [VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/build.make:76: VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/estimator_node.cpp.o] Error 1 make[2]: [VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/build.make:104: VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/src/estimator.cpp.o] Error 1 make[1]: [CMakeFiles/Makefile2:2004: VINS-Mono/vins_estimator/CMakeFiles/vins_estimator.dir/all] Error 2 make: [Makefile:146: all] Error 2 Invoking "make -j4 -l4" failed

thuongnct commented 1 year ago

Pull ceres from github https://github.com/ceres-solver/ceres-solver, checkout branch 1.14.x and install as normal.