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
posted @ 2022-01-05 01:45  Weighting  阅读(1403)  评论(0编辑  收藏  举报