Skip to content

ceres-solve 2.2.0 Manifold compile failure #385

@Genozen

Description

@Genozen

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    compileUser has trouble compiling on their own platform.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions