Ubuntu 16.04 ORB_SLAM2 ROS usb_cam AR

Ubuntu 16.04 ORB_SLAM2 ROS usb_cam AR
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

轉載 https://blog.csdn.net/u79501/article/details/68942174

最近開始學習ORB_SLAM2,想試試它的AR功能。嘗試的過程中遇到了一些問題,總結一下:

搭建ORB_SLAM2

ORB_SLAM2的搭建並不難,網上有很多教程,這個就不錯點選開啟連結 

(我建議用opencv3.2,因為之前我裝的3.0,沒有成功,後來刪了3.0換了3.2,就成功了)

ORB_SLAM2的原始碼git_hub上有:點選開啟連結

ORB_SLAM2有四個Examples,跑AR的話需要安裝ROS,其他的例子,下載資料集就可以跑了。

ROS安裝

ROS的安裝稍微麻煩一點,它有許多版本,具體要看你用的ubuntu版本了,我用的ubuntu 16.04,所以我用的是ROS Kinetic。如果是ubuntu 14.04的話,用ROS Indigo就行了。網上也有很多教程,但是你自己在操作的過程中可能會遇到一些問題,可能是這些部落格沒有指出來的。所以我建議如果是像我這種剛接觸Linux或者ROS的小白,最好先了解一下Linux和ROS的基礎知識,像什麼shell、bashrc、source、export這些,還有ROS的topic、node什麼的。雖然可能不會用它們進行多深入的工作,但是稍微瞭解一下這些概念,看起教程來會容易很多。你就會知道為什麼要這麼做,就算哪出錯了,你也可以自己搞定了~

具體安裝過程我就不囉嗦了,網上有寫得很好的。我就把我遇到的一些問題,或者值得注意的地方寫一寫。

我主要參考的這篇博文:點選開啟連結(注意,kinetic的k應該是小寫的,文中貌似不太對)

我裝的是ros-kinetic-desktop-full,用了15分鐘左右吧。

有關環境配置

在安裝ROS期間,你會看到提示說需要source 多個setup.bash檔案中的某一個,或者甚至提示新增這條’source’命令到你的啟動指令碼里面。

這些操作是必須的,因為ROS是依賴於某種組合空間的概念,而這種概念就是通過配置指令碼環境來實現的。

這可以讓針對不同版本或者不同軟體包集的開發更加容易。 如果你在查詢和使用ROS軟體包方面遇到了問題,請確保你已經正確配置了指令碼環境。

一個檢查的好方法是確保你已經設定了像ROS_ROOT和ROS_PACKAGE_PATH這樣的環境變數,可以通過以下命令檢視:

$export | grep ROS

如果發現沒有配置,那這個時候你就需要’source’某些’setup.bash’檔案了。

在終端下輸入:

gedit ~/.bashrc

在最後面新增相應的setup.bash檔案,這樣就不用每次開啟一個終端又需要重新配置。

修改完之後記得在終端 source ~/.bashrc 一下,讓剛剛的修改立即生效。

有關ROS工作空間

一般我們都會建立一個ROS的工作空間:catkin_ws(把它放在home下就行了)

建立完之後記得把catkin_ws的setup.sh新增到.bashrc後面。

一般建立ROS的package都是在catkin_ws/src下面,比如後面要講的usb_cam,就把它直接安裝到catkin_ws/src就行了。

ORB_SLAM2也可以安裝到catkin_ws/src下,這樣你就不用把ORB_SLAM2新增到ROS的環境變數中去了。

當然,你也可以把ORB_SLAM2安裝到其他地方,不過你要記得把ORB_SLAM2的setup.sh路徑新增到.bashrc後面哦。

有關ORB_SLAM AR

我主要參考了這兩篇部落格:點選開啟連結 和點選開啟連結

1. 安裝usb_cam驅動

usb_cam的驅動直接安裝在catkin_ws/src下面就行了,因為之前已經把catkin_ws的setup.sh新增到.bashrc中了。如果你安裝在其他地方,你還得把usb_cam的setup.sh新增到.bashrc中。

usb_cam的下載地址:點選開啟連結,在catkin_ws中catkin_make一下就好了。

安裝完之後就可以測試一下,有兩種方法:

第一種:

a. 在一個終端下啟動ROS核心:roscore

b. 在第二個終端輸入:rosrun usb_cam usb_cam_node (這個時候是看不到畫面的)

c. 在第三個終端輸入:rosrun image_view image_view image:=/usb_cam/image_raw

(前提是你安裝好了image-view:sudo apt-get install  ros-kinetic-image-view)

第二種:

直接在一個終端下輸入:roslaunch usb_cam usb_cam-test.launch

2. 編譯ORB_SLAM2中的ROS

在一個終端下輸入:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/wnw/Projects/ORB_SLAM2-master/Examples/ROS

(根據你自己的路徑修改)

或者你可以直接寫在.bashrc最後面,記得要source一下哦~

然後在這個終端下繼續編譯ORB_SLAM2 ROS

mkdir build

cd build

cmake .. -DROS_BUILD_TYPE=Release

make -j

編譯完之後,記得在.bashrc後面加入:

source /home/wnw/Projects/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/build/devel/setup.bash

3. 執行ROS中的Demo

直接跑MonoAR吧~

開始之前還有個地方需要改:

把ros_mono_ar.cc中的

ros::Subscriber sub = nodeHandler.subscribe(“/camera/image_raw”, 1, &ImageGrabber::GrabImage,&igb);

改為:

ros::Subscriber sub = nodeHandler.subscribe(“/usb_cam/image_raw”, 1, &ImageGrabber::GrabImage,&igb);

(看到沒有,路徑變了喲。因為我們的圖片都是從/usb_cam/image_raw傳送過來的)

然後再把Example編譯一下~

這下可以開始了:

a. 在一個終端輸入:

roscore(回車)

b. 在第二個終端輸入:

roslaunch usb_cam usb_cam-test.launch(回車)

c. 在第三個終端輸入:

rosrun ORB_SLAM2 MonoAR /home/wnw/Projects/ORB_SLAM2-master/Vocabulary/ORBvoc.txt  /home/wnw/Projects/ORB_SLAM2-master/Examples/Monocular/TUM1.yaml(回車)

(路徑按照自己的寫哦,TUM1.yaml是引數設定檔案,主要是相機的內參,這個得自己標定。如果懶得標定,直接用TUM1.yaml吧,湊合著用吧)

跑出來的效果是這樣的:

相關文章

程式語言 最新文章