ethz-asl / kalibr

The Kalibr visual-inertial calibration toolbox
Other
4.39k stars 1.41k forks source link

Support for Ubuntu 20.04? #396

Closed jeff-delaune closed 2 years ago

jeff-delaune commented 3 years ago

Hello,

Are there plans to support the latest Ubuntu 20.04.1 release, which comes with OpenCV 4 and Boost 1.71? Compilation currently crashes.

niciBume commented 3 years ago

I just used the CDE version on 20.04. I that a work around for your problem?

jeff-delaune commented 3 years ago

Thanks for the suggestion @niciBume. Using the CDE version on 20.04 leads to same issue as #315.

Back to compiling from source, I have solved a few issues related to OpenCV 4 and python updates. I need to see with my work if I can push them here so everyone can benefit. I am still struggling with the following compilation error though:

jeff@endurance:~/Software/kalibr_ws$ catkin build -DCMAKE_BUILD_TYPE=Release -j4
--------------------------------------------------------------------------------
Profile:                     default
Extending:        [explicit] /opt/ros/noetic
Workspace:                   /home/jeff/Software/kalibr_ws
--------------------------------------------------------------------------------
Build Space:        [exists] /home/jeff/Software/kalibr_ws/build
Devel Space:        [exists] /home/jeff/Software/kalibr_ws/devel
Install Space:      [unused] /home/jeff/Software/kalibr_ws/install
Log Space:          [exists] /home/jeff/Software/kalibr_ws/logs
Source Space:       [exists] /home/jeff/Software/kalibr_ws/src
DESTDIR:            [unused] None
--------------------------------------------------------------------------------
Devel Space Layout:          merged
Install Space Layout:        None
--------------------------------------------------------------------------------
Additional CMake Args:       -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
Additional Make Args:        -j4
Additional catkin Make Args: None
Internal Make Job Server:    True
Cache Job Environments:      False
--------------------------------------------------------------------------------
Whitelisted Packages:        None
Blacklisted Packages:        None
--------------------------------------------------------------------------------
Workspace configuration appears valid.
--------------------------------------------------------------------------------
[build] Found '37' packages in 0.0 seconds.                                    
[build] Package table is up to date.                                           
Starting  >>> catkin_simple                                                    
Starting  >>> ethz_apriltag2                                                   
Starting  >>> python_module                                                    
Starting  >>> sm_common                                                        
Finished  <<< catkin_simple                                 [ 0.2 seconds ]    
Starting  >>> sm_logging                                                       
Finished  <<< sm_common                                     [ 0.3 seconds ]    
Starting  >>> sm_random                                                        
Finished  <<< python_module                                 [ 0.2 seconds ]    
Starting  >>> suitesparse                                                      
Finished  <<< ethz_apriltag2                                [ 0.4 seconds ]    
Starting  >>> aslam_time                                                       
Finished  <<< sm_logging                                    [ 0.3 seconds ]    
Starting  >>> opencv2_catkin                                                   
Finished  <<< sm_random                                     [ 0.3 seconds ]    
Starting  >>> sm_boost                                                         
Finished  <<< suitesparse                                   [ 0.3 seconds ]    
Starting  >>> sm_matrix_archive                                                
Finished  <<< aslam_time                                    [ 0.3 seconds ]    
Starting  >>> sm_opencv                                                        
Finished  <<< opencv2_catkin                                [ 0.2 seconds ]    
Starting  >>> sm_property_tree                                                 
Finished  <<< sm_boost                                      [ 0.3 seconds ]    
Starting  >>> numpy_eigen                                                      
Finished  <<< sm_matrix_archive                             [ 0.2 seconds ]    
Starting  >>> sm_eigen                                                         
Finished  <<< sm_opencv                                     [ 0.2 seconds ]    
Starting  >>> sm_timing                                                        
Finished  <<< sm_property_tree                              [ 0.3 seconds ]    
Finished  <<< sm_eigen                                      [ 0.3 seconds ]    
Starting  >>> sm_kinematics                                                    
Finished  <<< sm_timing                                     [ 0.2 seconds ]    
Starting  >>> sparse_block_matrix                                              
Finished  <<< numpy_eigen                                   [ 0.7 seconds ]    
Finished  <<< sm_kinematics                                 [ 0.3 seconds ]    
Starting  >>> aslam_cameras                                                    
Starting  >>> sm_python                                                        
Finished  <<< sparse_block_matrix                           [ 0.3 seconds ]    
Starting  >>> aslam_backend                                                    
Starting  >>> bsplines                                                         
Finished  <<< aslam_cameras                                 [ 0.3 seconds ]    
Starting  >>> aslam_cv_serialization                                           
Finished  <<< sm_python                                     [ 0.3 seconds ]    
Starting  >>> aslam_imgproc                                                    
Finished  <<< bsplines                                      [ 0.3 seconds ]    
Starting  >>> aslam_cameras_april                                              
Finished  <<< aslam_backend                                 [ 0.3 seconds ]    
Starting  >>> bsplines_python                                                  
Finished  <<< aslam_cv_serialization                        [ 0.4 seconds ]    
Starting  >>> aslam_backend_expressions                                        
Finished  <<< aslam_imgproc                                 [ 0.3 seconds ]    
Starting  >>> incremental_calibration                                          
Finished  <<< aslam_cameras_april                           [ 0.3 seconds ]    
Starting  >>> aslam_cv_python                                                  
Finished  <<< bsplines_python                               [ 0.3 seconds ]    
Finished  <<< aslam_backend_expressions                     [ 0.4 seconds ]                                                                                                             
Starting  >>> aslam_backend_python                                                                                                                                                      
Starting  >>> aslam_cv_backend                                                                                                                                                          
Finished  <<< incremental_calibration                       [ 0.3 seconds ]                                                                                                             
Starting  >>> aslam_splines                                                                                                                                                             
Finished  <<< aslam_backend_python                          [ 0.3 seconds ]                                                                                                             
Finished  <<< aslam_cv_backend                              [ 0.3 seconds ]                                                                                                             
Finished  <<< aslam_splines                                 [ 0.3 seconds ]                                                                                                             
Starting  >>> incremental_calibration_python                                                                                                                                            
Finished  <<< incremental_calibration_python                [ 0.3 seconds ]                                                                                                             
Starting  >>> aslam_cv_error_terms                                                                                                                                                      
Finished  <<< aslam_cv_error_terms                          [ 0.2 seconds ]                                                                                                             
Starting  >>> aslam_splines_python                                                                                                                                                      
Finished  <<< aslam_splines_python                          [ 0.3 seconds ]                                                                                                             
________________________________________________________________________________________________________________________________________________________________________________________
Errors     << aslam_cv_python:make /home/jeff/Software/kalibr_ws/logs/aslam_cv_python/build.make.001.log                                                                                
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:6,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometry.hpp:4,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras.hpp:5,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraGeometries.cpp:2:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp: In member function ‘sm::Id sm::Id::operator++(int)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:122:14: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  122 |       return rval;
      |              ^~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp: In constructor ‘aslam::cameras::CameraId::CameraId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:24:1: note: in expansion of macro ‘SM_DEFINE_ID’
   24 | SM_DEFINE_ID (CameraId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:6,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/UndistorterBase.hpp:4,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/Undistorters.cpp:2:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp: In member function ‘sm::Id sm::Id::operator++(int)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:122:14: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  122 |       return rval;
      |              ^~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:6,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometry.hpp:4,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/OmniUndistorter.hpp:4,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/OmniUndistorter.cpp:2:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp: In member function ‘sm::Id sm::Id::operator++(int)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:122:14: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  122 |       return rval;
      |              ^~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::MultiFrameId::MultiFrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:9:1: note: in expansion of macro ‘SM_DEFINE_ID’
    9 | SM_DEFINE_ID (MultiFrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::FrameId::FrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:10:1: note: in expansion of macro ‘SM_DEFINE_ID’
   10 | SM_DEFINE_ID (FrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::LandmarkId::LandmarkId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:11:1: note: in expansion of macro ‘SM_DEFINE_ID’
   11 | SM_DEFINE_ID (LandmarkId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp: In constructor ‘aslam::cameras::CameraId::CameraId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:24:1: note: in expansion of macro ‘SM_DEFINE_ID’
   24 | SM_DEFINE_ID (CameraId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp: In constructor ‘aslam::cameras::CameraId::CameraId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:24:1: note: in expansion of macro ‘SM_DEFINE_ID’
   24 | SM_DEFINE_ID (CameraId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::MultiFrameId::MultiFrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:9:1: note: in expansion of macro ‘SM_DEFINE_ID’
    9 | SM_DEFINE_ID (MultiFrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::FrameId::FrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:10:1: note: in expansion of macro ‘SM_DEFINE_ID’
   10 | SM_DEFINE_ID (FrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::LandmarkId::LandmarkId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:11:1: note: in expansion of macro ‘SM_DEFINE_ID’
   11 | SM_DEFINE_ID (LandmarkId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:6,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/GridCalibrationTargetObservation.hpp:15,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/PinholeProjection.hpp:11,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraProjections.cpp:2:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp: In member function ‘sm::Id sm::Id::operator++(int)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:122:14: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  122 |       return rval;
      |              ^~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp: In constructor ‘aslam::cameras::CameraId::CameraId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:24:1: note: in expansion of macro ‘SM_DEFINE_ID’
   24 | SM_DEFINE_ID (CameraId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::MultiFrameId::MultiFrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:9:1: note: in expansion of macro ‘SM_DEFINE_ID’
    9 | SM_DEFINE_ID (MultiFrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::FrameId::FrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:10:1: note: in expansion of macro ‘SM_DEFINE_ID’
   10 | SM_DEFINE_ID (FrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::LandmarkId::LandmarkId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:11:1: note: in expansion of macro ‘SM_DEFINE_ID’
   11 | SM_DEFINE_ID (LandmarkId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
In file included from /usr/include/boost/python/converter/rvalue_from_python_data.hpp:10,
                 from /usr/include/boost/python/converter/registry.hpp:9,
                 from /usr/include/boost/python/converter/registered.hpp:11,
                 from /usr/include/boost/python/object/make_instance.hpp:10,
                 from /usr/include/boost/python/object/make_ptr_instance.hpp:8,
                 from /usr/include/boost/python/to_python_indirect.hpp:11,
                 from /usr/include/boost/python/converter/arg_to_python.hpp:10,
                 from /usr/include/boost/python/call.hpp:15,
                 from /usr/include/boost/python/object_core.hpp:14,
                 from /usr/include/boost/python/args.hpp:22,
                 from /usr/include/boost/python.hpp:11,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/numpy_eigen/include/numpy_eigen/boost_python_headers.hpp:24,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraProjections.cpp:1:
/usr/include/boost/python/detail/destroy.hpp: In instantiation of ‘static void boost::python::detail::value_destroyer<false>::execute(const volatile T*) [with T = Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >]’:
/usr/include/boost/python/detail/destroy.hpp:52:15:   required from ‘void boost::python::detail::destroy_referent_impl(void*, T& (*)()) [with T = const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >]’
/usr/include/boost/python/detail/destroy.hpp:58:26:   required from ‘void boost::python::detail::destroy_referent(void*, T (*)()) [with T = const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&]’
/usr/include/boost/python/converter/rvalue_from_python_data.hpp:135:51:   required from ‘boost::python::converter::rvalue_from_python_data<T>::~rvalue_from_python_data() [with T = const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&]’
/usr/include/boost/python/converter/arg_from_python.hpp:106:8:   required from ‘PyObject* boost::python::detail::caller_arity<2>::impl<F, Policies, Sig>::operator()(PyObject*, PyObject*) [with F = bool (aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>::*)(const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&) const; Policies = boost::python::default_call_policies; Sig = boost::mpl::vector3<bool, aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>&, const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&>; PyObject = _object]’
/usr/include/boost/python/object/py_function.hpp:38:33:   required from ‘PyObject* boost::python::objects::caller_py_function_impl<Caller>::operator()(PyObject*, PyObject*) [with Caller = boost::python::detail::caller<bool (aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>::*)(const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&) const, boost::python::default_call_policies, boost::mpl::vector3<bool, aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>&, const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&> >; PyObject = _object]’
/usr/include/boost/python/object/py_function.hpp:36:15:   required from here
/usr/include/boost/python/detail/destroy.hpp:20:9: error: ‘Eigen::MatrixBase<Derived>::~MatrixBase() [with Derived = Eigen::Matrix<double, -1, 1>]’ is protected within this context
   20 |         p->~T();
      |         ^
In file included from /usr/include/eigen3/Eigen/Core:88,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/numpy_eigen/include/numpy_eigen/boost_python_headers.hpp:23,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraProjections.cpp:1:
/usr/include/eigen3/Eigen/src/Core/util/Macros.h:870:23: note: declared protected here
  870 |     EIGEN_DEVICE_FUNC ~Derived() = default;
      |                       ^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:468:5: note: in expansion of macro ‘EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR’
  468 |     EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(MatrixBase)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/aslam_cv_python.dir/build.make:141: CMakeFiles/aslam_cv_python.dir/src/CameraProjections.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/DoubleSphereProjection.hpp:289,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras.hpp:11,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraGeometries.cpp:2:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp: In instantiation of ‘void aslam::cameras::DoubleSphereProjection<DISTORTION_T>::euclideanToKeypointDistortionJacobian(const Eigen::MatrixBase<OtherDerived>&, const Eigen::MatrixBase<OtherDerived>&) const [with DERIVED_P = Eigen::Matrix<double, 3, 1>; DERIVED_JD = Eigen::Matrix<double, -1, -1>; DISTORTION_T = aslam::cameras::NoDistortion]’:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/CameraGeometry.hpp:688:9:   required from ‘void aslam::cameras::CameraGeometry<PROJECTION_T, SHUTTER_T, MASK_T>::euclideanToKeypointIntrinsicsJacobian(const Vector3d&, Eigen::MatrixXd&, bool, bool, bool) const [with PROJECTION_T = aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>; SHUTTER_T = aslam::cameras::GlobalShutter; MASK_T = aslam::cameras::NoMask; Eigen::Vector3d = Eigen::Matrix<double, 3, 1>; Eigen::MatrixXd = Eigen::Matrix<double, -1, -1>]’
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/CameraGeometry.hpp:668:10:   required from here
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp:508:42: warning: unused parameter ‘p’ [-Wunused-parameter]
  508 |     const Eigen::MatrixBase<DERIVED_P> & p,
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:6,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometry.hpp:4,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/PinholeUndistorter.hpp:4,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/PinholeUndistorter.cpp:1:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp: In member function ‘sm::Id sm::Id::operator++(int)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:122:14: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  122 |       return rval;
      |              ^~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp: In instantiation of ‘void aslam::cameras::DoubleSphereProjection<DISTORTION_T>::euclideanToKeypointDistortionJacobian(const Eigen::MatrixBase<OtherDerived>&, const Eigen::MatrixBase<OtherDerived>&) const [with DERIVED_P = Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, const Eigen::Block<const Eigen::Matrix<double, 4, 1>, 3, 1, false> >; DERIVED_JD = Eigen::Matrix<double, -1, -1>; DISTORTION_T = aslam::cameras::NoDistortion]’:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp:550:5:   required from ‘void aslam::cameras::DoubleSphereProjection<DISTORTION_T>::homogeneousToKeypointDistortionJacobian(const Eigen::MatrixBase<OtherDerived>&, const Eigen::MatrixBase<OtherDerived>&) const [with DERIVED_P = Eigen::Matrix<double, 4, 1>; DERIVED_JD = Eigen::Matrix<double, -1, -1>; DISTORTION_T = aslam::cameras::NoDistortion]’
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/CameraGeometry.hpp:723:9:   required from ‘void aslam::cameras::CameraGeometry<PROJECTION_T, SHUTTER_T, MASK_T>::homogeneousToKeypointIntrinsicsJacobian(const Vector4d&, Eigen::MatrixXd&, bool, bool, bool) const [with PROJECTION_T = aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>; SHUTTER_T = aslam::cameras::GlobalShutter; MASK_T = aslam::cameras::NoMask; Eigen::Vector4d = Eigen::Matrix<double, 4, 1>; Eigen::MatrixXd = Eigen::Matrix<double, -1, -1>]’
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/CameraGeometry.hpp:703:10:   required from here
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp:508:42: warning: unused parameter ‘p’ [-Wunused-parameter]
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp: In instantiation of ‘void aslam::cameras::DoubleSphereProjection<DISTORTION_T>::euclideanToKeypointDistortionJacobian(const Eigen::MatrixBase<OtherDerived>&, const Eigen::MatrixBase<OtherDerived>&) const [with DERIVED_P = Eigen::Block<const Eigen::Matrix<double, 4, 1>, 3, 1, false>; DERIVED_JD = Eigen::Matrix<double, -1, -1>; DISTORTION_T = aslam::cameras::NoDistortion]’:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp:553:5:   required from ‘void aslam::cameras::DoubleSphereProjection<DISTORTION_T>::homogeneousToKeypointDistortionJacobian(const Eigen::MatrixBase<OtherDerived>&, const Eigen::MatrixBase<OtherDerived>&) const [with DERIVED_P = Eigen::Matrix<double, 4, 1>; DERIVED_JD = Eigen::Matrix<double, -1, -1>; DISTORTION_T = aslam::cameras::NoDistortion]’
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/CameraGeometry.hpp:723:9:   required from ‘void aslam::cameras::CameraGeometry<PROJECTION_T, SHUTTER_T, MASK_T>::homogeneousToKeypointIntrinsicsJacobian(const Vector4d&, Eigen::MatrixXd&, bool, bool, bool) const [with PROJECTION_T = aslam::cameras::DoubleSphereProjection<aslam::cameras::NoDistortion>; SHUTTER_T = aslam::cameras::GlobalShutter; MASK_T = aslam::cameras::NoMask; Eigen::Vector4d = Eigen::Matrix<double, 4, 1>; Eigen::MatrixXd = Eigen::Matrix<double, -1, -1>]’
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/CameraGeometry.hpp:703:10:   required from here
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/DoubleSphereProjection.hpp:508:42: warning: unused parameter ‘p’ [-Wunused-parameter]
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp: In constructor ‘aslam::cameras::CameraId::CameraId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/CameraGeometryBase.hpp:24:1: note: in expansion of macro ‘SM_DEFINE_ID’
   24 | SM_DEFINE_ID (CameraId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::MultiFrameId::MultiFrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:9:1: note: in expansion of macro ‘SM_DEFINE_ID’
    9 | SM_DEFINE_ID (MultiFrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::FrameId::FrameId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:10:1: note: in expansion of macro ‘SM_DEFINE_ID’
   10 | SM_DEFINE_ID (FrameId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp: In constructor ‘aslam::LandmarkId::LandmarkId(const sm::Id&)’:
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:180:50: warning: implicitly-declared ‘constexpr sm::Id::Id(const sm::Id&)’ is deprecated [-Wdeprecated-copy]
  180 |         IdTypeName(const sm::Id & id) : sm::Id(id){}                    \
      |                                                  ^
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cameras/include/aslam/frontend_ids.hpp:11:1: note: in expansion of macro ‘SM_DEFINE_ID’
   11 | SM_DEFINE_ID (LandmarkId);
      | ^~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_common/include/sm/Id.hpp:132:9: note: because ‘sm::Id’ has user-provided ‘sm::Id& sm::Id::operator=(const sm::Id&)’
  132 |     Id& operator= (const Id& other)
      |         ^~~~~~~~
In file included from /usr/include/boost/python/converter/rvalue_from_python_data.hpp:10,
                 from /usr/include/boost/python/converter/registry.hpp:9,
                 from /usr/include/boost/python/converter/registered.hpp:11,
                 from /usr/include/boost/python/object/make_instance.hpp:10,
                 from /usr/include/boost/python/object/make_ptr_instance.hpp:8,
                 from /usr/include/boost/python/to_python_indirect.hpp:11,
                 from /usr/include/boost/python/converter/arg_to_python.hpp:10,
                 from /usr/include/boost/python/call.hpp:15,
                 from /usr/include/boost/python/object_core.hpp:14,
                 from /usr/include/boost/python/args.hpp:22,
                 from /usr/include/boost/python.hpp:11,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/numpy_eigen/include/numpy_eigen/boost_python_headers.hpp:24,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraGeometries.cpp:1:
/usr/include/boost/python/detail/destroy.hpp: In instantiation of ‘static void boost::python::detail::value_destroyer<false>::execute(const volatile T*) [with T = Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >]’:
/usr/include/boost/python/detail/destroy.hpp:52:15:   required from ‘void boost::python::detail::destroy_referent_impl(void*, T& (*)()) [with T = const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >]’
/usr/include/boost/python/detail/destroy.hpp:58:26:   required from ‘void boost::python::detail::destroy_referent(void*, T (*)()) [with T = const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&]’
/usr/include/boost/python/converter/rvalue_from_python_data.hpp:135:51:   required from ‘boost::python::converter::rvalue_from_python_data<T>::~rvalue_from_python_data() [with T = const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&]’
/usr/include/boost/python/converter/arg_from_python.hpp:106:8:   required from ‘PyObject* boost::python::detail::caller_arity<2>::impl<F, Policies, Sig>::operator()(PyObject*, PyObject*) [with F = bool (aslam::cameras::ImageMask::*)(const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&) const; Policies = boost::python::default_call_policies; Sig = boost::mpl::vector3<bool, aslam::cameras::ImageMask&, const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&>; PyObject = _object]’
/usr/include/boost/python/object/py_function.hpp:38:33:   required from ‘PyObject* boost::python::objects::caller_py_function_impl<Caller>::operator()(PyObject*, PyObject*) [with Caller = boost::python::detail::caller<bool (aslam::cameras::ImageMask::*)(const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&) const, boost::python::default_call_policies, boost::mpl::vector3<bool, aslam::cameras::ImageMask&, const Eigen::MatrixBase<Eigen::Matrix<double, -1, 1> >&> >; PyObject = _object]’
/usr/include/boost/python/object/py_function.hpp:36:15:   required from here
/usr/include/boost/python/detail/destroy.hpp:20:9: error: ‘Eigen::MatrixBase<Derived>::~MatrixBase() [with Derived = Eigen::Matrix<double, -1, 1>]’ is protected within this context
   20 |         p->~T();
      |         ^
In file included from /usr/include/eigen3/Eigen/Core:88,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/Schweizer-Messer/numpy_eigen/include/numpy_eigen/boost_python_headers.hpp:23,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/CameraGeometries.cpp:1:
/usr/include/eigen3/Eigen/src/Core/util/Macros.h:870:23: note: declared protected here
  870 |     EIGEN_DEVICE_FUNC ~Derived() = default;
      |                       ^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:468:5: note: in expansion of macro ‘EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR’
  468 |     EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(MatrixBase)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/OmniUndistorter.hpp:115,
                 from /home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_cv_python/src/OmniUndistorter.cpp:2:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/OmniUndistorter.hpp: In function ‘void aslam::initUndistOmniToPinholeMap(boost::shared_ptr<T>, const Matrix3d&, cv::Size, cv::OutputArray, cv::OutputArray) [with CAMERA_T = aslam::cameras::CameraGeometry<aslam::cameras::OmniProjection<aslam::cameras::NoDistortion>, aslam::cameras::GlobalShutter, aslam::cameras::NoMask>]’:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/OmniUndistorter.hpp:117:34: warning: ‘*((void*)& keypoint +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  117 |       int iv = saturate_cast<int>(keypoint[1] * INTER_TAB_SIZE);
      |                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/OmniUndistorter.hpp:116:34: warning: ‘keypoint’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  116 |       int iu = saturate_cast<int>(keypoint[0] * INTER_TAB_SIZE);
      |                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/OmniUndistorter.hpp: In function ‘void aslam::initUndistOmniToPinholeMap(boost::shared_ptr<T>, const Matrix3d&, cv::Size, cv::OutputArray, cv::OutputArray) [with CAMERA_T = aslam::cameras::CameraGeometry<aslam::cameras::OmniProjection<aslam::cameras::NoDistortion>, aslam::cameras::GlobalShutter, aslam::cameras::ImageMask>]’:
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/OmniUndistorter.hpp:117:34: warning: ‘*((void*)& keypoint +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  117 |       int iv = saturate_cast<int>(keypoint[1] * INTER_TAB_SIZE);
      |                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/Software/kalibr_ws/src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/OmniUndistorter.hpp:116:34: warning: ‘keypoint’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  116 |       int iu = saturate_cast<int>(keypoint[0] * INTER_TAB_SIZE);
      |                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/aslam_cv_python.dir/build.make:76: CMakeFiles/aslam_cv_python.dir/src/CameraGeometries.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:331: CMakeFiles/aslam_cv_python.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
cd /home/jeff/Software/kalibr_ws/build/aslam_cv_python; catkin build --get-env aslam_cv_python | catkin env -si  /usr/bin/make --jobserver-auth=3,4; cd -
........................................................................................................................................................................................
Failed     << aslam_cv_python:make                          [ Exited with code 2 ]                                                                                                      
Failed    <<< aslam_cv_python                               [ 23.1 seconds ]                                                                                                            
Abandoned <<< aslam_cv_backend_python                       [ Unrelated job failed ]                                                                                                    
Abandoned <<< kalibr                                        [ Unrelated job failed ]                                                                                                    
[build] Summary: 34 of 37 packages succeeded.                                                                                                                                           
[build]   Ignored:   None.                                                                                                                                                              
[build]   Warnings:  None.                                                                                                                                                              
[build]   Abandoned: 2 packages were abandoned.                                                                                                                                         
[build]   Failed:    1 packages failed.                                                                                                                                                 
[build] Runtime: 27.3 seconds total.
hz658832 commented 3 years ago

Hey Jeff, @jeff-delaune I think I have figured out the issure, i am guessing newer Eigen has changed the member function in protected. My solution: change line 466 protected into public in /usr/include/eigen3/Eigen/src/Core/MatrixBase.h or /usr/local/include/eigen3/Eigen/src/Core/MatrixBase.h. You may have other problems after this issure, feel free to contact me. My OS: Ubuntu 20.04 Bests from aachen Zh

oliver-batchelor commented 3 years ago

Even if it will compile in 20.04 (which I have managed also, eventually). All the python code is python2 which I don't believe is supported under OS noetic anymore?

christian-rauch commented 3 years ago

Yes, the python 2 code likely will not run on Ubuntu 20.04 / python3. But so will be the OpenCV code which uses parts of the C API in the C++ code and will not compile with OpenCV 4.

I started porting to Ubuntu 20.04 (OpenCV 4, Python 3) (https://github.com/christian-rauch/kalibr/tree/fixes) but are now stuck in boost-python with (https://github.com/ethz-asl/kalibr/issues/404):

/usr/include/boost/python/detail/destroy.hpp:20:9: error: ‘Eigen::MatrixBase<Derived>::~MatrixBase() [with Derived = Eigen::Matrix<double, -1, 1>]’ is protected within this context
   20 |         p->~T();
      |         ^
oliver-batchelor commented 3 years ago

Ah yes - I saw the same and couldn't solve it. Commented that out in order to compile, but then couldn't run because of the python3 issue and gave up...

Is there a reason to call the destructor rather than "delete p"?

On Wed, Dec 16, 2020 at 3:44 AM Christian Rauch notifications@github.com wrote:

Yes, the python 2 code likely will not run on Ubuntu 20.04 / python3. But so will be the OpenCV code which uses parts of the C API in the C++ code and will not compile with OpenCV 4.

I started porting to Ubuntu 20.04 (OpenCV 4, Python 3) ( https://github.com/christian-rauch/kalibr/tree/fixes) but are now stuck in boost-python with (#404 https://github.com/ethz-asl/kalibr/issues/404 ):

/usr/include/boost/python/detail/destroy.hpp:20:9: error: ‘Eigen::MatrixBase::~MatrixBase() [with Derived = Eigen::Matrix<double, -1, 1>]’ is protected within this context

20 | p->~T();

  |         ^

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ethz-asl/kalibr/issues/396#issuecomment-745338758, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAITRZJTNHMO6HITAKPF67LSU5Y6VANCNFSM4TRDGIYA .

christian-rauch commented 3 years ago

I am not sure why boost implemented it this way, a delete should have the same effect. Changing the code on-disk is not an option as this is a system package, which should not be interfered with. If the code has to be patched manually, a custom boost or Eigen version should be provided in the workspace.

The documentation on this seems outdated. Maybe it's worth exploring other options, such as pybind11, for this.

xqms commented 3 years ago

@christian-rauch Thanks for your work on porting to 20.04!

I am not sure why boost implemented it this way, a delete should have the same effect.

Calling the destructor explicitly just executes the destructor, leaving uninitialized memory behind - ready to be used again (for example by calling the constructor in place). Calling delete will deallocate the memory. I guess they implemented some array logic. std::vector uses this technique as well.

The main problem is that Eigen::MatrixBase is not a good type to allocate / deallocate. You also cannot keep it in std::vector for the same reason. I guess some method in kalibr returns this type, when it should return a more concrete type (like Eigen::Matrix).

xqms commented 3 years ago

For anyone else needing a workaround for running kalibr under 20.04, here's a quick&dirty Dockerfile: https://gist.github.com/xqms/6cc015bae5222b4bff33cd589e4adc05

xqms commented 3 years ago

I also pushed my dockerfile to docker hub, so you can launch it using

cd where/my/bagfiles/are
docker run -it -v $(pwd):/mnt xqms/kalibr

and then inside the docker container:

. /workspace/devel/setup.bash
cd /mnt
kalibr_calibrate_cameras ...
mcamurri commented 3 years ago

Check this out: https://github.com/ori-drs/kalibr

DreamWaterFound commented 3 years ago

Check this out: https://github.com/ori-drs/kalibr

Thank vvvvvvvvvvvvvvvvvvvvery much! It works very well!

haichuanW commented 3 years ago

Check this out: https://github.com/ori-drs/kalibr

Hello, I managed to make the project, but still get stuck with the optimization as shown below image

Enes1097 commented 3 years ago

Hez, @wanghaichuan941221 I have the same problem, did you find any way to solve it?

xqms commented 3 years ago

@Enes1097 I had similar problems with the optimization using the ori-drs fork. Have you tried my docker container from above (https://github.com/ethz-asl/kalibr/issues/396#issuecomment-788968713)?

Enes1097 commented 3 years ago

@xqms not yet, but I will try it out. Thanks :)

JzHuai0108 commented 3 years ago

Hi @Enes1097, I tested the ori-drs fork with the Kalibr IMU-camera dynamic calibration sample, and it worked almost perfectly despite several innocuous warnings from wxPython as shown below.

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_wx.py", line 784, in _onSize
    self.bitmap = wx.Bitmap(self._width, self._height)
wx._core.wxAssertionError: C++ assertion ""width > 0 && height > 0"" failed at /tmp/pip-install-i3i6lzg4/wxPython/ext/wxWidgets/src/gtk/bitmap.cpp(539) in Create(): invalid bitmap size
Traceback (most recent call last):

The calibration results are so close to the those obtained under ubuntu 18 + ros1 melodic. I am not sure how the optimization stuck issue mentioned by others cropped.

FYI, here is the procedure I build and test the ori-drs fork under ubuntu 20 + ros1 noetic.

Steps to build ori-drs/kalibr on noetic

This repo also probably work on melodic as mentioned by wxmerkt

sudo apt update
sudo apt-get install python3-setuptools python3-rosinstall ipython3 libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-noetic-vision-opencv ros-noetic-image-transport-plugins ros-noetic-cmake-modules python3-software-properties software-properties-common libpoco-dev python3-matplotlib python3-scipy python3-git python3-pip libtbb-dev libblas-dev liblapack-dev libv4l-dev python3-catkin-tools python3-igraph libsuitesparse-dev 

pip3 install wxPython

If you encounter errors like "E: Unable to locate package python3-catkin-tools", then setup your sources.list and keys as instructed here.

mkdir ~/kalibr_ws/src
cd ~/kalibr_ws/src
git clone --recursive https://github.com/ori-drs/kalibr

cd ~/kalibr_ws
source /opt/ros/noetic/setup.bash
catkin init
catkin config --extend /opt/ros/noetic
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

catkin build -DCMAKE_BUILD_TYPE=Release -j4

Test with camera-IMU calibration sample data

source ~/kalibr_ws/devel/setup.bash
cd /path/to/kalibr_dynamic_sample
rosrun kalibr kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag dynamic.bag --bag-from-to 5 45
marc-wittwer commented 2 years ago

I also pushed my dockerfile to docker hub, so you can launch it using

cd where/my/bagfiles/are
docker run -it -v $(pwd):/mnt xqms/kalibr

and then inside the docker container:

. /workspace/devel/setup.bash
cd /mnt
kalibr_calibrate_cameras ...

Thanks a lot this worked. @xqms

I had to set the display env variable to let the docker container create a plot. https://stackoverflow.com/questions/49169055/docker-tkinter-tclerror-couldnt-connect-to-display/49229627#49229627

# Install xhost
 sudo apt-get install x11-xserver-utils

# Allow docker container to use your display
xhost +
sudo docker run -it --rm -v $(pwd):/mnt -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw xqms/kalibr
goldbattle commented 2 years ago

Hi please try PR https://github.com/ethz-asl/kalibr/pull/515 to see if that solves your issue.