cpp 一个文件分成两个文件写_为ORB-SLAM2写一个launch文件
在ros下啟動ORB-SLAM2的步驟比較繁瑣,比如運行單目版本,首先需要啟動相機,然后在新的命令窗口下打開ORB-SLAM2的相應節(jié)點,這個步驟需要輸入配置好的路徑等:
# ros 啟動orb-slam2的單目節(jié)點 $ rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE為了以后偷懶,用一個launch文件來管理ORB-SLAM2的啟動過程,本文主要記錄完成這個簡單任務的過程。
一. 在ROS下建立orb_launch包
參考官方的教程,建立orb_launch package,其實就一行代碼:
$ cd ~/catkin_ws/src $ catkin_create_pkg orb_launch std_msgs rospy roscpp然后在orb_launch文件夾下建立launch文件夾。
二.在launch文件夾下建立xxx.launch文件
我主要建立了三個launch文件,具體的功能是:
- orb_slam2.launch : 單獨啟動orb_slam2 的某一個ros節(jié)點
- orb_slam2_mono.launch : 啟動usb相機和orb_slam2 mono節(jié)點
- orb_slam2_rgbd.launch : 啟動深度相機和orb_slam2 rgbd節(jié)點
具體代碼:
放單目版本的文件內容(每個版本都差不多,具體代碼我已經上傳到github:
weihaotobe94/ORB_SLAM2_launch?github.com)weihaotobe94/ORB_SLAM2_launch)
orb_slam2_mono.launch :
<launch><!--定義全局參數(shù)--><arg name="rgb_image" default="/usb_cam/image_raw"/><arg name="path_to_vacabulary" default="/home/weihao/SLAM_Project/ORB_SLAM2-master/Vocabulary/ORBvoc.txt"/><arg name="path_to_settings" default="/home/weihao/SLAM_Project/ORB_SLAM2-master/Examples/Monocular/TUM1.yaml"/><!--啟動攝像頭節(jié)點(USB相機)--><include file="$(find usb_cam)/launch/usb_cam-test.launch"/><!--啟動ORB-SLAM2 RGBD--><node name ="Mono" pkg="ORB_SLAM2" type="Mono" args="$(arg path_to_vacabulary) $(arg path_to_settings)" respawn="true" output="screen"><remap from="/camera/image_raw" to="$(arg rgb_image)"/></node> </launch>可以根據(jù)實際情況修改全局參數(shù)的配置。(我的相機輸出是640*480,因此直接調用了TUM1.yaml的配置文件,也可標定相機然后加載自己的配置文件,這里只是看一下效果,雖然實際差別可能不會太大,因為orb_slam2貌似對相機內參進行了在線優(yōu)化)
三.運行效果
啟動上述節(jié)點
$ roslaunch orb_launch orb_slam2_mono.launch實際運行效果如圖:
四.問題總結
原因:ros找不到orb_slam2的ros包,需要將路徑放在.bashrc文件末尾
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS然后"source ~/.bashrc",假如仍然不能正常運行,請參考:(十一)ORBSLAM2在ROS下運行-布布扣-bubuko.com
2.launch文件的格式一定要寫對,經常忘了寫/等。
3.本來打算用一個config/xx.yaml文件來管理所有參數(shù),但node 的args傳遞參數(shù)沒完全明白,之后再改進。
好長時間沒有搞ros了,寫十行代碼花了2個小時,以后還是要加強學習啊!!!!
總結
以上是生活随笔為你收集整理的cpp 一个文件分成两个文件写_为ORB-SLAM2写一个launch文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7系统怎么关闭自动睡眠电脑如何关闭
- 下一篇: 有关数据库MySQL的演讲_有关Mysq