ORB_SLAM3 + INDEMIND 双目惯性相机实时运行(Ubuntu 18.04)

本文介绍了如何在Ubuntu18.04系统上配置并实时运行ORB_SLAM3,配合INDEMIND双目惯性相机,涉及了相关库的安装,如Eigen3、Pangolin、OpenCV和boost,以及ROS和IMSEE-SDK的编译和集成过程。
摘要由CSDN通过智能技术生成

摘 要:

        Ubuntu18.04 + ROS1 + ORB_SLAM3 + INDEMIND 相机实时运行双目惯性模组。

须 知:

         自己跑通后纯靠回忆和翻之前看过的帖子写下此博客,过程中遇到报错,请自行查询。(大致流程是这样的,但具体细节处的报错因人而异,也可以发评论区交流。)

目 录

前 言

1、ORB_SLAM3 + ROS 编译安装

  1.0  必要工具安装(略)

  1.1  相关库安装

  (1) Eigen 3安装

  (2)  Pangolin安装

  (3)  OpenCV安装

  (4)  boost安装

1.2  ROS安装

1.3  ORB_SLAM3安装

  (1) 创建ROS工作空间

  (2) ORB_SLAM3安装

2、IMSEE-SDK 编译安装

2.1   安装依赖

2.2  下载 SDK

2.3  安装MNN

2.4  测试SDK

3、实时运行

3.1 启动IMSEE-SDK的ROS节点

3.2 运行ORB-SLAM3

总 结

参 考



前 言

         2024/04.24 .Ubuntu 18.04,基于ROS配置ORB_SLAM3,配合INDEMIND双目惯性相机,实现ORB_SLAM3的实时运行(双目 + IMU)。

表1  系统配置

系统Version
Ubuntu18.04
ROSMelodic
IMSEE-SDK1.4.2
OpenCV3.2.0
Cmake3.23.0
Pangolin0.5

1、ORB_SLAM3 + ROS 编译安装

         关于ORB_SLAM3的安装、编译教程网上资料比比皆是,遇到报错(因人而异)大家可以自行查询,这里简单写一下:

  1.0  必要工具安装(略)

        安装必要的工具(Cmake,g++,gcc,git等)。


  1.1  相关库安装

  (1) Eigen 3安装

        打开终端,输入以下命令:

git clone https://github.com/eigenteam/eigen-git-mirror
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install

        移动头文件至系统库目录:

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 
  (2)  Pangolin安装

       a. 安装依赖

sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

       b.  安装Pangolin 0.5

         Pangolin 0.5 百度网盘

        下载后解压,执行以下命令:

cd Pangolin
mkdir build
cd build
cmake ..
make -j8
sudo make install

       c.  测试Pangolin

cd examples/HelloPangolin
mkdir build
cd build
cmake ..
make
./HelloPangolin

        出现下图即安装成功。

  (3)  OpenCV安装

       a. 安装依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

      b.  安装OpenCV 3.2.0

         为和ROS1自带的OpenCV版本相同,下载3.2.0版本,官网下载链接:OpenCV官网

cd opencv-3.2.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
sudo make install

      c.  配置OpenCV环境

sudo gedit /etc/ld.so.conf.d/opencv.conf

        输入上述命令,在打开的文件中输入:

/usr/local/lib

        保存退出,运行下列命令使环境生效:

sudo ldconfig

         配置bash :

sudo gedit /etc/bash.bashrc
 
// 在文件末尾加入下面代码
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

// 保存退出,执行命令使得配置生效:
source /etc/bash.bashrc

      d.  测试OpenCV

cd opencv-3.2.0/samples/cpp/example_cmake/
mkdir build
cd build
cmake ..
make
./opencv_example

        出现打印有“Hello OpenCV”字样的Sample窗口即安装成功。

  (4)  boost安装

        官网下载链接:boost官网

        下载后解压,执行下列命令安装:

sudo ./bootstrap.sh
sudo ./b2 install

1.2  ROS安装

         小鱼老师一键安装:

wget http://fishros.com/install -O fishros && bash fishros

         跟着步骤走,推荐换源安装ROS1。可以参考其他优质博客:ubuntu安装ROS melodic(最新、超详细图文教程,包含配置rosdep)icon-default.png?t=N7T8https://blog.csdn.net/weixin_55944949/article/details/130468032?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171409769516800225544514%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171409769516800225544514&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-130468032-null-null.142%5Ev100%5Epc_search_result_base7&utm_term=%E5%B0%8F%E9%B1%BCROS&spm=1018.2226.3001.4187         这里不详细赘述。总之,最后可以运行小乌龟的demo即安装成功。


1.3  ORB_SLAM3安装

  (1) 创建ROS工作空间

      分别执行以下语句:

// step1.创建工作空间 
mkdir -p ~/catkin_ws/src    
cd ~/catkin_ws/src          
catkin_init_workspace       

// step2. 编译工作空间
cd ~/catkin_ws
catkin_make
// 完成后,catkin_ws添加了build 和 devel文件夹

// step3. 设置环境变量
sudo gedit ~/.bashrc
     //在打开的文档末尾加入:source ~/catkin_ws/devel/setup.bash
source ~/.bashrc

// step4. 创建功能包
catkin_create_pkg learning_communication std_msgs roscpp rospy

// step5. 编译功能包
cd ~/catkin_ws
catkin_make
  (2) ORB_SLAM3安装

       进入工作空间的 src 文件夹,下载ORB_SLAM3源码:

cd ~/catkin_ws/src
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

       /********   下面是关键:修改ORB_SLAM3文件  ******/

      1)将ORB_SLAM3下CmakeLists.txt中  find_package(OpenCV 4.4) 改为 OpenCV 3.2.0。

             同样,将find_package(Eigen3 3.1.0 REQUIRED)修改为

find_package(Eigen3 REQUIRED)

      2)如果使用的是INDEMIND相机,以双目惯性SLAM为例,修改 ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/ros_stereo_inertial.cc 文件第140行如下:

  ros::Subscriber sub_imu = n.subscribe("/imsee/imu", 1000, &ImuGrabber::GrabImu, &imugb); 
  ros::Subscriber sub_img_left = n.subscribe("/imsee/image/left", 100, &ImageGrabber::GrabImageLeft,&igb);
  ros::Subscriber sub_img_right = n.subscribe("/imsee/image/right", 100, &ImageGrabber::GrabImageRight,&igb);

        /********   上面是关键:修改ORB_SLAM3文件  ******/

       把Example_old里的ROS文件夹复制到Example文件夹下,修改环境配置文件:

sudo gedit ~/.bashrc

      在打开的文档中加入(改成自己的路径):

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM3/Examples/ROS 

      再执行以下命令使得配置生效:

source ~/.bashrc

      进入ORB_SLAM3文件夹打开终端,编译ORB_SLAM3:

chmod +x build.sh
./build.sh

       再编译ROS下的ORB_SLAM3:

chmod +x build_ros.sh
./build_ros.sh

       回到 catkin_ws 文件夹,执行以下语句再次编译,如有报错根据提示编译前需要删除之前 catkin_make 的编译文件夹(build,devel):

catkin build

       至此,ROS下的ORB_SLAM3安装完成,可以找个数据集测试一下。

  


2、IMSEE-SDK 编译安装

      INDEMIND SDK 官方地址:INDEMIND官方SDK安装教程

2.1   安装依赖

sudo apt-get install build-essential cmake git

2.2  下载 SDK

git clone https://github.com/indemind/IMSEE-SDK.git
cd IMSEE-SDK/
make init

2.3  安装MNN

(1)安装依赖

sudo apt-get install autoconf automake libtool
sudo apt-get install libcanberra-gtk-module

(2)安装 protobuf

         电脑里一般都有protobuf,输入下面指令,若安装有 protobuf 则可输出版本。若没有,请自行下载安装。

protoc --version

(3)安装MNN

          回到主目录:

git clone https://github.com/alibaba/MNN.git
cd MNN
./schema/generate.sh
mkdir build
cd build
cmake ..
make -j4
sudo make install

(4)安装OpenCV

        OpenCV不需要再安装,用之前的安装的版本即可。但在编译IMSEE-SDK(下文 2.4处)时会有多个报错找不到 libxxxx3.so,我的解决方法是在自己OpenCV库目录(/usr/local/lib)复制相同的文件改成对应的版本号即可。

        例:libopencv_video.so.3.2.0 复制帖帖重命名为 libopencv_video3.so.3.3

        至此,INDEMIND相机的SDK安装完毕。

2.4  测试SDK

// 编译,有缺少libxxx.so文件的报错请看2.3节第(4)部分
cd IMSEE-SDK/
make init
maek demo

    编译完成后运行demo:

cd IMSEE-SDK/demo/output/bin
sudo ./get_image 

    可以打开双目相机,如下图:

    编译ROS节点:

wget https://raw.githubusercontent.com/oroca/oroca-ros-pkg/master/ros_install.sh && \
chmod 755 ./ros_install.sh && bash ./ros_install.sh catkin_ws melodic
cd IMSEE-SDK/
make ros

3、实时运行

3.1 启动IMSEE-SDK的ROS节点

cd IMSEE-SDK/
sudo su 
source ros/devel/setup.bash
roslaunch imsee_ros_wrapper start.launch

3.2 运行ORB-SLAM3

rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/Indemind_stereo_imu.yaml ture

         指令中需要改成自己的路经和文件名称。其中,Indemind_stereo_imu.yaml 文件可参考如下(后续换成自己的标定参数哦,有时间会再写一个INDEMIND相机+IMU标定的帖子):

%YAML:1.0

#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
Camera.type: "PinHole"

# Camera calibration and distortion parameters (OpenCV) (equal for both cameras after stereo rectification)
Camera.fx: 260.561
Camera.fy: 260.561
Camera.cx: 317.946
Camera.cy: 195.495

Camera.k1: 0.0
Camera.k2: 0.0
Camera.p1: 0.0
Camera.p2: 0.0

Camera.width: 640
Camera.height: 400

# Camera frames per second 
Camera.fps: 25

# stereo baseline times fx
Camera.bf: 31.26732

# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1

# Close/Far threshold. Baseline times.
ThDepth: 35.0

# Transformation from camera 0 to body-frame (imu)
Tbc: !!opencv-matrix
   rows: 4
   cols: 4
   dt: f
   data: [-0.999977, -0.006624, -0.001162, 0.0060095, 0.006621, -0.999975, 0.002465, 2.61872e-05, -0.001178, 0.002458, 0.999996, -0.002,
         0.0, 0.0, 0.0, 1.0]

# IMU noise
IMU.NoiseGyro: 1.000000000000000e-1  # 1.6968e-04 
IMU.NoiseAcc: 1.000000000000000e-1 # 2.0000e-3
IMU.GyroWalk: 4.000000000000000e-3  
IMU.AccWalk: 4.0000000000000000e-3 # 3.0000e-3
IMU.Frequency: 200

#--------------------------------------------------------------------------------------------
# Stereo Rectification. Only if you need to pre-rectify the images.
# Camera.fx, .fy, etc must be the same as in LEFT.P
#--------------------------------------------------------------------------------------------
LEFT.height: 400
LEFT.width: 640
LEFT.D: !!opencv-matrix
   rows: 1
   cols: 5
   dt: d
   data:[-0., 0., 0.0, 0, 0.0]
