日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORB_SLAM2运行TUM数据和实时数据

發布時間:2024/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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部署,編譯錯誤問題解決方法ros_rgbd.cc.o: undefined reference to symbol_power的專欄-CSDN博客

1.查看電腦軟硬件配置

(1)硬件

#獲取cpu詳細信息

$ cat /proc/cpuinfo

# 查看cpu是幾核

$ cat /proc/cpuinfo |grep "cores"|uniq

# 查看cpu型號

$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

(2)軟件

#查看當前操作系統發行版信息

$ cat /etc/issue

軟件平臺

$roscore

2. 步驟

(1)更新apt庫

$ sudo apt-get update

(2)安裝git

$ sudo apt-get install git

(3)安裝cmake,用于程序編譯

$ sudo apt-get install cmake

(4)安裝pangolin作為可視化和用戶界面

#安裝依賴項

$ sudo apt-get install libglew-dev libpython2.7-dev

#從github上下載項目

$ git clone https://github.com/stevenlovegrove/Pangolin.git

#編譯安裝

$ cd Pangolin

$ mkdir build

$ cd build

$ cmake ..

報錯

所使用的安裝包https://github.com/stevenlovegrove/Pangolin.git有問題,改用舊版本安裝包

$ git clone https://github.com/zzx2GH/Pangolin.git

重復上述編譯過程

$ make

$ sudo make install

(5)安裝Open CV,用于處理圖像和特征,注意安裝版本是否兼容,要求最低版本是2.4.3,安裝版本為2.4.11

#安裝依賴項

$ 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官網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 ..

#為防止編譯時間較長,cpu性能較高使用make -jx, x表示線程(4核*2),以加速編譯

$ make -j8

$ sudo make install

(6)安裝Eigen3開源線性庫,進行矩陣運算

$ sudo apt-get install libeigen3-dev

(7)安裝DBoW2和g2o

DBoW2是一個開源C++庫,用于索引圖像并將其轉換為單詞表示形式;

g2o是一個開源C++框架,用于優化基于圖的非線性誤差函數;

這兩個庫在ORB-SLAM2的ThirdParty文件夾中,后續統一編譯。

(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.

報錯:

error: ‘usleep’ was not declared in this scope

在提示有錯的文件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. 單目數據庫TUM

有TUM、KITTI、EuRoC三種數據集。其中TUM數據集在http://vision.in.tum.de/data/datasets/rgbd-dataset/download下載對應序列,可以下載最簡單序列“freiburg1_xyz”,解壓到新建文件夾ORB_SLAM2/data中。該數據序列由kinect提供groundtruth.txt數據。包括depth文件夾、depth.txt、rgb文件夾、rgb.txt。

#運行./Examples/Monocular/mono_tum可執行文件

$ cd ORB_SLAM2

$ ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml Path_to_sequence_folder

其中,TUMX.yaml 與下載的序列freiburgx對應,本文為TUM1;Path_to_sequence_folder為數據序列freiburg1的存儲路徑。

ORB特征、環境稀疏地圖、相機運動軌跡。

公開數據集還可以作為算法性能對比的評價標準。

4.借助ROS實時運行ORB_SLAM2

(1)安裝ROS,Ubuntu16.04 安裝Ros_zttsm的博客-CSDN博客

(2)攝像頭數據讀取與顯示

#創建工作空間

$ 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

插入攝像頭連接線進usb2.0端口

#輸入查詢新設備接入命令

$ lsusb

顯示Logitech,Inc.Webcam C930e

#在/計算機/dev文件下搜索video,從新增文件得到設備號

打開/home/ztt/catkin_zttws/src/usb_cam/launch/usb_cam-test.launch文件,設置攝像頭對應設備號,一般video0表示電腦自帶攝像頭,外設依次遞增。(本例子是無攝像頭的臺式機外接羅技單目攝像頭,所以如果是帶攝像頭的筆記本外接羅技單目攝像頭,應該為video1)

?<param name="video_device" value="/dev/video0" />

#在catkin_***ws下啟動usb_cam節點,彈出顯示窗口

$ roslaunch usb_cam usb_cam-test.launch

(3)將ORB_SLAM2文件夾移動到catkin_zttws/src下;將包含ORB_SLAM2/Examples/ROS路徑添加到ROS_PACKAGE_PATH環境變量中,打開新終端

$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項目路徑/home/ztt/catkin_zttws/src

在終端執行命令

$ source ~/.bashrc

(4)編譯ROS下的ORB_SLAM2

(4.1)修改話題

ORB-SLAM默認訂閱的話題為/camera/image_raw,而usb_cam節點發布的話題為/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)因為(4.3)更改源文件,需要重新編譯

#新終端

#重新編譯ROS的example

$ cd ~/catkin_zttws/src/ORB_SLAM2

$ chmod +x build_ros.sh

$ ./build_ros.sh

如果報錯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)新終端運行內核

roscore

(4.4)新終端啟動相機

$ cd catkin_ws

$ roslaunch usb_cam usb_cam-test.launch

(4.5)新終端運行/home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2/Mono可執行文件

#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:攝像頭內參,可以使用路徑./Asus.yaml,但需要將Asus.yaml中的參數改成自己使用攝像頭標定后的參數,攝像頭標定可以使用opencv或matlab工具箱。

(4.6)運行提示打不開參數文件Asus.yaml,復制ORBvoc.txt放在與Asus.yaml相同目錄下,并授權

$ sudo chmod 777 Asus.yaml

$ sudo chmod 777 ORBvoc.txt

再次運行

*為順利初始化,虛選擇紋理豐富場景,左右平移相機直至圖像提出ORB特征。

*最好保持勻速運動,保持當前幀與上一幀有足夠數量匹配的特征點,否則跟蹤失敗,退回到之前經過的場景,進行重定位。

最后輸出相機的運動軌跡與周圍環境的稀疏地圖。右圖中綠線表示相機運動軌跡,藍色方框表示相機運動過程中的空間位置(關鍵幀),紅黑點表示環境的稀疏地圖,紅點為當前路標,黑點為歷史路標。

總結

以上是生活随笔為你收集整理的ORB_SLAM2运行TUM数据和实时数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。