shichaoy / pop_up_slam

Pop-up SLAM: Semantic Monocular Plane SLAM for Low-texture Environments
Other
226 stars 68 forks source link

"catkin_make -j8" error! #3

Closed HaiDang2001VN closed 5 years ago

HaiDang2001VN commented 5 years ago

Hello @shichaoy , thank you and your team for great work on exploring combination of SLAM with Segmentation Network, I have successfully run your pop_up_image but some error "pop up" with this SLAM though.


I have built DBoW2 successfully and install python requirements with pip2 as:

sudo -H pip2 install -r py_requirements.txt

My system pip2 is 9.0.3 and it installed without any error.


After download data, I make the workspace with catkin_make -j8 but it resulted in following failure:

/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/Mapping.cpp: In member function ‘void Mapper_mono::update_plane_measurement()’:
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/Mapping.cpp:600:6: error: ‘update_plane_equation_from_seg’ is not a member of ‘popup_plane’
      popup_plane::update_plane_equation_from_seg(one_frame->ground_seg2d_lines,inv_calib,pose, all_planes_sensor_new);
      ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp: In constructor ‘plane_slam::plane_slam(ros::NodeHandle&)’:
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:179:14: error: ‘class popup_plane’ has no member named ‘walllength_threshold’
  pop_up_obj->walllength_threshold = 3.0;
              ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp: In member function ‘void plane_slam::img_callback_cnn_crf(const ConstPtr&, const ConstPtr&)’:
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:417:14: error: ‘class popup_plane’ has no member named ‘walllength_threshold’
  pop_up_obj->walllength_threshold = 3.0;
              ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:418:14: error: ‘class popup_plane’ has no member named ‘simple_polygon_mode’
  pop_up_obj->simple_polygon_mode = false;
              ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:428:55: error: ‘class popup_plane’ has no member named ‘ground_seg2d_lines_actual’
  MatrixX4f utilized_ground_seg2d_lines  = pop_up_obj->ground_seg2d_lines_actual;     // whether include connected segments
                                                       ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:434:57: error: no matching function for call to ‘is_finite(Eigen::MatrixXf&)’
  if (!is_finite<MatrixX4f>(pop_up_obj->all_planes_sensor))  //check nan
                                                         ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:62:13: note: candidate: template<class Derived> bool is_finite(const Eigen::MatrixBase<Derived>&)
 inline bool is_finite(const Eigen::MatrixBase<Derived>& x)
             ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:62:13: note:   template argument deduction/substitution failed:
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:434:40: note:   cannot convert ‘((plane_slam*)this)->plane_slam::pop_up_obj->popup_plane::all_planes_sensor’ (type ‘Eigen::MatrixXf {aka Eigen::Matrix<float, -1, -1>}’) to type ‘const Eigen::MatrixBase<Eigen::Matrix<float, -1, 4> >&’
  if (!is_finite<MatrixX4f>(pop_up_obj->all_planes_sensor))  //check nan
                                        ^
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:441:66: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
      if (check_element_in_vector(i,pop_up_obj->good_plane_indices))  // good lines in red, bad lines in blue
                                                                  ^
In file included from /home/buiminh/Workspace/PopIm/src/pop_up_image/pop_up_wall/include/pop_up_wall/popup_plane.h:52:0,
                 from /home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:14:
/home/buiminh/Workspace/PopIm/src/pop_up_image/pop_up_wall/include/pop_up_wall/matrix_utils.h:93:6: note: candidate 1: bool check_element_in_vector(const float&, const VectorXf&)
 bool check_element_in_vector(const float& element, const VectorXf &vec_check);
      ^
/home/buiminh/Workspace/PopIm/src/pop_up_image/pop_up_wall/include/pop_up_wall/matrix_utils.h:94:6: note: candidate 2: bool check_element_in_vector(const int&, const VectorXi&)
 bool check_element_in_vector(const int& element, const VectorXi &vec_check);
      ^
[ 98%] Linking CXX executable /home/buiminh/Workspace/PopSLAM/devel/lib/pop_up_wall/pop_up_main_node
In file included from /usr/include/eigen3/Eigen/Core:297:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/Thirdparty/isam/include/isam/Slam.h:32,
                 from /home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/Thirdparty/isam/include/isam/isam.h:32,
                 from /home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/Mapping.h:9,
                 from /home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:10:
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h: In instantiation of ‘void Eigen::internal::call_assignment_no_alias(Dst&, const Src&, const Func&) [with Dst = Eigen::Matrix<int, -1, 1>; Src = Eigen::Matrix<float, -1, 1>; Func = Eigen::internal::assign_op<int>]’:
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:712:27:   required from ‘void Eigen::internal::call_assignment(Dst&, const Src&, const Func&, typename Eigen::internal::enable_if<(! Eigen::internal::evaluator_assume_aliasing<Src>::value), void*>::type) [with Dst = Eigen::Matrix<int, -1, 1>; Src = Eigen::Matrix<float, -1, 1>; Func = Eigen::internal::assign_op<int>; typename Eigen::internal::enable_if<(! Eigen::internal::evaluator_assume_aliasing<Src>::value), void*>::type = void*]’
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:693:18:   required from ‘void Eigen::internal::call_assignment(Dst&, const Src&) [with Dst = Eigen::Matrix<int, -1, 1>; Src = Eigen::Matrix<float, -1, 1>]’
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:682:32:   required from ‘Derived& Eigen::PlainObjectBase<Derived>::_set(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<float, -1, 1>; Derived = Eigen::Matrix<int, -1, 1>]’
/usr/include/eigen3/Eigen/src/Core/Matrix.h:225:24:   required from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<float, -1, 1>; _Scalar = int; int _Rows = -1; int _Cols = 1; int _Options = 0; int _MaxRows = -1; int _MaxCols = 1]’
/home/buiminh/Workspace/PopSLAM/src/pop_up_slam/pop_planar_slam/src/main_3d.cpp:494:36:   required from here
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
                                        ^
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:707:3: note: in expansion of macro ‘EIGEN_STATIC_ASSERT’
   EIGEN_STATIC_ASSERT((internal::functor_is_product_like<BINOP>::ret \
   ^
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:745:3: note: in expansion of macro ‘EIGEN_CHECK_BINARY_COMPATIBILIY’
   EIGEN_CHECK_BINARY_COMPATIBILIY(Func,typename ActualDstTypeCleaned::Scalar,typename Src::Scalar);
   ^
[ 98%] Built target pop_up_main_node
pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/build.make:86: recipe for target 'pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/src/Mapping.cpp.o' failed
make[2]: *** [pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/src/Mapping.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/build.make:62: recipe for target 'pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/src/main_3d.cpp.o' failed
make[2]: *** [pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/src/main_3d.cpp.o] Error 1
CMakeFiles/Makefile2:2265: recipe for target 'pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/all' failed
make[1]: *** [pop_up_slam/pop_planar_slam/CMakeFiles/planar_test.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8" failed

It seems that the popup_plane not having some members function. And I don't have idea to fix it. Did you encounter any error like this? I will looking for your reply, if you have any suggestion with this type of error.


Thank in advance.

shichaoy commented 5 years ago

Hi, thanks for the interest. This looks wired as we can see from "pop_up_wall/popup_plane.h" from this repo, the class variable "walllength_threshold, ground_seg2d_lines_actual" do exist. I guess you are using an old version of "pop_up_wall" from another repo (pop_up_image). "pop_up_wall" in this slam repo is already updated, with many difference. You actually don't need to keep pop_up_image repo anymore as its function is contained in this "pop_up_wall". Let me know if you still have error.

HaiDang2001VN commented 5 years ago

Thanks, this problem was solved when I deleted pop_up_image repository. Close this now!