ORB_SLAM2运行TUM数据和实时数据
0.引用:
(1)https://www.cnblogs.com/ifly-zhhades/p/7305572.html
?(? 2)https://www.imooc.com/article/details/id/29136
(3)https://www.cnblogs.com/kekeoutlook/p/7693129.html
?(? 4)https://blog.csdn.net/zzu_seu/article/details/84866858
(5)ORB-SLAM2部署,編譯錯(cuò)誤問題解決方法ros_rgbd.cc.o: undefined reference to symbol_power的專欄-CSDN博客
1.查看電腦軟硬件配置
(1)硬件
#獲取cpu詳細(xì)信息
$ cat /proc/cpuinfo
# 查看cpu是幾核
$ cat /proc/cpuinfo |grep "cores"|uniq
# 查看cpu型號(hào)
$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
(2)軟件
#查看當(dāng)前操作系統(tǒng)發(fā)行版信息
$ cat /etc/issue
軟件平臺(tái)
$roscore
2. 步驟
(1)更新apt庫
$ sudo apt-get update
(2)安裝git
$ sudo apt-get install git
(3)安裝cmake,用于程序編譯
$ sudo apt-get install cmake
(4)安裝pangolin作為可視化和用戶界面
#安裝依賴項(xiàng)
$ sudo apt-get install libglew-dev libpython2.7-dev
#從github上下載項(xiàng)目
$ git clone https://github.com/stevenlovegrove/Pangolin.git
#編譯安裝
$ cd Pangolin
$ mkdir build
$ cd build
$ cmake ..
報(bào)錯(cuò)
所使用的安裝包https://github.com/stevenlovegrove/Pangolin.git有問題,改用舊版本安裝包
$ git clone https://github.com/zzx2GH/Pangolin.git
重復(fù)上述編譯過程
$ make
$ sudo make install
(5)安裝Open CV,用于處理圖像和特征,注意安裝版本是否兼容,要求最低版本是2.4.3,安裝版本為2.4.11
#安裝依賴項(xiàng)
$ 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 libdc 1394-22-dev
在OpenCV官網(wǎng)http://opencv.org下載OpenCV2.4.11的source版本,解壓到本地,編譯安裝
$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
#為防止編譯時(shí)間較長,cpu性能較高使用make -jx, x表示線程(4核*2),以加速編譯
$ make -j8
$ sudo make install
(6)安裝Eigen3開源線性庫,進(jìn)行矩陣運(yùn)算
$ sudo apt-get install libeigen3-dev
(7)安裝DBoW2和g2o
DBoW2是一個(gè)開源C++庫,用于索引圖像并將其轉(zhuǎn)換為單詞表示形式;
g2o是一個(gè)開源C++框架,用于優(yōu)化基于圖的非線性誤差函數(shù);
這兩個(gè)庫在ORB-SLAM2的ThirdParty文件夾中,后續(xù)統(tǒng)一編譯。
(8)安裝ORB-SLAM2
#克隆倉庫
$ git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
#編譯ORB_SLAM2,DBoW2,g2o,并解壓ORB詞典
$ cd ORB_SLAM2
$ chmod +x build.sh
$ ./build.sh
編譯過程中如果卡死,說明電腦cpu不行,就把build.sh文件中make -j換成make.
報(bào)錯(cuò):
error: ‘usleep’ was not declared in this scope
在提示有錯(cuò)的文件system.cc、tracking.cc、Localmapping.cc、Loopclosing.cc、Viewer.cc、mono_euroc.cc、mono_kitti.cc、mono_tum.cc、rgbd_tum.cc、stereo_kitti.cc、stereo_euroc.cc
ROS中的viewerAR.cc的外部頭文件引用加上#include <unistd.h>
再重新編譯./build.sh
3. 單目數(shù)據(jù)庫TUM
有TUM、KITTI、EuRoC三種數(shù)據(jù)集。其中TUM數(shù)據(jù)集在http://vision.in.tum.de/data/datasets/rgbd-dataset/download下載對(duì)應(yīng)序列,可以下載最簡單序列“freiburg1_xyz”,解壓到新建文件夾ORB_SLAM2/data中。該數(shù)據(jù)序列由kinect提供groundtruth.txt數(shù)據(jù)。包括depth文件夾、depth.txt、rgb文件夾、rgb.txt。
#運(yùn)行./Examples/Monocular/mono_tum可執(zhí)行文件
$ cd ORB_SLAM2
$ ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml Path_to_sequence_folder
其中,TUMX.yaml 與下載的序列freiburgx對(duì)應(yīng),本文為TUM1;Path_to_sequence_folder為數(shù)據(jù)序列freiburg1的存儲(chǔ)路徑。
ORB特征、環(huán)境稀疏地圖、相機(jī)運(yùn)動(dòng)軌跡。
公開數(shù)據(jù)集還可以作為算法性能對(duì)比的評(píng)價(jià)標(biāo)準(zhǔn)。
4.借助ROS實(shí)時(shí)運(yùn)行ORB_SLAM2
(1)安裝ROS,Ubuntu16.04 安裝Ros_zttsm的博客-CSDN博客
(2)攝像頭數(shù)據(jù)讀取與顯示
#創(chuàng)建工作空間
$ mkdir -p ~/catkin_zttws/src
$ cd ~/catkin_zttws/src
#下載usb_cam包
$ git clone https://github.com/bosch-ros-pkg/usb_cam.git usb_cam
(usb_cam: A ROS Driver for V4L USB Camerashttps://gitee.com/ztt1996/usb_cam)
#編譯工作空間
$ cd ..
$ catkin_make
$ source devel/setup.sh
插入攝像頭連接線進(jìn)usb2.0端口
#輸入查詢新設(shè)備接入命令
$ lsusb
顯示Logitech,Inc.Webcam C930e
#在/計(jì)算機(jī)/dev文件下搜索video,從新增文件得到設(shè)備號(hào)
打開/home/ztt/catkin_zttws/src/usb_cam/launch/usb_cam-test.launch文件,設(shè)置攝像頭對(duì)應(yīng)設(shè)備號(hào),一般video0表示電腦自帶攝像頭,外設(shè)依次遞增。(本例子是無攝像頭的臺(tái)式機(jī)外接羅技單目攝像頭,所以如果是帶攝像頭的筆記本外接羅技單目攝像頭,應(yīng)該為video1)
?<param name="video_device" value="/dev/video0" />
#在catkin_***ws下啟動(dòng)usb_cam節(jié)點(diǎn),彈出顯示窗口
$ roslaunch usb_cam usb_cam-test.launch
(3)將ORB_SLAM2文件夾移動(dòng)到catkin_zttws/src下;將包含ORB_SLAM2/Examples/ROS路徑添加到ROS_PACKAGE_PATH環(huán)境變量中,打開新終端
$sudo gedit?~/.bashrc
#在文件最后添加
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
source /home/ztt/catkin_zttws/devel/setup.bash
其中PATH為ORB_SLAM2項(xiàng)目路徑/home/ztt/catkin_zttws/src
在終端執(zhí)行命令
$ source ~/.bashrc
(4)編譯ROS下的ORB_SLAM2
(4.1)修改話題
ORB-SLAM默認(rèn)訂閱的話題為/camera/image_raw,而usb_cam節(jié)點(diǎn)發(fā)布的話題為/usb_cam/image_raw,因此需要在/home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2/src/ros_mono.cc中修改訂閱的話題。
? ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
(4.2)因?yàn)?#xff08;4.3)更改源文件,需要重新編譯
#新終端
#重新編譯ROS的example
$ cd ~/catkin_zttws/src/ORB_SLAM2
$ chmod +x build_ros.sh
$ ./build_ros.sh
如果報(bào)錯(cuò)CMakeFiles/RGBD.dir/build.make:216: recipe for target '../RGBD' failed
則$gedit ./Examples/ROS/ORB_SLAM2/CMakeLists.txt
添加一行-lboost_system
#重新編譯工作空間
$ cd ~/catkin_zttws
$ catkin_make
(4.3)新終端運(yùn)行內(nèi)核
roscore
(4.4)新終端啟動(dòng)相機(jī)
$ cd catkin_ws
$ roslaunch usb_cam usb_cam-test.launch
(4.5)新終端運(yùn)行/home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2/Mono可執(zhí)行文件
#cd?/home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2
# rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
其中PATH_TO_VOCABULARY:視覺詞典,一般可直接使用../../../Vocabulary/ORBvoc.txt
PATH_TO_SETTINGS_FILE:攝像頭內(nèi)參,可以使用路徑./Asus.yaml,但需要將Asus.yaml中的參數(shù)改成自己使用攝像頭標(biāo)定后的參數(shù),攝像頭標(biāo)定可以使用opencv或matlab工具箱。
(4.6)運(yùn)行提示打不開參數(shù)文件Asus.yaml,復(fù)制ORBvoc.txt放在與Asus.yaml相同目錄下,并授權(quán)
$ sudo chmod 777 Asus.yaml
$ sudo chmod 777 ORBvoc.txt
再次運(yùn)行
*為順利初始化,虛選擇紋理豐富場景,左右平移相機(jī)直至圖像提出ORB特征。
*最好保持勻速運(yùn)動(dòng),保持當(dāng)前幀與上一幀有足夠數(shù)量匹配的特征點(diǎn),否則跟蹤失敗,退回到之前經(jīng)過的場景,進(jìn)行重定位。
最后輸出相機(jī)的運(yùn)動(dòng)軌跡與周圍環(huán)境的稀疏地圖。右圖中綠線表示相機(jī)運(yùn)動(dòng)軌跡,藍(lán)色方框表示相機(jī)運(yùn)動(dòng)過程中的空間位置(關(guān)鍵幀),紅黑點(diǎn)表示環(huán)境的稀疏地圖,紅點(diǎn)為當(dāng)前路標(biāo),黑點(diǎn)為歷史路標(biāo)。
總結(jié)
以上是生活随笔為你收集整理的ORB_SLAM2运行TUM数据和实时数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deepin 系统安装NVIDIA
- 下一篇: 对于阿里云的oss上传本地图片的相关注意