ubuntu20.04通过ros-noetic配置ORBslam3

目录如下

目录

一.版本信息

二.库的环境配置

三.orbslam3编译

1.非ros情况下编译

(1)安装最新版本orbslam3

(2)修改文件

(3)编译​​​​​​​​​​​​​​

2.ros-noetic编译orbslam3-ros源码

(1)创造工作空间

(2)生成功能包

(3)将orbslam的ros的源码复制粘贴过来

(4)填写`CMakeLists.txt`

(5)编译

(6)运行节点


一.版本信息

系统或者包版本
ubuntu20.04
opencv4.5.5/4.2.0版本也可
pangolin0.6.0
Eigen3.*
rosros-noetic

二.库的环境配置

详情请看Ubuntu20.04的ROS环境安装ORB-SLAM3详解_asus.yaml-CSDN博客

三.orbslam3编译

1.非ros情况下编译

(1)安装最新版本orbslam3
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

或者直接安装解压即可

(2)修改文件

a.ORB_SLAM3下CMakeLists.txt

第二十行,换为

set(CMAKE_CXX_STANDARD 14)

b.第34行和第41行

// 34行
find_package(OpenCV REQUIRED)
// 41行
find_package(Eigen3 REQUIRED)
(3)编译
cd ORB_SLAM3
chmod +x build.sh
sh build.sh

2.ros-noetic编译orbslam3-ros源码

orbslam3的源码只在ubuntu18.04上运行,所以我们要重新用ros-noetic创建新的工作空间

(1)创造工作空间
cd ORB_SLAM3
mkdir -p ros/src
cd ros
catkin_make
(2)生成功能包
cd src/
catkin_create_pkg orbslam3 roscpp cv_bridge
(3)将orbslam的ros的源码复制粘贴过来

(4)填写`CMakeLists.txt`

cmake_minimum_required(VERSION 3.0.2)

project(orbslam3)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall  -O3")
## set path
set(ORBSLAM_PATH "/home/ros/lib/ORB_SLAM3-master/ORB_SLAM3-master/")

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
if(COMPILER_SUPPORTS_CXX11)
   set(CMAKE_CXX_STANDARD 14)
   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}//home/ros/lib/ORB_SLAM3-master/ORB_SLAM3-master/cmake_modules)

find_package(OpenCV)
if(NOT OpenCV_FOUND)
   find_package(OpenCV 2.4.3 QUIET)
   if(NOT OpenCV_FOUND)
      message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
   endif()
endif()



find_package(Eigen3 REQUIRED)
find_package(Pangolin REQUIRED)
find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  roscpp
)


catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES orbslam3
 CATKIN_DEPENDS cv_bridge roscpp
#  DEPENDS system_lib
)

## include
include_directories(
   ${catkin_INCLUDE_DIRS}
   ${OpenCV_INCLUDE_DIRS}
   ${EIGEN3_INCLUDE_DIRS}
   ${Pangolin_INCLUDE_DIRS}
   ${PROJECT_SOURCE_DIR}
   ${ORBSLAM_PATH}
   ${ORBSLAM_PATH}/include
   ${ORBSLAM_PATH}/include/CameraModels
   ${Pangolin_INCLUDE_DIRS}
   ${catkin_INCLUDE_DIRS}
)


## libs
set(LIBS 
${OpenCV_LIBS} 
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${ORBSLAM_PATH}/Thirdparty/DBoW2/lib/libDBoW2.so
${ORBSLAM_PATH}/Thirdparty/g2o/lib/libg2o.so
${ORBSLAM_PATH}/lib/libORB_SLAM3.so
-lboost_system
)


add_executable(${PROJECT_NAME}_node src/src/ros_mono.cc)


target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
  ${LIBS}
)

注意: `CMakeLists.txt`的8行代码 `set(ORBSLAM_PATH "/home/ros/lib/ORB_SLAM3-master/ORB_SLAM3-master/")`,要改成你自己的orbslam路径

(5)编译
cd ros 
catkin_make
(6)运行节点
# terminal one
roscore

---

# terminal two
cd ros
source /devel/setup.bash
rosrun orbslam3 orbslam3_node ../Vocabulary/ORBvoc.txt ../Examples/Monocular/EuRoC.yaml


请注意, 在运行该节点时,必须要接收到图像来源.

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值