orb slam3根据匹配特征点重建相机pose部分源码解读

本文详细解读ORB SLAM3中根据匹配特征点重建相机姿态的源码,涉及MapPoint、特征匹配、单应矩阵H和基础矩阵F的计算,以及相机旋转矩阵Rcw和平移向量tcw的求解过程。通过不断迭代优化,确定最佳的相机位姿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节解释了用前后两帧匹配的Keypoint对来重建相机pose

地图点类型在MapPoint类,
里面包含很多信息,就不一一列举了,参考MapPoint.h
大致包含了世界坐标,keyframe和它的observations
view direction, 参照的keyframe, 做matching的best descriptor,bad flag(提示不好的点,但是目前不移除)

后面提取的Map point会保存在mvpMapPoints里

此部分在Tracking::Track(),

进入Map* pCurrentMap = mpAtlas->GetCurrentMap();

把之前检测到的9481个特征点的坐标pt 放入mvbPrevMatched,注意只有坐标,没有其他信息了

第一张图片只是检测特征点,并设置一些初始状态,并没有匹配建图,
接着读下一张图片

提取ORB特征,和上一帧的特征点匹配
保存对应匹配的keypoint的坐标到vbPrevMatched,Prev表示与上一帧的keypoint匹配

具体怎么匹配见orb_feature.txt

几个定义:
相机旋转矩阵Rcw, 平移向量(矩阵)tcw

### 使用 ORB_SLAM3 在 ROS 中进行实时建图 #### 一、环境配置 为了在 ROS 下成功运行 ORB_SLAM3 并实现实时建图,需先完成必要的软件安装与依赖项设置。以下是具体操作: 1. **操作系统准备** 建议使用 Ubuntu 20.04 LTS 和 ROS Noetic 版本作为开发平台[^1]。 2. **克隆 ORB_SLAM3 源码库** 将官方仓库中的 ORB_SLAM3 源码下载到本地工作目录中: ```bash git clone https://github.com/UZI-Research-Lab/ORB_SLAM3.git ``` 3. **构建 ROS 功能模块** 切换至源码根目录并执行以下命令以启用 ROS 支持: ```bash cd ORB_SLAM3 chmod +x build_ros.sh ./build_ros.sh ``` 此脚本会自动编译项目并与当前 ROS 工作空间集成[^2]。 --- #### 二、参数文件配置 实时建图的核心在于正确配置 YAML 文件以及指定词汇表路径。这些文件定义了相机模型、传感器类型以及其他算法所需的超参数。 1. **选择合适的 YAML 参数文件** 对于单目摄像头 (Monocular),双目摄像头 (Stereo) 或 RGB-D 数据流,分别选用对应的配置模板。例如: - 单目模式:`Examples/Monocular/mav0_mono.yaml` - 双目模式:`Examples/Stereo/stereo_kitti.yaml` - RGB-D 模式:`configyaml/intel_RGBD.yaml` 2. **修改参数适配硬件设备** 打开选定的 YAML 文件,调整分辨率 (`image_width`, `image_height`)、焦距 (`fx`, `fy`) 和主点偏移量 (`cx`, `cy`) 等字段来匹配实际使用的摄像机校准结果。 --- #### 三、启动节点与数据订阅 通过 ROS 节点发布图像话题并将它们传递给 ORB_SLAM3 处理器。 1. **运行核心 SLAM 节点** 启动 ORB_SLAM3 主程序时需要提供词汇表位置和上述提到的 YAML 配置文件名: ```bash rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt configyaml/intel_RGBD.yaml ``` 如果采用其他输入方式(如纯视觉或惯导辅助),则替换为相应的入口函数名称,比如 `rosrun ORB_SLAM3 Monocular ...`. 2. **同步发布传感器消息** 若利用真实世界采集的数据,则可通过 Gazebo 模拟器或其他工具模拟生成 `/camera/rgb/image_rect_color` 和 `/camera/depth_registered/swapped` 类型的话题;或者录制自定义 bag 包供离线测试之用: ```bash rosbag record -O custom_dataset.bag /camera/rgb/image_raw /camera/depth/image_raw ``` 当回放记录好的序列帧时记得加上时间戳选项以便保持时间一致性[^3]: ```bash rosbag play --clock custom_dataset.bag ``` --- #### 四、可视化效果验证 最后一步是在 RViz 或者终端界面观察定位轨迹及地图重建成果是否正常运作。 1. 添加 Marker 显示三维点云分布情况; 2. 查看 Camera Pose Graph 是否稳定收敛; 3. 记录最终保存的地图文件用于后续分析评估性能指标。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值