- ORB_SLAM2 路徑添加到 ROS 環境(記得更新)
gedit ~/bash.rc
ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:你的路徑/ORB_SLAM2/Examples/ROS
保存
更新
source ~/.bash.rc
-
對ORB_SLAM2/Examples/ROS重新編譯
進入ROS文件夾的build中重新編譯
-
修改ORB_SLAM2 的 Mono 訂閱的話題
查看自己的.bag的信息
rosbag info XXX.bag
將其中的image的topic復制過去
- 編譯
./build.sh
./build_ros.sh
- 啟動ros內核,運行ROS,發布數據消息
1.啟動內核
roscore
2.ros運行orb slam
rosrun ORB_SLAM2 Mono 詞袋路徑 數據集的配置文件.yaml
3.數據集發布話題
rosbag play -r 0.5 xxx.bag 【以0.5倍速播放】
問題一: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