ToB企服应用市场:ToB评测及商务社交产业平台

标题: ORB-SLAM3复现的详细过程——设置安装及ROS和脚本运行---Ubuntu20.04 [打印本页]

作者: 西河刘卡车医    时间: 2024-6-29 12:21
标题: ORB-SLAM3复现的详细过程——设置安装及ROS和脚本运行---Ubuntu20.04
ORB-SLAM3代码下载地点:ORB-SLAM3源码下载
全部的操作都是在完成以下网址中的全部操作内容下进行的:Ubuntu系统安装之后首须要做的事情
本文是总结的比力完善和直接的过程。
其实在整个运行中也遇到了一些题目,也做了一些总结,记录在了文章
ORB-SLAM3复现过程中遇到的题目及解决办法中
建议是先以本文为主,有题目之后再去参考题目解决办法。
1. 安装所须要的依赖和包

在一键安装ROS后,只须要再安装Pangolin即可,其他全部的须要都已经存在。
依次执行以下命令即可:
  1. #依赖项
  2. sudo apt-get install libglew-dev
  3. sudo apt-get install cmake
  4. sudo apt-get install libpython2.7-dev
  5. sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
  6. sudo apt-get install libdc1394-22-dev libraw1394-dev
  7. sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
  8. #下载编译
  9. git clone https://github.com/stevenlovegrove/Pangolin.git
  10. cd Pangolin
  11. mkdir build
  12. cd build
  13. cmake ..
  14. cmake --build .
  15. sudo make install
复制代码
这样下载下来的是Pangolin0.8。在ORB-SLAM3中是可以正常利用的。
2. 修改代码及文件内容

由于许多库的版本不一样,所以有部分代码须要更改
这里先声明我的环境:
   Ubuntu20.04
Opencv4.2.0
C++11
Eigen3.3.7
Python3.8.10
Pangolin0.8
  2.1 CMakeLists.txt文件的修改

  1. gedit /home/xiaoduan/project/source2/orb_slam3/CMakeLists.txt
  2. #第33行Opencv的版本改为4
  3. #第41行Eigen的版本改为3
复制代码
  1. gedit /home/xiaoduan/project/source2/orb_slam3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
复制代码
更改内容如下:
     2.2 单目可视化代码修改

  1. gedit /Examples/Monocular/mono_euroc.cc
复制代码
更改内容:
  1. 第83行中的false改为true
复制代码
2.3 环境设置文件的修改

  1. gedit ~/.bashrc
  2. export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples_old/ROS
  3. source ~/.bashrc
复制代码
注意: 第二条命令中的${ROS_PACKAGE_PATH}是本身文件的路径。
2.4 源码的修改

在ORB_SLAM3中的src下有个AR文件夹,里面的一些内容会导致ros可执行文件的编译,做出以下修改:
  1. #include <Eigen/Dense>
  2. #include <opencv2/core/eigen.hpp>
复制代码
  1. cv::Mat Tcw;
  2. Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
  3. Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
  4. cv::eigen2cv(Tcw_Matrix, Tcw);
复制代码
  1. cv::Mat WorldPos;
  2. cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
  3. vPoints.push_back(WorldPos);
复制代码
  1. cv::Mat Xw;
  2. cv::eigen2cv(pMP->GetWorldPos(), Xw);
复制代码
3.ORB-SLAM3的编译

3.1 构建 ORB-SLAM3 库

按次序执行以下命令即可:
  1. cd ORB_SLAM3
  2. chmod +x build.sh
  3. ./build.sh
复制代码
3.2 生成ROS节点

执行以下命令:
  1. cd Examples_old/ROS/ORB_SLAM3
  2. chmod +x build_ros.sh
  3. ./build_ros.sh
复制代码
4.ORB-SLAM3的运行

4.1 非ROS环境下运行

4.1.1 EuROC数据集

用微型飞行器采集的视觉惯性数据集,包含双目相机和IMU同步丈量数据及位姿的真值。
数据集需下载MH_01_easy.zip,下载地点:MH_01_easy.zip下载地点
将数据集解压,命名为MH01。
运行命令:
注意: 命令中的${dir}是个人数据的存放路径

  1. cd Examples
  2. ./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ${dir}/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
复制代码

  1. ./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ${dir}/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo
复制代码

  1. ./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ${dir}/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi
复制代码

  1. ./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml ${dir}/MH01 ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereoi
复制代码
4.1.2 TUM VI 数据集

其采用的相机和IMU传感器,在硬件上进行了时间同步。
所提供的图像具有高动态范围,事先辈行了光度标定,用20Hz的帧率采集,分辨率为1024像素*1024像素;三轴IMU采样频率为200Hz,可丈量加速度和角速度。
须要下载数据集dataset-room1_512_16和rgbd_dataset_freiburg1_desk。下载地点:TUM数据集下载

  1. cd Examples
  2. ./Monocular/mono_tum_vi ../Vocabulary/ORBvoc.txt Monocular/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data Monocular/TUM_TimeStamps/dataset-room1_512.txt dataset-room1_512_mono
复制代码

  1. ./Stereo/stereo_tum_vi ../Vocabulary/ORBvoc.txt Stereo/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data /home/sangfor/2023/bro_ws/dataset-room1_512_16/mav0/cam1/data Stereo/TUM_TimeStamps/dataset-room1_512.txt dataset-room1_512_stereo
复制代码

  1. ./Monocular-Inertial/mono_inertial_tum_vi ../Vocabulary/ORBvoc.txt Monocular-Inertial/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data Monocular-Inertial/TUM_TimeStamps/dataset-room1_512.txt Monocular-Inertial/TUM_IMU/dataset-room1_512.txt dataset-room1_512_monoi
复制代码

  1. ./Monocular-Inertial/mono_inertial_tum_vi ../Vocabulary/ORBvoc.txt Monocular-Inertial/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data Monocular-Inertial/TUM_TimeStamps/dataset-room1_512.txt Monocular-Inertial/TUM_IMU/dataset-room1_512.txt dataset-room1_512_monoi
复制代码

  1. ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ${dir}/rgbd_dataset_freiburg1_desk /home/sangfor/2023/bro_ws/rgbd_dataset_freiburg1_desk/associations.txt
复制代码
4.2 ROS环境下运行

首先,打开三个终端
在第一个终端上面运行roscore
接着在其余两个终端上,分别运行以下命令:

  1. rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
  2. rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw
复制代码

  1. rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false
  2. rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw
复制代码

  1. rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/EuRoC.yaml
  2. rosbag play MH_01_easy.bag
复制代码

  1. rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml false
  2. rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu
复制代码

  1. rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml
  2. rosbag play rgbd_dataset_freiburg1_xyz.bag
复制代码
每条命令的运行都会有可视化界面,如下图所示:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4