LEFT.K: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [245.96, 0, 318.423, 0, 245.793, 195.635, 0.0, 0.0, 1.0]
LEFT.R:  !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [0.999988, 0.0036888, -0.00331281, -0.00368906, 0.999993, -7.24943e-05, 0.00331252, 8.47145e-05, 0.999995]
LEFT.Rf:  !!opencv-matrix
   rows: 3
   cols: 3
   dt: f
   data: [1, 0,0,0,1, 0, 0,0,1]
LEFT.P:  !!opencv-matrix
   rows: 3
   cols: 4
   dt: d
   data: [260.561, 0, 317.946, 0, 0, 260.561, 195.495, 0,  0, 0, 1, 0]

RIGHT.height: 400
RIGHT.width:  640
RIGHT.D: !!opencv-matrix
   rows: 1
   cols: 5
   dt: d
   data:[-0., 0.0, -0.00, 0, 0.0]
RIGHT.K: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [245.861, 0, 312.777, 0, 246.03, 195.784, 0.0, 0.0, 1]
RIGHT.R:  !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [0.999915, -0.00648092, -0.011273, 0.00648181, 0.999979, 4.20702e-05, 0.0112724, -0.000115136, 0.999936]
RIGHT.P:  !!opencv-matrix
   rows: 3
   cols: 4
   dt: d
   data: [260.561, 0, 317.946 ,-31.161, 0 ,260.561, 195.495, 0, 0, 0, 1, 0]

#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------

# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 2400

# ORB Extractor: Scale factor between levels in the scale pyramid 	
ORBextractor.scaleFactor: 1.2

# ORB Extractor: Number of levels in the scale pyramid	
ORBextractor.nLevels: 8

# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast			
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7

#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize: 2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500

     运行结果,如下:

      


总 结

          标定相机+IMU的闲暇时间写下该帖,如有错误欢迎指正交流。


参 考

1.INDEMIND双目惯性模组运行实时ORB-SLAM3教程_indemind双目视觉惯性模组-CSDN博客文章浏览阅读1k次。现在实验室视觉SLAM已经不够满足,所以需要多模态融合,正巧购入高翔博士推荐的INDEMIND双目惯性模组,根据官方例程在中使用ROS接入ORB-SLAM3,这回有SDK及ORB-SLAM3安装过程中的各种常见性问题解决方法及安装细节,与官网教程略有不同,列举所有默认安装的依赖,做以记录。_indemind双目视觉惯性模组https://blog.csdn.net/Prototype___/article/details/130295462?spm=1001.2014.3001.5506

