鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ORB_SLAM2编译报错,用遍了网上的方法都不行,谁给指点一下

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    humble orb-slam2
    4
    13
    1.6k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 毛哥成山轮胎机油保养毛
      毛哥成山轮胎机油保养 活跃VIP
      最后由 编辑

      ubuntu 22.04 系统 ros2 humble
      下载代码地址:
      git clone https://github.com/raulmur/ORB_SLAM2

      按照这个网址的方法也作了修改,用尽各种方法,编译就是不成功

      CMakeCache.txt

      cmake_minimum_required(VERSION 2.8)
      project(ORB_SLAM2)
      
      IF(NOT CMAKE_BUILD_TYPE)
        SET(CMAKE_BUILD_TYPE Release)
      ENDIF()
      
      MESSAGE("Build type: " ${CMAKE_BUILD_TYPE})
      
      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3 -march=native ")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3 -march=native")
      
      # Check C++11 or C++0x support
      include(CheckCXXCompilerFlag)
      CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
      CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
      if(COMPILER_SUPPORTS_CXX11)
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
         add_definitions(-DCOMPILEDWITHC11)
         message(STATUS "Using flag -std=c++11.")
      elseif(COMPILER_SUPPORTS_CXX0X)
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
         add_definitions(-DCOMPILEDWITHC0X)
         message(STATUS "Using flag -std=c++0x.")
      else()
         message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
      endif()
      
      LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
      
      find_package(OpenCV 4 QUIET)
      if(NOT OpenCV_FOUND)
         find_package(OpenCV 4 QUIET)
         if(NOT OpenCV_FOUND)
            message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
         endif()
      endif()
      
      find_package(Eigen3 3 REQUIRED)
      
      
      find_package(Pangolin REQUIRED)
      
      
      include_directories(
      ${PROJECT_SOURCE_DIR}
      ${PROJECT_SOURCE_DIR}/include
      ${EIGEN3_INCLUDE_DIR}
      ${Pangolin_INCLUDE_DIRS}
      
      )
      
      set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
      
      add_library(${PROJECT_NAME} SHARED
      src/System.cc
      src/Tracking.cc
      src/LocalMapping.cc
      src/LoopClosing.cc
      src/ORBextractor.cc
      src/ORBmatcher.cc
      src/FrameDrawer.cc
      src/Converter.cc
      src/MapPoint.cc
      src/KeyFrame.cc
      src/Map.cc
      src/MapDrawer.cc
      src/Optimizer.cc
      src/PnPsolver.cc
      src/Frame.cc
      src/KeyFrameDatabase.cc
      src/Sim3Solver.cc
      src/Initializer.cc
      src/Viewer.cc
      )
      
      target_link_libraries(${PROJECT_NAME}
      ${OpenCV_LIBS}
      ${EIGEN3_LIBS}
      ${Pangolin_LIBRARIES}
      ${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
      ${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
      )
      
      # Build examples
      
      set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/RGB-D)
      
      add_executable(rgbd_tum
      Examples/RGB-D/rgbd_tum.cc)
      target_link_libraries(rgbd_tum ${PROJECT_NAME})
      
      set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo)
      
      add_executable(stereo_kitti
      Examples/Stereo/stereo_kitti.cc)
      target_link_libraries(stereo_kitti ${PROJECT_NAME})
      
      add_executable(stereo_euroc
      Examples/Stereo/stereo_euroc.cc)
      target_link_libraries(stereo_euroc ${PROJECT_NAME})
      
      
      set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular)
      
      add_executable(mono_tum
      Examples/Monocular/mono_tum.cc)
      target_link_libraries(mono_tum ${PROJECT_NAME})
      
      add_executable(mono_kitti
      Examples/Monocular/mono_kitti.cc)
      target_link_libraries(mono_kitti ${PROJECT_NAME})
      
      add_executable(mono_euroc
      Examples/Monocular/mono_euroc.cc)
      target_link_libraries(mono_euroc ${PROJECT_NAME})
      
      
      

      编译报错:

      CMake Warning (dev) at CMakeLists.txt:96 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "stereo_kitti" links to target "Eigen3::Eigen" but the target was
        not found.  Perhaps a find_package() call is missing for an IMPORTED
        target, or an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:100 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "stereo_euroc" links to target "Eigen3::Eigen" but the target was
        not found.  Perhaps a find_package() call is missing for an IMPORTED
        target, or an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:100 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "stereo_euroc" links to target "Eigen3::Eigen" but the target was
        not found.  Perhaps a find_package() call is missing for an IMPORTED
        target, or an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:100 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "stereo_euroc" links to target "Eigen3::Eigen" but the target was
        not found.  Perhaps a find_package() call is missing for an IMPORTED
        target, or an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:107 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_tum" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:107 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_tum" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:107 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_tum" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:111 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_kitti" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:111 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_kitti" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:111 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_kitti" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:115 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_euroc" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:115 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_euroc" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      CMake Warning (dev) at CMakeLists.txt:115 (add_executable):
        Policy CMP0028 is not set: Double colon in target name means ALIAS or
        IMPORTED target.  Run "cmake --help-policy CMP0028" for policy details.
        Use the cmake_policy command to set the policy and suppress this warning.
      
        Target "mono_euroc" links to target "Eigen3::Eigen" but the target was not
        found.  Perhaps a find_package() call is missing for an IMPORTED target, or
        an ALIAS target is missing?
      This warning is for project developers.  Use -Wno-dev to suppress it.
      
      LorryL 2 条回复 最后回复 回复 引用 0
      • LorryL
        Lorry @毛哥成山轮胎机油保养
        最后由 编辑

        @毛哥成山轮胎机油保养 大致看了一下,你这缺少Eigen3的库,装个就行

        毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
        • LorryL
          Lorry @毛哥成山轮胎机油保养
          最后由 编辑

          @毛哥成山轮胎机油保养 我之前用的这个链接编译成功了 orb-slam2,你可以参考一下。不过orb-slam2想要导航,需要修改的东西有点多,比较麻烦(我没实现)

          毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
          • 毛哥成山轮胎机油保养毛
            毛哥成山轮胎机油保养 活跃VIP @Lorry
            最后由 编辑

            @Lorry Eigen3 3.4.0 Pangolin按好几个博主的方法安装了好几遍,就是编译通过不了,应该就是这里有问题,

            find_package(Eigen3 3 REQUIRED)
            
            
            find_package(Pangolin REQUIRED)
            
            
            include_directories(
            ${PROJECT_SOURCE_DIR}
            ${PROJECT_SOURCE_DIR}/include
            ${EIGEN3_INCLUDE_DIR}
            ${Pangolin_INCLUDE_DIRS}
            
            )
            

            也按照好几个博主的改了,就是不行,找不到Eigen3::Eigen

            1 条回复 最后回复 回复 引用 0
            • 毛哥成山轮胎机油保养毛
              毛哥成山轮胎机油保养 活跃VIP @Lorry
              最后由 编辑

              @Lorry 我试试看,谢谢

              LorryL 1 条回复 最后回复 回复 引用 0
              • LorryL
                Lorry @毛哥成山轮胎机油保养
                最后由 编辑

                @毛哥成山轮胎机油保养 如果你安装过了,你看看你电脑有没有/lib/cmake/eigen3这个路径,路径里有没有Eigen3Config.cmake的文件

                毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                • 毛哥成山轮胎机油保养毛
                  毛哥成山轮胎机油保养 活跃VIP @Lorry
                  最后由 毛哥成山轮胎机油保养 编辑

                  @Lorry 截图 2022-11-24 10-36-15.png
                  按这个博主的方法安装的
                  https://blog.csdn.net/qq_45401419/article/details/118358687
                  一切都和他写的一样,但是/lib/cmake/eigen3这个路径,路径里有没有Eigen3Config.cmake文件
                  实在编译过不了,我先学习一下orb_slam代码,等熟悉了代码在想办法编译

                  LorryL 1 条回复 最后回复 回复 引用 0
                  • LorryL
                    Lorry @毛哥成山轮胎机油保养
                    最后由 编辑

                    @毛哥成山轮胎机油保养 eigen3编译完成后需要安装的

                    sudo make install
                    

                    这样才会把编译完成的库文件安装到系统目录,cmake才会找到。
                    另外,eigen3添加引用时,你可以尝试将Eigen改为eigen3/Eigen

                    毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                    • 毛哥成山轮胎机油保养毛
                      毛哥成山轮胎机油保养 活跃VIP @Lorry
                      最后由 编辑

                      @Lorry 截图 2022-11-24 14-25-05.png
                      截图 2022-11-24 14-26-52.png
                      ubuntu22.04 ros2 humble版应该是太新了,好多软件都不合适,毕竟这是六七年前的开源程序了

                      小鱼小 1 条回复 最后回复 回复 引用 0
                      • 小鱼小
                        小鱼 技术大佬 @毛哥成山轮胎机油保养
                        最后由 编辑

                        @毛哥成山轮胎机油保养 是的了,可以回退下版本,或者试试docker(不过又要折腾挺长时间)

                        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                        毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                        • 毛哥成山轮胎机油保养毛
                          毛哥成山轮胎机油保养 活跃VIP @小鱼
                          最后由 编辑

                          @小鱼 搞了两三天了,Cmakelists.txt Makefile学了好几遍了,自己的Cmakelists.txt也改了好多次 就是不行呀,坑真深

                          1 条回复 最后回复 回复 引用 0
                          • 毛哥成山轮胎机油保养毛 毛哥成山轮胎机油保养 将这个主题标记为已解决,在
                          • 毛哥成山轮胎机油保养毛
                            毛哥成山轮胎机油保养 活跃VIP
                            最后由 编辑

                            ORB_SLAM2时间太久了,现在的软件环境很难适配,安装ORB_SLAM3容易一点.

                            1 条回复 最后回复 回复 引用 0
                            • 11029581511
                              帆
                              最后由 编辑

                              哈哈哈,这个问题,我解决了,方法如下:

                              在CMakeLists.txt中,将
                              find_package(Eigen3 3.1.0 REQUIRED)

                              替换为
                              list(APPEND CMAKE_INCLUDE_PATH "/usr/local/include")
                              find_package (Eigen3 3.3 REQUIRED NO_MODULE)

                              1 条回复 最后回复 回复 引用 0
                              • 第一个帖子
                                最后一个帖子
                              皖ICP备16016415号-7
                              Powered by NodeBB | 鱼香ROS