iris icon indicating copy to clipboard operation
iris copied to clipboard

MAPⅣ/iris build error

Open nagoconso opened this issue 1 year ago • 2 comments

catkin_make of "https://github.com/MapIV/iris" fails. An error like the one below appears.  I would like to know how to solve it. The environment and actions taken are described below.

■Error(See attached file for full text of error)

[ 2%] Building CXX object iris/iris/CMakeFiles/iris_node.dir/src/optimize/aligner.cpp.o [ 2%] Building CXX object iris/iris/CMakeFiles/iris_node.dir/src/optimize/types_gicp.cpp.o [ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/graph_optimizer.cc.o [ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/local_bundle_adjuster.cc.o [ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/transform_optimizer.cc.o [ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/pose_optimizer.cc.o [ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/global_bundle_adjuster.cc.o [ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/g2o/se3/shot_vertex.cc.o In file included from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.cc:1: /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:28:26: error: ‘number_t’ does not name a type 28 | void oplusImpl(const number_t* update_) override { | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:28:10: error: ‘void openvslam::optimize::g2o::se3::shot_vertex::oplusImpl(const int*)’ marked ‘override’, but does not override 28 | void oplusImpl(const number_t* update_) override { | ^~~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h: In member function ‘void openvslam::optimize::g2o::se3::shot_vertex::oplusImpl(const int*)’: /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:29:48: error: no matching function for call to ‘Eigen::Map<const Eigen::Matrix<double, 6, 1, 0, 6, 1>, 0, Eigen::Stride<0, 0> >::Map(const int*&)’ 29 | Eigen::Map<const Vec6_t> update(update_); | ^ In file included from /usr/include/eigen3/Eigen/Core:88, from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/type.h:10, from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:4, from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.cc:1: /usr/include/eigen3/Eigen/src/Core/Map.h:162:5: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(const Eigen::Map<MatrixType, MapOptions, StrideType>&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>]’ 162 | EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/eigen3/Eigen/src/Core/Map.h:162:5: note: no known conversion for argument 1 from ‘const int*’ to ‘const Eigen::Map<const Eigen::Matrix<double, 6, 1, 0, 6, 1>, 0, Eigen::Stride<0, 0> >&’ 162 | EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/eigen3/Eigen/Core:470, from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/type.h:10, from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:4, from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.cc:1: /usr/include/eigen3/Eigen/src/Core/Map.h:156:12: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType, Eigen::Index, Eigen::Index, const StrideType&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>; Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType = const double*; Eigen::Index = long int]’ 156 | inline Map(PointerArgType dataPtr, Index rows, Index cols, const StrideType& stride = StrideType()) | ^~~ /usr/include/eigen3/Eigen/src/Core/Map.h:156:12: note: candidate expects 4 arguments, 1 provided /usr/include/eigen3/Eigen/src/Core/Map.h:142:12: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType, Eigen::Index, const StrideType&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>; Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType = const double*; Eigen::Index = long int]’ 142 | inline Map(PointerArgType dataPtr, Index size, const StrideType& stride = StrideType()) | ^~~ /usr/include/eigen3/Eigen/src/Core/Map.h:142:12: note: candidate expects 3 arguments, 1 provided /usr/include/eigen3/Eigen/src/Core/Map.h:129:21: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType, const StrideType&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>; Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType = const double*]’ 129 | explicit inline Map(PointerArgType dataPtr, const StrideType& stride = StrideType()) | ^~~ /usr/include/eigen3/Eigen/src/Core/Map.h:129:40: note: no known conversion for argument 1 from ‘const int*’ to ‘Eigen::Map<const Eigen::Matrix<double, 6, 1, 0, 6, 1>, 0, Eigen::Stride<0, 0> >::PointerArgType’ {aka ‘const double*’} 129 | explicit inline Map(PointerArgType dataPtr, const StrideType& stride = StrideType()) | ~~~~~~~~~~~~~~~^~~~~~~ In file included from /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:26: /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:63:17: error: ‘number_t’ has not been declared 63 | Matrix3 prec0(number_t e); // for target | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:64:17: error: ‘number_t’ has not been declared 64 | Matrix3 prec1(number_t e); // for source | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:67:16: error: ‘number_t’ has not been declared 67 | Matrix3 cov0(number_t e); // for target | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:68:16: error: ‘number_t’ has not been declared 68 | Matrix3 cov1(number_t e); // for source | ^~~~~~~~ In file included from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/transform_optimizer.cc:4: /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:28:26: error: ‘number_t’ does not name a type 28 | void oplusImpl(const number_t* update_) override { | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:28:10: error: ‘void openvslam::optimize::g2o::sim3::transform_vertex::oplusImpl(const int*)’ marked ‘override’, but does not override 28 | void oplusImpl(const number_t* update_) override { | ^~~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h: In member function ‘void openvslam::optimize::g2o::sim3::transform_vertex::oplusImpl(const int*)’: /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:46: error: ‘number_t’ does not name a type 29 | Eigen::Map<Vec7_t> update(const_cast<number_t*>(update_)); | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:54: error: expected ‘>’ before ‘’ token 29 | Eigen::Map<Vec7_t> update(const_cast<number_t>(update_)); | ^ /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:54: error: expected ‘(’ before ‘’ token 29 | Eigen::Map<Vec7_t> update(const_cast<number_t>(update_)); | ^ | ( /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:55: error: expected primary-expression before ‘>’ token 29 | Eigen::Map<Vec7_t> update(const_cast<number_t*>(update_)); | ^ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:64:9: error: ‘g2o::Matrix3 iris::optimize::EdgeGICP::prec0’ is not a static data member of ‘class iris::optimize::EdgeGICP’ 64 | Matrix3 EdgeGICP::prec0(number_t e) | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:64:25: error: ‘number_t’ was not declared in this scope; did you mean ‘g2o::number_t’? 64 | Matrix3 EdgeGICP::prec0(number_t e) | ^~~~~~~~ | g2o::number_t In file included from /usr/local/include/g2o/core/jacobian_workspace.h:34, from /usr/local/include/g2o/core/optimizable_graph.h:39, from /usr/local/include/g2o/core/base_edge.h:36, from /usr/local/include/g2o/core/base_fixed_sized_edge.h:35, from /usr/local/include/g2o/core/base_binary_edge.h:30, from /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:28, from /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:26: /usr/local/include/g2o/core/eigen_types.h:36:7: note: ‘g2o::number_t’ declared here 36 | using number_t = double; | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:65:1: error: expected ‘,’ or ‘;’ before ‘{’ token 65 | { | ^ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:74:9: error: ‘g2o::Matrix3 iris::optimize::EdgeGICP::prec1’ is not a static data member of ‘class iris::optimize::EdgeGICP’ 74 | Matrix3 EdgeGICP::prec1(number_t e) | ^~~~~~~~ /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:74:25: error: ‘number_t’ was not declared in this scope; did you mean ‘g2o::number_t’? 74 | Matrix3 EdgeGICP::prec1(number_t e) | ^~~~~~~~ | g2o::number_t ・・・・・・

iris_build_log.txt

■environment ・Ubuntu20.04 ・ROS1(ROS Noetic Ninjemys) ・g2o(https://github.com/RainerKuemmerle/g2o) ・DBoW2(https://github.com/shinsumicco/DBoW2) ・The hardware is “Jestone AGX Orin"

■procedure 1. Launching the "Ubuntu20.04" environment ↓ 2. ROS1 install ※https://wiki.ros.org/noetic/Installation/Ubuntu ↓ 3. g2o install git clone https://github.com/RainerKuemmerle/g2o.git cd g2o mkdir build cd build cmake .. make sudo make install ↓ 4. DBoW2 install mkdir DBow2_ws cd DBow2_ws git clone https://github.com/shinsumicco/DBoW2.git cd DBoW2 mkdir build cd build cmake .. make sudo make install ↓ 5. MapⅣ/iris build https://github.com/MapIV/iris.git mkdir -p catkin_ws/src cd catkin_ws/src git clone --recursive https://github.com/MapIV/iris.git cd .. catkin_make An error occurs!!

It looks like the error is that the header on the g2o(version 1.0.0) side cannot be referenced at build time... g2o libraries and headers are properly stored in include and lib under /usr/local. No changes have been made to the source code of "MAPⅣ/iris".

nagoconso avatar Mar 05 '24 04:03 nagoconso

This repository has only been tested with ROS Melodic. I think modifications will be necessary to run it on ROS Noetic.

rsasaki0109 avatar May 29 '24 02:05 rsasaki0109