2.ubuntu20.04编译运行ORB_SLAM3(含ROS版)_error: conversion from ‘sophus::se3f’ {aka ‘sophus-CSDN博客文章浏览阅读460次,点赞3次,收藏8次。ORBSLAM3编译运行记录_error: conversion from ‘sophus::se3f’ {aka ‘sophus::se3’} to non-https://blog.csdn.net/m0_49066914/article/details/131785030?spm=1001.2014.3001.55063. ROS平台下INDEMIND双目惯性模组SDK教程_indemind imu-CSDN博客文章浏览阅读556次。实验室做视觉SLAM需要IMU相机,购入INDEMIND双目惯性模组运行多模态融合的感知定位。双目惯性模组 SDK1.4.2 版本改进了不少,官网上关于ROS环境下的教程十分简略,直接按照官网的步骤无法实现相机数据读取并发布到指定的topic上,于是把自己的安装过程记录下来,方便以后查阅。_indemind imuhttps://blog.csdn.net/Prototype___/article/details/129717553?spm=1001.2014.3001.5506

  • 34
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 要在Ubuntu 18.04上安装ORB_SLAM3,您可以按照以下步骤操作: 1. 安装必要的依赖项: ``` sudo apt-get install build-essential cmake git libgtk2.-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libeigen3-dev libboost-all-dev libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libatlas-base-dev liblapack-dev libblas-dev ``` 2. 克隆ORB_SLAM3存储库: ``` git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3 ``` 3. 进入ORB_SLAM3目录并创建build目录: ``` cd ORB_SLAM3 mkdir build cd build ``` 4. 运行cmake: ``` cmake .. ``` 5. 编译ORB_SLAM3: ``` make -j4 ``` 6. 运行ORB_SLAM3: ``` ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /path/to/dataset/sequence/ ``` 其中,/path/to/dataset/sequence/是您要运行ORB_SLAM3的数据集的路径。 希望这可以帮助您安装ORB_SLAM3。 ### 回答2: Orb_slam3是一款基于Ubuntu操作系统的开源物体三维建模软件,它可以准确地模拟出物体的运动轨迹、形态等,并对其进行快速的重建。下面是Ubuntu18.04安装Orb_slam3的方法。 1. 下载安装Orb_slam3所需要的依赖库: 首先要安装git库,输入以下命令`sudo apt-get install git`。 然后安装依赖关系`sudo apt-get install build-essential cmake g++ git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libv4l-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libopencv-dev libtbb-dev libeigen3-dev libblas-dev liblapack-dev libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libzmq3-dev`。 2. 下载ORB_SLAM3源代码: 安装完依赖库后,请输入以下命令。 ```` cd /home git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3 ```` 3. 生成ORB_SLAM3的可执行程序: 编译安装ORB-SLAM程序,运行以下命令。 ```` cd ORB_SLAM3 chmod +x build.sh ./build.sh ```` 4. 使用ORB_SLAM3进行物体三维重建: 使用ORB_SLAM3准确地模拟出物体的运动轨迹、形态,然后进行三维重建。进入ORB_SLAM3目录,运行以下命令。 ```` rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true ```` 5. 建议:升级显卡驱动 安装了ORB_SLAM3后,建议升级显卡驱动以便更好的使用ORB_SLAM3软件。 以上就是Ubuntu18.04安装ORB_SLAM3的全部步骤,友好的交互界面使得练手极为方便,让使用者轻松地看到所需的信息,这也是它被越来越多的用户所信赖的原因。 ### 回答3: Ubuntu 18.04是一种开源的操作系统,ORB_SLAM3是一种全新的视觉SLAM库,它可以实现精准的视觉定位和建图,能够广泛应用于机器人、自动驾驶、虚拟现实等领域。以下是安装ORB_SLAM3的步骤: 1.安装依赖项 首先,必须安装ORB_SLAM3所需的一些依赖项,如Eigen,Boost,OpenCV和Pangolin等。可以在终端窗口中运行以下命令进行安装: sudo apt-get install libeigen3-dev sudo apt-get install libboost-all-dev sudo apt-get install libopencv-dev sudo apt-get install libopencv-dev sudo apt-get install libglew-dev sudo apt-get install libsuitesparse-dev 2.克隆ORB_SLAM3库 使用git工具从GitHub上克隆ORB_SLAM3库。运行以下命令: git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3 3.构建ORB_SLAM3库 进入ORB_SLAM3目录并构建ORB_SLAM3库。运行以下命令: cd ORB_SLAM3 chmod +x build.sh ./build.sh 4.下载数据集 如果要测试ORB_SLAM3的性能,需要下载一些数据集。运行以下命令,以下载KITTI数据集: ./tools/kitti_downloader.sh 5.测试ORB_SLAM3 最后,可以使用ORB_SLAM3库来测试视觉SLAM的性能。运行以下命令: ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml path_to_dataset_folder/dataset 在执行此命令时,必须将“path_to_dataset_folder”替换为数据集所在的路径。此外,应该将“Examples/Monocular/KITTI00-02.yaml”替换为数据集文件中包含的文件。这将运行ORB_SLAM3并显示视觉定位和建图的结果。 总之,使用这些步骤可以在Ubuntu 18.04上成功安装ORB_SLAM3,并进行视觉定位和建图的测试。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值