要編譯ORB_SLAM2的ROS例程首先需要安裝ROS,以及在ROS下安裝usb_cam驅動並調用,最后搭建ORB_SLAM2。
1.ROS的安裝
我的電腦安裝的是ubuntu16.04系統,所以我安裝的是2016年的發行版本ROS_Kinetic,一般的話ROS的版本是一年一更新,和ubuntu的系統更新保持同步。如果你的系統是ubuntu14.04,你可以安裝2014年的發行版本ROS_Indigo。
ROS_Kinetic在ubuntu16.04上的安裝可以參考我的博客:點擊鏈接地址
2.usb_cam在ROS中的編譯
首先要新建一個ROS的工作空間
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace
編譯工作空間
cd ~/catkin_ws/
catkin_make
設置環境變量
source devel/setup.bash
如果你的終端為zsh,請用如下命令
source devel/setup.zsh
進入到catkin_ws/src目錄下,下載usb_cam的源文件到此目錄下
cd ~/catkin_ws/src git clone https://github.com/bosch-ros-pkg/usb_cam.git
退出到catkin_ws目錄下執行catkin_make命令進行編譯並設置環境
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash
可以測試是否配置成功
roscd usb_cam
沒報錯就說明安裝成功了
3.編譯ORB_SLAM2庫
最簡單的根據orb_slam2在github上面的項目地址就可以安裝成功
項目地址:https://github.com/raulmur/ORB_SLAM2
詳細的可以參考我的博文:點擊鏈接地址
4.編譯ROS例程
網上編譯ROS例程的教程很多,但我還是覺得github上面提供的最方便
首先進入到你的ORB_SLAM2源代碼目錄下,然后執行命令
chmod +x build_ros.sh
./build_ros.sh
這個可能不會100%編譯成功,但Mono和MonoAR可以編譯成功,主要是ros_rgbd不能編譯成功,出現報錯,我就沒管他。
編譯完之后,記得在.bashrc后面加入:
source /home/zn/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/build/devel/setup.bash
5. 運行ROS中的Demo
以上步驟都成功后,我們就可以運行ros中的demo了
開始之前還有個地方需要改:
把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編譯一下~
這下可以開始了:
首先我們要啟動ros內核,新開一個終端,執行
roscore
啟動usb_cam攝像頭節點,新開一個終端,執行
roslaunch usb_cam usb_cam.launch
啟動 ORB_SLAM2 的 Mono 節點(單目)
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
PATH_TO_VOCABULARY是ORBvoc.txt文件路徑,PATH_TO_SETTINGS_FILE是你的攝像機內參數文件路徑
所以可以在第三個終端輸入如下命令:
rosrun ORB_SLAM2 MonoAR /home/zn/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/zn/ORB_SLAM2/Examples/Monocular/TUM1.yaml
路徑按照自己的電腦路徑進行更改,TUM1.yaml是參數設置文件,主要是相機的內參,這個得自己標定。如果懶得標定,可以直接用TUM1.yaml,不影響程序的運行。
end......
參考博文:https://blog.csdn.net/u79501/article/details/68942174
http://www.liuxiao.org/2016/07/ubuntu-orb-slam2-%E5%9C%A8-ros-%E4%B8%8A%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/