orb-slam下跑自己的.bag数据集

本文详细介绍如何将录制的.bag数据集与ORB-SLAM2系统集成,特别针对双目摄像头的应用场景。通过修改ros_stereo.cc文件中的节点订阅者,使其与录制数据集中的话题匹配,实现数据集的有效读取与处理。

 

上一篇博客已经有了关于如何录制.bag数据集的过程感兴趣的可以参照 https://mp.youkuaiyun.com/postedit/91386068

因为我跑的是双目摄像头 所以首先在orb-slam2下找到ros_stereo.cc文件然后对其中的rostopic节点进行修改 首先先找到自己对应的节点在 自己录制的.bag 数据集下打开终端执行 rosbag info xxx.bag在里面的topics中可以找到自己对应的节点,我的节点是"/mynteye/left/imag_color"和"/mynteye/right/imag_color"所以对应的将 ros_stereo.cc中的

message_filters::Subscriber<sensor_msgs::Image>left_sub(nh,"/camera/left/image_raw",1);修改为

message_filters::Subscriber<sensor_msgs::Image>left_sub(nh,"/mynteye/left/imag_color,1);

 

message_filters::Subscriber<sensor_msgs::Image>left_sub(nh,"/camera/right/image_raw",1);修改为

message_filters::Subscriber<sensor_msgs::Image>left_sub(nh,"/mynteye/right/imag_color,1);

注:修改完ros_stereo.cc文件之后需要重新编译否则运行不会成功

在自己的工作空间下如我的工作空间为 ~/catkin_ws/src/MYNT-EYE-ORB-SLAM2-Sample下运行rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt config/mynteye_s_stero.yaml false(运行的命令具体要根据你自己的来进行修改)

在录制的 rosbag目录下运行 rosbag play ~/catkin_ws/src/MYNT-EYE-ORB-SLAM2-Sample/mynteye1.bag(我的rosbag的名称为mynteye1.bag)

此时如果一切正常的话就可以看到自己录制的数据集转换成出来的运行效果来是不是很有成就感呢 ^ ^

<think>我们被要求提供在ROS环境下运行ORB-SLAM3并使用rosbag数据集的操作方法。根据引用[1]和[2],我们可以整理出以下步骤: 1. 环境准备:确保已经安装了Ubuntu 20.04和ROS(建议Noetic版本),并且已经成功配置了ORB-SLAM3的ROS运行环境。 2. 编译ORB-SLAM3的ROS部分:需要运行`build_ros.sh`脚本进行编译。 3. 运行方法:首先启动ORB-SLAM3节点,然后使用rosbag play命令播放数据集。 具体步骤如下: ### 步骤1:安装和配置环境 请确保已经按照引用[1]中的步骤完成了ORB-SLAM3的安装和ROS环境的配置。这包括安装必要的依赖库(如Pangolin、OpenCV、Eigen3等)以及编译ORB-SLAM3。 ### 步骤2:编译ROS部分 进入ORB-SLAM3的目录,运行以下命令: ```bash cd /path/to/ORB_SLAM3 chmod +x build_ros.sh ./build_ros.sh ``` 注意:如果之前没有修改过ORB-SLAM3节点订阅的话题名称,那么在播放rosbag时可能需要重映射话题(例如,确保图像话题与ORB-SLAM3节点订阅的话题一致)。 ### 步骤3运行ORB-SLAM3节点 打开一个新的终端,运行: ```bash source /opt/ros/noetic/setup.bash source /path/to/ORB_SLAM3/Examples/ROS/ORB_SLAM3/build/devel/setup.bash rosrun ORB_SLAM3 Mono /path/to/ORB_SLAM3/Vocabulary/ORBvoc.txt /path/to/ORB_SLAM3/Examples/Monocular/EuRoC.yaml ``` 这里使用的是单目模式(Mono),如果需要使用双目或RGB-D,请选择相应的可执行文件(Stereo, RGB-D)并配置对应的配置文件。 ### 步骤4:播放rosbag数据集 在另一个终端中,播放你的rosbag数据集。例如: ```bash rosbag play --pause /path/to/your/dataset.bag ``` 注意:如果ORB-SLAM3节点订阅的话题与rosbag中发布的话题不一致,需要进行重映射。例如,如果rosbag中的图像话题为`/camera/image_raw`,而ORB-SLAM3默认订阅的话题可能是`/camera/image_raw`,如果不一致,可以在运行节点时重映射: ```bash rosrun ORB_SLAM3 Mono /path/to/ORB_SLAM3/Vocabulary/ORBvoc.txt /path/to/ORB_SLAM3/Examples/Monocular/EuRoC.yaml _image:=/camera/image_raw ``` 或者在播放rosbag时重映射: ```bash rosbag play /path/to/your/dataset.bag /original_topic:=/camera/image_raw ``` ### 注意事项 - 确保rosbag的数据类型与运行ORB-SLAM3模式匹配(单目、双目或RGB-D)。 - 根据你的相机配置文件(YAML文件)调整参数,特别是相机内参和畸变参数。 -运行过程中,可以通过Rviz查看ORB-SLAM3的输出结果。 通过以上步骤,你应该可以在ROS环境下使用rosbag数据集运行ORB-SLAM3。 §§相关问题§§ 1. 如何为ORB-SLAM3创建自己的ROS包? 2. ORB-SLAM3在ROS中运行时出现话题不匹配怎么办? 3. 如何调整ORB-SLAM3的参数以优化在特定数据集上的性能? </think> ### 在ROS中运行ORB-SLAM3并使用rosbag数据集的操作方法 #### 1. **环境准备** - 确保已安装 **Ubuntu 20.04** 和 **ROS Noetic** - 完成ORB-SLAM3的编译和ROS环境集成: ```bash cd ~/ORB_SLAM3 # 进入ORB-SLAM3目录 chmod +x build_ros.sh ./build_ros.sh # 编译ROS节点[^2] ``` #### 2. **配置话题映射** ORB-SLAM3默认订阅以下话题: - 单目模式:`/camera/image_raw` - 深度模式:`/camera/depth/image_raw` 和 `/camera/rgb/image_raw` 若rosbag数据集使用不同话题名,需在启动时重映射: ```bash rosrun ORB_SLAM3 RGBD \ Vocabulary/ORBvoc.txt \ Examples/RGB-D/TUM1.yaml \ _rgb:=/your_custom_rgb_topic \ _depth:=/your_custom_depth_topic ``` #### 3. **启动ORB-SLAM3节点** 根据传感器类型选择启动模式: - **单目相机**: ```bash rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml ``` - **RGB-D相机**: ```bash rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ``` #### 4. **播放rosbag数据集** ```bash rosbag play --pause your_dataset.bag # 先暂停播放 # 检查话题列表确保匹配 rosbag info your_dataset.bag # 按需重映射话题后播放 rosbag play your_dataset.bag /real_topic:=/camera/image_raw ``` #### 5. **可视化结果** - 打开Rviz添加显示项: ```bash rviz ``` - 添加 `PointCloud2` 显示 `/orb_slam3/map_points` - 添加 `Path` 显示 `/orb_slam3/camera_pose` #### 常见问题解决 | 问题类型 | 解决方案 | |---------|----------| | 话题不匹配 | 启动节点时添加 `_image:=/your_topic` 参数 | | 无深度数据 | 检查YAML文件中深度缩放因子配置 | | 轨迹漂移 | 尝试EuRoC或TUM-VI数据集校准参数 | > **注意**:建议使用标准数据集(如EuRoC MAV、TUM RGB-D)测试,确保时间戳同步[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值