柚子快報(bào)激活碼778899分享:人工智能 自動(dòng)駕駛 【ORB
柚子快報(bào)激活碼778899分享:人工智能 自動(dòng)駕駛 【ORB
本文主要記錄基于Ubuntu20.04環(huán)境下,對(duì)普通的ORB_SLAM3和稠密版本的ORB_SLAM3進(jìn)行環(huán)境的配置。
一、配置ORB_SLAM3<普通版本>
1.安裝ROS開(kāi)發(fā)環(huán)境
這里采用魚(yú)香ros的一鍵安裝,感謝小魚(yú)的一鍵安裝。
wget http://fishros.com/install -O fishros && . fishros
2.安裝Pangolin
Pangolin:鏈接: https://pan.baidu.com/s/1FXYLsEK1W3xmX0m_Vqylag 提取碼: jgz2
# 這里采用的是Pangolin-0.5-20.04
cd Pangolin-0.5-20.04
mkdir build
cd build
cmake ..
make -j
sudo make install
3.安裝eigen
sudo apt-get install libeigen3-dev
4.拉取orb_slam3 的源碼
(基于小六的注釋后的ORB_SLAM3代碼)
https://github.com/electech6/ORB_SLAM3_detailed_comments
git clone https://github.com/electech6/ORB_SLAM3_detailed_comments.git
5.安裝DBoW2(在Thirdparty文件中)
需要先修改opencv版本
如何查看opencv版本號(hào)?
編譯(由于在工程當(dāng)中,并不需要install)
cd DBoW2
mkdir build
cd build
cmake ..
make -j
6.安裝g2o
cd g2o
mkdir build
cd build
cmake ..
make -j
7.開(kāi)始編譯ORBSLAM3(普通版)
在工程中修改CMakeLists 中opencv的版本,一定要與系統(tǒng)的opencv版本一致
cd ORB_SLAM3_detailed_comments
mkdir build
cd build
cmake ..
make -j
若顯示以上報(bào)錯(cuò),則需要安裝realsense2
sudo apt-get install ros-noetic-realsense2-camera
ORB_SLAM3也可以使用一鍵安裝
cd ORB_SLAM3_detailed_comments
sudo chmod 777 build.sh
./build.sh
8.編譯ORB_SLAM3 ROS環(huán)境
同樣需要先修改OpenCV的版本號(hào)為本機(jī)版本
在bashrc中添加ORBSLAM路徑
sudo vim ~/.bashrc
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/robot/orb_slam3/ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3
# vim 操作方法: 輸入 按a
# 結(jié)束先按Esc ,再按 :wq
# 記得source下環(huán)境
source ~/.bashrc
若出現(xiàn)以上錯(cuò)誤,則需要去rosdep init一下,并且rosdep update
可以使用最上面的魚(yú)香ros更新一下
cd ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3
mkdir build
cd build
cmake ..
make -j
也可以使用一鍵安裝
cd ORB_SLAM3_detailed_comments
sudo chmod 777 build_ros.sh
./build_ros.sh
9.測(cè)試一下
# 運(yùn)行代碼之前記得source一下
cd orb_slam3/ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3/build
source devel/setup.bash
# 終端1
roscore
# 終端2
rosrun ORB_SLAM3 Mono_Inertial /home/robot/orb_slam3/ORB_SLAM3_detailed_comments/Vocabulary/ORBvoc.txt /home/robot/orb_slam3/ORB_SLAM3_detailed_comments/Examples/Monocular-Inertial/EuRoC.yaml
測(cè)試數(shù)據(jù)集:
鏈接: https://pan.baidu.com/s/1WwTSvQqJ8QSpPPs0G-dXNg 提取碼: nnej
rosbag play V1_01_easy.bag
這樣,普通版本的ORB_SLAM3環(huán)境搭建成功!
將ORB-SLAM3編寫(xiě)成launch文件
二、編譯ORB_SLAM3(稠密版本)
1.下載源碼:
git clone -b dense_map_new https://github.com/electech6/ORB_SLAM3_detailed_comments.git
同樣需要先安裝Thirdparty中的DBoW2和g2o,方法同上。
2.修改opencv版本
若出現(xiàn)以上錯(cuò)誤,則需要安裝pcl-1.12版本
3.解決pcl多版本共存問(wèn)題
pcl各個(gè)版本下載地址:https://github.com/PointCloudLibrary/pcl/releases
下載pcl-1.12.1:https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.12.1.zip
(個(gè)人認(rèn)為:由于我們一般編譯安裝的文件都放再/usr/local路徑,而若是我們自行定義自己的文件夾,這樣系統(tǒng)就找不到,也就不會(huì)出現(xiàn)多版本共存沖突的問(wèn)題啦!<俗話說(shuō),打不過(guò)我躲還行吧!>但需要在CMakeList文件中去尋找我們的文件路徑)
①將下載的1.12.1源碼放到pcl-1.12文件夾中,再新建一個(gè)pcl-1.12_installfile文件用來(lái)存放安裝后的文件
②開(kāi)始編譯pcl
cd pcl-1.12
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/home/robot/Documents/pcl-1.12_installfile ..
make
make install
make clean
③修改CmakeList文件
修改成如下:
find_package(PCL 1.12 REQUIRED
PATHS /home/robot/Documents/pcl-1.12_installfile
)
4.修改c++版本
若出現(xiàn)以上錯(cuò)誤,則需要把C++11改為C++14
把C++11改為C++14
5.C++問(wèn)題
若出現(xiàn)error: ‘std::chrono::monotonic_clock’ has not been declared
則全部替換成steady_clock
這樣就可以編譯通過(guò)啦!
6.編譯稠密版本的ORB_SLAM3 ROS
①添加bashrc環(huán)境
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/robot/orb_slam3/dense_ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3
# 保存完記得
source ~/.bashrc
②修改CMakeList文件
③使用一鍵安裝
sudo chmod 777 build_ros.sh
./build_ros.sh
④pcl問(wèn)題
若出現(xiàn)pcl/point_types.h:No such file or directory
則需要修改CMakeList文件
⑤C++版本問(wèn)題
若出現(xiàn)上述問(wèn)題,則需要將C++11改為C++14
這樣就ROS的稠密版本也編譯完成啦!
7.測(cè)試一下
①編寫(xiě)launch文件
②修改相機(jī)Yaml文件(采用的是RealSense_L515相機(jī))
%YAML:1.0
#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
# File.version: "1.0"
Camera.type: "PinHole"
# Right Camera calibration and distortion parameters (OpenCV)
Camera.fx: 603.086
Camera.fy: 603.23
Camera.cx: 329.578
Camera.cy: 232.509
# distortion parameters
Camera.k1: 0.15858
Camera.k2: -0.492513
Camera.k3: 0.4519
Camera.p1: -0.00218088
Camera.p2: 0.00021294
# Camera resolution
Camera.width: 640
Camera.height: 480
# Camera frames per second
Camera.fps: 30
# IR projector baseline times fx (aprox.)
Camera.bf: 30.33325
# 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: 40.0
#Stereo.b: 0.0745
DepthMapFactor: 1000.0
# DepthMapFactor: 1.0
# Depth map values factor
# RGBD.DepthMapFactor: 1000.0
#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------
# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000
# 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.0
Viewer.GraphLineWidth: 0.9
Viewer.PointSize: 2.0
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3.0
Viewer.ViewpointX: 0.0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500.0
PointCloudMapping.Resolution: 0.05
meank: 50
thresh: 1.0
發(fā)現(xiàn)源碼顏色有點(diǎn)不對(duì)勁
修改源碼:
柚子快報(bào)激活碼778899分享:人工智能 自動(dòng)駕駛 【ORB
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。