Ubuntu下使用ROS接口运行ORB_SLAM3

Ubuntu下使用ROS接口运行ORB_SLAM3

文章目录

  • Ubuntu下使用ROS接口运行ORB_SLAM3
    • @[toc]
      • 编译
      • 一些错误的解决
        • 头文件找不到的问题
        • ORB_SLAM2的错误提示
        • link error
        • Pangolin,Eigen,Opencv等问题
      • 测试运行

  • ORB_SLAM3和ORB_SLAM2一样,可能就没有重写吧, 没有加入imu的节点,因此运行时仅有Mono_AR,Mono,Stereo

编译

  • 首先加入ros的环境,Terminal输入
gedit ~/.bashrc 
  • 添加,看好目录,换成你自己的
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/用户名/Github/ORB_SLAM3/Examples/ROS/ORB_SLAM3
  • 编译
./build_ros.sh

一些错误的解决

头文件找不到的问题

  • 主要是GeometricCamera.h等文件,找到错误提示的地方,头文件添加一层CameraModels目录就可以了,如下
#include "CameraModels/GeometricCamera.h"
#include "CameraModels/Pinhole.h"
#include "CameraModels/KannalaBrandt8.h"

ORB_SLAM2的错误提示

error: ‘ORB_SLAM2’ has not been declared
  • 这个就说明节点是以前ORB_SLAM2的,没改什么,替换成ORB_SLAM3的类就可以了
  • 在Terminal打开ORB_SLAM3的目录,输入
sed -i "s/ORB_SLAM2/ORB_SLAM3/g" `grep -rl "ORB_SLAM2"`
  • 一键把ORB_SLAM2替换了ORB_SLAM3,或者使用vs code等全部替换了

link error

  • 这里主要是boost添加到Cmakelists,找到ros example下的CMakeLists.txt文件
/.../ORB_SLAM3/Examples/ROS/ORB_SLAM3/CMakeLists.txt
  • 添加-lboost_system, 如下(我记得ORB_SLAM2也有这个问题…)
set(LIBS 
${OpenCV_LIBS} 
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM3.so
-lboost_system
)

Pangolin,Eigen,Opencv等问题

  • sudo apt-get install … 全装了吧,有问题找ORB_SLAM2的博客

测试运行

roscore
  • 这里写两个例子,topic名字替换成自己用的相机的输入,配置文件改成自己相机的配置
rosrun ORB_SLAM3 MonoAR Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml 
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml 

你可能感兴趣的:(SLAM,ROS)