slam迷惑(记录,看我将来能不能想通)

这篇博客探讨了SLAM中的sim3优化在单目和双目回环中的作用,以及DSO论文中的先验信息来源。内容涉及滤波法与关键帧法在SLAM中的区别,以及在稠密建图中如何处理匹配像素点的问题。同时,讨论了仿射变换在匹配像素中的应用和其在预处理中的角色。

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

目录

1.2 sim3优化既然是为了使单目slam的scale统一,那么双目回环之类的还需要sim3优化吗?

1.3 论文dso

先验具体指什么?由何而来?

1.4 滤波法和关键帧法的区别?地图特征点的关联?

已解决:

1)看论文看到的所谓深度信息辅助,使得2D-2D变成3D-2D:

2)  在已知相机运动的情况下,稠密建图中是否需要块匹配?还是根据位姿直接就可以得到匹配像素点?

资料:关于dR和dC:应该是深度信息。

1.2 仿射变换感想和思考:


1.2 sim3优化既然是为了使单目slam的scale统一,那么双目回环之类的还需要sim3优化吗?

sim3相关内容见ORB-SLAM(五)优化以及我的博客2.3条

1.3 论文dso

  • 先验具体指什么?由何而来?

来自高博的介绍

DSO在解BA时,边缘化了所有点的信息,计算优化的更新量。然而,与传统BA不同的是,DSO的左上角部分,即公式中的 \bm{B} ,并非为对角块,而是有先验的。传统BA中,这部分为对角块,主要原因是不知道相机运动的先验,而DSO的滑动窗口,则通过一定手段计算了这个先验。这里的先验主要来自两个部分(不懂?不确定.我以为是dso本身的"点跟两个帧有关"导致的B不对角)::

  1. 边缘化某个点时,这个点的共视帧之间产生先验;
  2. 边缘化某个帧时,在窗口内其他帧之间产生先验;

这里的“边缘化”,具体的操作和上面讲的边缘化,是一样的。也就是说,通过舒尔补,用矩阵的一部分去消元另一部分。然而实际操作的含义却有所不同。在BA的边缘化中,我们希望用边缘化加速整个问题的求解,但是解完问题后,这些帧和点仍旧是存在于窗口中的!而滑动窗口中的边缘化,是指我们不再需要这个点/这个帧。当它被边缘化时,我们将它的信息传递到了之后的先验中,而不会再利用这个点/这个帧了!请读者务必理清这层区别,否则在理解过程中会遇到问题。我们不妨将后者称为“永久边缘化”,以示区分。

那么DSO如何永久边缘化某个帧或点?它遵循以下几个准则:

  • 如果一个点已经不在相机视野内,就边缘化这个点;
  • 如果滑动窗口内的帧数量已经超过设定阈值,那么选择其中一个帧进行边缘化;
  • 当某个帧被边缘化时,以它为主导的地图点将被移除,不再参与以后的计算。否则这个点将与其他点形成结构先验,破坏BA中的稀疏结构[10]。

在边缘化的过程,DSO维护了帧与帧间的先验信息(见EnergyFunctional::HM和bM),并将这些信息利用到BA的求解中去。

dso论文中提及dense方法时说到的map point先验(导致Hessian矩阵的右下角地图点矩阵不对角):

Dense vs. Sparse:Apart from the extent of the used image region however,a more fundamental – and consequential – difference lies in the addition of a geometry prior. In the sparse formulation, there is no notion of neighborhood, an

### 实现SLAM轨迹记录回放 为了实现SLAM轨迹记录回放,通常会涉及到几个关键组件和技术。这些技术不仅限于特定的传感器类型或算框架,而是广泛适用于多种SLAM解决方案。 #### 轨迹记录 在大多数情况下,轨迹记录意味着保存机器人在其环境中移动时的位置和方向信息。这可以通过定期采样机器人的状态向量(位置、速度、加速度等)以及时间戳来完成。对于基于视觉或激光雷达的SLAM系统来说,还需要同步存储来自相应传感器的数据流以便后续处理[^2]。 具体而言,在ROS环境下可以使用`rosbag`命令轻松地捕获整个过程中的所有消息,包括但不限于: - `/tf`: 变换树,描述不同坐标系之间的关系; - `sensor_msgs/Imu`, `nav_msgs/Odometry`, 或其他形式的姿态估计结果; - 来自摄像头或其他感知设备的消息。 ```bash roslaunch your_slam_package record.launch _filename:=your_trajectory.bag ``` 这段脚本启动了指定包内的录制节点,并指定了输出文件名。 #### 数据预处理 一旦完成了数据采集工作,则可能需要对其进行一些初步清理操作,比如去除异常值、平滑化路径曲线或是调整帧率一致性等问题。这部分取决于所使用的硬件平台及其特性而定。 #### 轨迹回放 要重播之前捕捉下来的运动序列,最简单的方式就是再次运行相同的ROS环境并将先前创建好的`.bag`文件作为输入源加载进去。通过这种方式能够重现当时的情景,从而便于调试参数设置或者评估新版本软件的表现差异。 ```bash rosparam set use_sim_time true rosbag play --clock /path/to/your_trajectory.bag ``` 上述指令启用了仿真模式下的全局计时器(`use_sim_time`)以确保所有的订阅者都能接收到一致的时间参考信号;接着播放选定的历史记录档案。 此外,某些高级功能如可视化界面可以帮助更直观地理解整个流程的发展变化趋势。RViz就是一个很好的例子,它允许用户交互式探索多维空间里的物体分布情况及动态演变规律[^5]。 #### 工具推荐 除了官方支持的标准库之外,社区里也存在不少第三方插件可供选择。例如GTSAM提供了强大的因子图优化能力,可用于改进定位精度;而OpenVDB则擅长处理大规模稀疏体素网格结构,适合复杂场景下快速构建地图模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值