open_vins icon indicating copy to clipboard operation
open_vins copied to clipboard

ceres-solve 2.2.0 Manifold compile failure

Open Genozen opened this issue 9 months ago • 4 comments

Prior to this, I had to build Ceres from source, but later I was able to use sudo apt to reinstall Ceres.

My workspace dir includes:

  • build
  • ceres-solver
  • install
  • log
  • src
colcon build --parallel-workers 1
Starting >>> ov_core 
Finished <<< ov_core [0.18s]                     
Starting >>> ov_init
--- stderr: ov_init                               
In file included from /home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.cpp:22:
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:32:64: error: expected class-name before ‘{’ token
   32 | class State_JPLQuatLocal : public ceres::LocalParameterization {
      |                                                                ^
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:44:8: error: ‘bool ov_init::State_JPLQuatLocal::Plus(const double*, const double*, double*) const’ marked ‘override’, but does not override
   44 |   bool Plus(const double *x, const double *delta, double *x_plus_delta) const override;
      |        ^~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:57:8: error: ‘bool ov_init::State_JPLQuatLocal::ComputeJacobian(const double*, double*) const’ marked ‘override’, but does not override
   57 |   bool ComputeJacobian(const double *x, double *jacobian) const override;
      |        ^~~~~~~~~~~~~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:59:7: error: ‘int ov_init::State_JPLQuatLocal::GlobalSize() const’ marked ‘override’, but does not override
   59 |   int GlobalSize() const override { return 4; };
      |       ^~~~~~~~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:61:7: error: ‘int ov_init::State_JPLQuatLocal::LocalSize() const’ marked ‘override’, but does not override
   61 |   int LocalSize() const override { return 3; };
      |       ^~~~~~~~~
gmake[2]: *** [CMakeFiles/ov_init_lib.dir/build.make:132: CMakeFiles/ov_init_lib.dir/src/ceres/State_JPLQuatLocal.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
In file included from /home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/dynamic/DynamicInitializer.cpp:27:
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:32:64: error: expected class-name before ‘{’ token
   32 | class State_JPLQuatLocal : public ceres::LocalParameterization {
      |                                                                ^
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:44:8: error: ‘bool ov_init::State_JPLQuatLocal::Plus(const double*, const double*, double*) const’ marked ‘override’, but does not override
   44 |   bool Plus(const double *x, const double *delta, double *x_plus_delta) const override;
      |        ^~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:57:8: error: ‘bool ov_init::State_JPLQuatLocal::ComputeJacobian(const double*, double*) const’ marked ‘override’, but does not override
   57 |   bool ComputeJacobian(const double *x, double *jacobian) const override;
      |        ^~~~~~~~~~~~~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:59:7: error: ‘int ov_init::State_JPLQuatLocal::GlobalSize() const’ marked ‘override’, but does not override
   59 |   int GlobalSize() const override { return 4; };
      |       ^~~~~~~~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/State_JPLQuatLocal.h:61:7: error: ‘int ov_init::State_JPLQuatLocal::LocalSize() const’ marked ‘override’, but does not override
   61 |   int LocalSize() const override { return 3; };
      |       ^~~~~~~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/dynamic/DynamicInitializer.cpp: In member function ‘bool ov_init::DynamicInitializer::initialize(double&, Eigen::MatrixXd&, std::vector<std::shared_ptr<ov_type::Type> >&, std::shared_ptr<ov_type::IMU>&, std::map<double, std::shared_ptr<ov_type::PoseJPL> >&, std::unordered_map<long unsigned int, std::shared_ptr<ov_type::Landmark> >&)’:
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/dynamic/DynamicInitializer.cpp:673:30: error: no matching function for call to ‘ceres::Problem::AddParameterBlock(double*&, int, ov_init::State_JPLQuatLocal*&)’
  673 |     problem.AddParameterBlock(var_ori, 4, ceres_jplquat);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/ceres.h:64,
                 from /home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/Factor_GenericPrior.h:25,
                 from /home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/dynamic/DynamicInitializer.cpp:24:
/usr/local/include/ceres/problem.h:259:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double*, int)’
  259 |   void AddParameterBlock(double* values, int size);
      |        ^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/problem.h:259:8: note:   candidate expects 2 arguments, 3 provided
/usr/local/include/ceres/problem.h:271:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double*, int, ceres::Manifold*)’
  271 |   void AddParameterBlock(double* values, int size, Manifold* manifold);
      |        ^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/problem.h:271:62: note:   no known conversion for argument 3 from ‘ov_init::State_JPLQuatLocal*’ to ‘ceres::Manifold*’
  271 |   void AddParameterBlock(double* values, int size, Manifold* manifold);
      |                                                    ~~~~~~~~~~^~~~~~~~
/home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/dynamic/DynamicInitializer.cpp:766:32: error: no matching function for call to ‘ceres::Problem::AddParameterBlock(double*&, int, ov_init::State_JPLQuatLocal*&)’
  766 |       problem.AddParameterBlock(var_calib_ori, 4, ceres_calib_jplquat);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/ceres.h:64,
                 from /home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/ceres/Factor_GenericPrior.h:25,
                 from /home/genozen/Desktop/ros2_openvins/src/open_vins/ov_init/src/dynamic/DynamicInitializer.cpp:24:
/usr/local/include/ceres/problem.h:259:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double*, int)’
  259 |   void AddParameterBlock(double* values, int size);
      |        ^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/problem.h:259:8: note:   candidate expects 2 arguments, 3 provided
/usr/local/include/ceres/problem.h:271:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double*, int, ceres::Manifold*)’
  271 |   void AddParameterBlock(double* values, int size, Manifold* manifold);
      |        ^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/problem.h:271:62: note:   no known conversion for argument 3 from ‘ov_init::State_JPLQuatLocal*’ to ‘ceres::Manifold*’
  271 |   void AddParameterBlock(double* values, int size, Manifold* manifold);
      |                                                    ~~~~~~~~~~^~~~~~~~
gmake[2]: *** [CMakeFiles/ov_init_lib.dir/build.make:160: CMakeFiles/ov_init_lib.dir/src/dynamic/DynamicInitializer.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:143: CMakeFiles/ov_init_lib.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< ov_init [17.5s, exited with code 2]

Summary: 1 package finished [17.8s]
  1 package failed: ov_init
  1 package had stderr output: ov_init
  4 packages not processed

Genozen avatar Sep 26 '23 03:09 Genozen