ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【ORB-SLAM3】Ubuntu20.04 编译运行ORM-SLAM3
[打印本页]
作者:
涛声依旧在
时间:
2024-8-24 16:03
标题:
【ORB-SLAM3】Ubuntu20.04 编译运行ORM-SLAM3
说在前面:
网上相干的教程很多,但和我实际碰到的标题还是各有异同,这里把自己的实际安装过程记录下来,以供参考。
一、ORB-SLAM3源码下载
在home下打开终端,终端执行以下命令。
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
复制代码
二、相干库文件安装
2.1 Eigen 3安装
在home下打开终端,执行以下命令下载源码:
git clone https://github.com/eigenteam/eigen-git-mirror
复制代码
然后依次执行以下命令进行安装:
cd eigen-git-mirror
mkdir build && cd build
cmake ..
sudo make install
复制代码
2.2 Pangolin安装
起首执行以下命令安装所需依靠:
sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
复制代码
在home下打开终端,执行以下命令下载源码:
git clone https://github.com/stevenlovegrove/Pangolin
复制代码
然后依次执行以下命令进行安装:
mkdir build && cd build
cmake ..
make
sudo make install
复制代码
2.3 OpenCV安装
终端执行以下命令,安装所需依靠:
sudo apt update
sudo apt install cmake
sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt install pkg-config
复制代码
通过以下链接到官网下载源码,我这里下载的是opencv-4.5.0:
https://github.com/opencv/opencv/releases?page=2
将下载的源码解压缩至home下,在opencv目录下打开终端,依次执行以下命令:
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j4
sudo make install
复制代码
终端执行以下命令:
sudo gedit /etc/profile.d/pkgconfig.sh
复制代码
在打开的文件中参加以下代码:
export PKG_CONFIG_PATH=/usr/local/lib
/pkgconfig:$PKG_CONFIG_PATH
复制代码
生存并退出。终端执行以下命令,刷新一下:
source /etc/profile
复制代码
终端执行以下命令验证是否成功:
pkg-config --libs opencv4
复制代码
出现以下内容,则阐明成功:
终端执行以下命令:
sudo gedit /etc/ld.so.conf.d/opencv4.conf
复制代码
在打开的文件中参加以下代码:
/usr/local/lib
复制代码
生存并退出。最后执行以下命令,使配置的路径见效。
sudo ldconfig
复制代码
在opencv/samples/cpp/example_cmake目录下,依次执行以下命令:
cmake .
make
./opencv_example
复制代码
若出现以下画面,则表示安装成功。
2.4 Boost安装
这里安装的是1.75.0版本,可通过下面链接下载源码:
https://archives.boost.io/release/1.75.0/source/boost_1_75_0.tar.gz
将下载的源码解压缩至home下,在boost目录下打开终端,依次执行以下命令:
sudo ./bootstrap.sh
sudo ./b2 install
复制代码
等待执行完成即可。
2.5 DBoW2 and g2o
DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。
ORB-SLAM3的源码包自带DBoW2 and g2o,编译时会自动安装,不用管。
三、ORB-SLAM3编译(非ROS)
在home下执行以下命令:
cd ORB_SLAM3
chmod +x build.sh
./build.sh
复制代码
如果编译时堕落,发起打开build.sh文件,对照其中的命令,一步一步在终端手动执行。(由于我这里没有堕落,就不列举错误了。)
进入如下链接,下载数据集,下载
Machine Hall 01:
kmavvisualinertialdatasets – ASL Datasets
在ORB_SLAM3文件夹下,新建一文件夹并定名为dataset,将刚刚下载的数据集压缩包,解压缩至该文件夹下,将其定名为MH01,文件夹条理应如下:ORB_SLAM3/dataset/MH01/mav0
执行以下命令:
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
复制代码
发现可视化界面没有显示。
在ORB_SLAM3/Examples/Monocular文件夹下,打开mono_euroc.cc文件,将第83行:
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, false);
复制代码
修改为如下:
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);
复制代码
改完之后生存,必要重新编译ORB_SLAM3(改动源码,都需重新编译)。在ORB_SLAM3下打开终端依次执行以下命令:
sudo chmod +x build.sh
sudo ./build.sh
复制代码
编译成功后,在终端执行以下命令:
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
复制代码
(以下命令也行)
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi
复制代码
运行效果如下图所示:
四、在ROS中编译ORB-SLAM3
在终端执行以下命令:
gedit ~/.bashrc
复制代码
会自动打开一个文件,在文件末尾添加以下语句(路径根据自己的实际路径来):
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/ubuntu/ORB_SLAM3/Examples_old/ROS
复制代码
生存并退出。在终端执行以下命令,刷新下环境:
source ~/.bashrc
复制代码
打开build_ros.sh文件,将里面的内容进行修改:
cd Examples/ROS/ORB_SLAM3
复制代码
改为:
cd Examples_old/ROS/ORB_SLAM3
复制代码
将ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt文件进行如下修改:
第2行增加如下代码:
project(ORB_SLAM3)
复制代码
第34行:
将find_package(OpenCV 3.0 QUIET)改为find_package(OpenCV 4.0 QUIET)
复制代码
第50行增加以下代码(在include_directories内):
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
复制代码
将ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ros_mono_ar.cc文件中的代码:
cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
复制代码
改为:
cv::Mat Tcw=ORB_SLAM3::Converter::toCvMat(mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()).matrix());
复制代码
将ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ViewerAR.cc文件中的代码:
vPoints.push_back(pMP->GetWorldPos());
复制代码
cv::Mat Xw = pMP->GetWorldPos();
复制代码
修改为:
vPoints.push_back(ORB_SLAM3::Converter::toCvMat(pMP->GetWorldPos()));
复制代码
cv::Mat Xw = ORB_SLAM3::Converter::toCvMat(pMP->GetWorldPos());
复制代码
终端执行以下命令,查看刚刚添加的路径会不会出现:
echo ${ROS_PACKAGE_PATH}
复制代码
运行效果如下:
在home下依次执行以下命令:
cd ORB_SLAM3
chmod +x build_ros.sh
./build_ros.sh
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4