ORB SLAM 利用ROS運行自己的.bag數據集


  1. ORB_SLAM2 路徑添加到 ROS 環境(記得更新)
gedit ~/bash.rc
 ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:你的路徑/ORB_SLAM2/Examples/ROS
 保存
 更新
 source ~/.bash.rc
  1. 對ORB_SLAM2/Examples/ROS重新編譯
    進入ROS文件夾的build中重新編譯

  2. 修改ORB_SLAM2 的 Mono 訂閱的話題

查看自己的.bag的信息
rosbag info XXX.bag
將其中的image的topic復制過去
  1. 編譯
./build.sh
./build_ros.sh
  1. 啟動ros內核,運行ROS,發布數據消息
1.啟動內核
roscore
2.ros運行orb slam
rosrun ORB_SLAM2 Mono 詞袋路徑 數據集的配置文件.yaml
3.數據集發布話題
rosbag play -r 0.5 xxx.bag  【以0.5倍速播放】

參考1

問題一:bag數據集是壓縮的圖片compressed,需要轉換為raw格式類型的
所需指令如下:

1. 壓縮的圖片的topic一般是XXXraw/compressed,
rosrun  image_transport republish compressed in:=/usb_cam150/image_raw  raw  out:=/usb_cam150/image_raw
2. 存儲raw類型圖片
rosbag record -o raw.bag /usb_cam150/image_raw /usb_cam180/image_raw
3. 需要轉換的compressed圖像數據bag發布topic
rosbag play xxx.bag
4,抓換完成后可以用rviz來查看數據圖像
打開終端,輸入
rosrun rviz rviz
添加一個camera 
運行圖像數據集,在camera的topic添加該數據

注意:rviz中要修改Fixed Frame,根據frame_id更改

參考:將Rosbag中的Compressed類型的圖像轉換成raw類型
參考:rviz可視化

問題二:ORB SLAM2運行完畢后卡在最后一張圖像中,無法保存關鍵幀軌跡

在System.cc中注釋以下兩行代碼

if (mpViewer)
        pangolin::BindToContext("ORB-SLAM2: Map Viewer");
如果是ROS運行orbslam2,軌跡文件保存在/Example/ROS目錄下,自己也可以更改ros_mono_cc文件中的保存目錄,用絕對路徑

問題三:如何獲得數據集的真實軌跡

1. 提示無法定位到package的某個節點,在自己package中的建立build,先cmake make一下
2. roslaunch package名 launch文件名啟動
3. 修改rviz中的Fixed Frame,根據frame_id更改
4. 數據級play,發布topic


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM