第10讲 后端2

news2024/11/16 17:38:08

主要目标:理解滑动窗口法、位姿图优化、带IMU紧耦合的优化、掌握g2o位姿图。

第9讲介绍了以为BA为主的图优化。BA能精确优化每个相机位姿与特征点位置。不过在更大的场景中,大量特征点的存在会严重降低计算效率,导致计算量越来越大,无法实时化。本讲第一部分介绍一种简化的BA:位姿图

目录

0、名词解释

1、滑动窗口滤波与优化

1.1 实际环境下的BA结构

1.2 滑动窗口法

2、位姿图

2.1 位姿图的意义

2.2 位姿图的优化

3、实践:位姿图优化

3.1 g2o原生位姿图

3.2 李代数上的位姿图优化

3.3 小结


0、名词解释

  • SfM(Structure from Motion)是一种从多个视角拍摄的对象或场景中重建其三维结构的方法。
  • VO(Visual Odometry)或VIO(Visual-Inertial Odometry)系统:解决的是里程计问题,里程计部分是由惯导,轮速计,视觉,激光等多传感器融合完成。

1、滑动窗口滤波与优化

1.1 实际环境下的BA结构

  • 控制计算规模的方法
    • 从连续的视频中抽出一部分作为关键帧,仅构造关键帧与路标点之间的BA,非关键帧只用于定位,对建图则无贡献。
    • 按照某种原则,取时间上靠近当前时刻,空间上又可以展开的关键帧,从而保证相机即使在停止不动时,BA结构也不至于缩成一团。
    • 定义共视图(与现在的相机存在共同观测的关键帧构成的图)结构,在BA优化时,按照某些原则在共视图内取关键帧和路标优化。例如,仅优化于当前帧有20个共视路标的关键帧,其余部分固定不变。
    • 滑动窗口也好,共视图也好,都是对实时计算的某种工程上的折中。

1.2 滑动窗口法

  • 滑动窗口法比较适合VO系统,而不适合大规模建图的系统。
  • 在边缘化时,我们考虑关键帧的位姿,即:[x_1,...,x_N]\sim N([\mu _1,...,\mu _N]^T,\sum ),其中\mu _k是第k个关键帧的位姿均值,\sum为所有关键帧的协方差矩阵。均值部分是指BA迭代之后的结果,而\sum就是对整个BA的H矩阵进行边缘化之后的结果,即上一讲的S矩阵。
  • 当窗口结构发生改变,这些状态变量如何变化?
    • 需要在窗口新增一个关键帧,以及它观测到的路标点。
    • 需要把窗口中的一个旧的关键帧删除,也可能删除它观测到的路标点。
  •  新增一个关键点和路标点
    • 只需按照正常BA流程处理即可,对所有点进行边缘化时,即得到这N+1个关键帧的高斯分布参数。
  • 删除一个旧的关键帧
    • 若考虑边缘化旧的关键帧x_1,那么Schur消元过程相当于通过矩阵行和列操作消去非对角线处几个非零矩阵块,显然将导致右下角路标矩阵块不再是非对角矩阵。这个过程称为边缘化中的填入(Fill-in)。这时BA无法按照先前的稀疏方式迭代求解。
    • 若对边缘化过程进行一些改造,也可以保持滑动窗口BA的稀疏性。例如,在边缘化某个旧的关键帧时,同时边缘化它观测到的路标点。这样,路标点的信息就会转换成剩下那些关键帧之间的共视信息,从而保持右下角部分的对角块结构。
    • 还有其他更复杂的边缘化策略,例如OKVIS。
  •  SWF中边缘化的直观解释
    • 边缘化在概率上的意义就是指条件概率。所以,我们边缘化某个关键帧,即“保持这个关键帧当前的估计值,求其他状态变量以这个关键帧为条件的条件概率”。
      • 当某个关键帧被边缘化,它观测到的路标点就会产生一个“这些路标应该在哪里”的先验信息,从而影响其余部分的估计值。
      • 如果再边缘化这些路标点,那么它们的观测者将得到一个“观测它们的关键帧应该在哪里”的先验信息。
      • p(x_1,...x_4,y_1,...y_6)=p(x2,...,x_4,y_1,...y_6|x_1)\underbrace{p(x_1)},然后舍去被边缘化部分的信息。
    •  滑动窗口法比较适合VO系统,而不适合大规模建图系统。
    • g2o和 ceres还未直接支持滑动窗口法中的边缘化操作,这里只讲理论部分。

2、位姿图

2.1 位姿图的意义

  • 根据前面的讨论,我们发现特征点在优化问题中占据了绝大部分,实际上,经过若干次观测之后,收敛的特征点位置变换很小,发散的外点则已被剔除。因此更倾向于在优化几次之后就把特征点固定住,只把它们看做位姿估计的约束,不在实际地优化它们的位置估计。
  • 因此,完全可以构建一个只有轨迹的图优化,而位姿节点之间的边,可以由两个关键点之间通过特征匹配后的得到的运动估计来给定初始值,之后不再优化那些路标点的位置,只关心所有相机位姿之间的联系。如此,省去大量特征点优化的计算,只保留关键帧的估计,从而构建位姿图(Pose Graph)。
  • 如果我们有额外测量Pose的传感器,那么位姿图也是一种常见的融合Pose测量的方法。

2.2 位姿图的优化

  • 位姿图优化的节点表示相机位姿,边是两个位姿节点之间相对运动的估计,该估计可以来自于特征点法或直接法,也可以来自GPS或IMU积分。
  • 假设我们估计了T_iT_j之间的一个运动\Delta T_{ij}。该运动表达可以是:\Delta \xi_{ij}=\xi^{-1}\circ \xi_j=ln(T_i^{-1}T_j)^{\vee},或按李群的写法:T_{ij}=T_i^{-1}T_j
  • 上述等式不会精确成立,因此我们设立最小二乘误差,讨论误差关于优化变量的导数。误差:e_{ij}=\Delta \xi_{ij}ln(T_{ij}^{-1}T_i^{-1}T_j)^{\vee}
  • e_{ij}对两个优化变量\xi_i,\xi_j的导数。\hat{e}_{ij}=e_{ij}+\frac{\partial e_{ij}}{\partial \delta \xi_i}\delta \xi_i+\frac{\partial e_{ij}}{\partial \delta \xi_j}\delta \xi_j
    • \frac{\partial e_{ij}}{\partial \delta \xi_i}=-J_r^{-1}(e_{ij})Ad(T_j^{-1})
    • \frac{\partial e_{ij}}{\partial \delta \xi_i}=J_r^{-1}(e_{ij})Ad(T_j^{-1})
    •  若误差接近0,左右雅可比可以近似为II+\frac{1}{2}\begin{bmatrix} \phi _e^{\wedge} & \rho _e^{\wedge}\\ 0 & \phi _e^{\wedge} \end{bmatrix}
  • 雅可比求导后,剩下就和普通图优化一样了。
  • 综上,所有位姿顶点和位姿-位姿边构成一个图优化,本质上是一个最小二乘问题,优化变量为各个顶点的位姿,边来自于位姿观测约束。记\varepsilon为所有边集合,则总体目标函数min\frac{1}{2}\sum_{i,j\in \varepsilon }^{}e_{ij}^T\sum_{ij}^{-1} e_{ij}。可以用高斯牛顿法或列文伯格-马夸尔特方法求解此问题。

3、实践:位姿图优化

3.1 g2o原生位姿图

g2o_viewer 在g2o/bin下未找到,未安装成功。安装libqglviewer-dev-qt5 后,重新安装g2o解决。参考以下文档
E: 软件包 libqglviewer-dev 没有可安装候选解决方法-CSDN博客

3.2 李代数上的位姿图优化

Sophus表达李代数,用到g2o中定义顶点和边。

运行代码时,误差大于书中描述误差,暂未查出具体原因?

3.3 小结

  • PTAM(Parallel Tracking and Mapping)提出以来,人们意识到后端优化没必要实时响应前端的图像数据,人们倾向于把前端后端分开,运行于两个独立线程之中,称为跟踪和建图。前端需要实时响应视频的速度,而优化不必,只要在优化完成时把结果返回前端即可。所有通常不会对后端提出很高的速度要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图纸安全管理措施有哪些?这九大措施全方位保护图纸安全

图纸安全管理措施是一个综合性的体系,旨在通过技术手段和管理措施确保图纸的机密性、完整性和可用性。以下是一些关键的图纸安全管理措施,以及软件安企神的应用。 一、保密协议与意识教育 签订保密协议:与所有接触图纸的员工签署保密协议&am…

计算方法——插值法程序实现二(牛顿法)

例题 给出的函数关系表,分别利用牛顿插值法计算的近似值。 0.10.20.30.40.51.1051711.2214031.3498591.4918251.648721 参考代码一:Python代码实现(自编码) import math """ :difference_quotient差商函数 &quo…

基于AppBuilder自定义组件开发大模型应用

AppBuilder简介: 如果大家不了解AppBuilder的话,可以先到这里了解一下: https://cloud.baidu.com/doc/AppBuilder/s/6lq7s8lli 一句话简介: 千帆AppBuilder(以下简称AppBuilder)是基于大模型搭建AI原生应…

MySQL进阶篇2

三、SQL优化 3.1 插入数据 批量插入推荐每次在 500 ~ 1000 条数据时进行使用。如果大于1000,可以考虑分批次进行插入。 大批量插入数据(100万、1000万) 主键顺序插入的性能比乱序要高 3.2 主键优化 数据组织方式 页分裂 主键顺序插入 主键乱序插入 页合并 (del…

计算机网络-VRRP工作原理

一、VRRP工作原理 前面我们大概了解了VRRP的一些基础概念,现在开始学习VRRP的技术原理。VRRP的选举及工作步骤: 确定网关地址 选举主备 主设备发送VRRP报文通知Backup设备 主设备响应终端ARP并维持在Master状态 终端正常发送报文到网关进行转发 因为我们…

计算机毕业设计Hadoop+PySpark共享单车预测系统 PyHive 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

《Hadoop共享单车分析与预测系统》开题报告 一、课题背景与意义 1.1 课题背景 随着共享经济的快速发展,共享单车作为一种新型绿色环保的共享经济模式,在全球范围内迅速普及。共享单车通过提供便捷的短途出行服务,有效解决了城市居民出行的…

网络安全服务基础Windows--第9节-DNS部署与安全

域名基础知识 域名是互联⽹上⽤来识别各种实体(如服务器、服务、⽹络)的可读名称。它是⼀种⽅便记忆的地址,⽤于代替IP地址,因为IP地址由数字组成,不容易记忆。域名通过⼀种层级结构的系统组织起来,从最⼀ …

以人口金字塔图为例,在线绘制左右双侧堆叠条形图

导读: 人口金字塔(population pyramids)用于展示一个特定人口的年龄和性别分布。本质上是一种水平条形图。左侧是男性的数据,右侧是女性的数据。 Proc Natl Acad Sci U S A.文章《Demographic change and assimilation in the ea…

电脑实时监控软件分享!一分钟速览,五个好用的实时屏幕监控软件(良心推荐)

"工欲善其事,必先利其器。"在信息化时代,企业管理的高效与安全离不开先进的工具支持。 电脑实时监控软件已是现代企业管理的重要利器,不仅能帮助管理者实时掌握员工的工作状态,还能有效防止数据泄露,确保信…

FLV封装H265

针对FLV格式,目前许多开源项目和常见的视频处理工具和流媒体服务器,仍主要支持H.264视频编码格式,尚未完全兼容H.265。ffmpeg和vlc都不支持H265编码格式的FLV,不知道后续版本会不会支持。RTMP也是用FLV格式传输音视频,…

CPP继承(下)

目录 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 单继承 多继承 菱形继承 菱形继承的问题 虚继承 虚拟继承解决数据冗余和二义性的原理 继承的总结和反思 笔试面试题 继承与友元 友元关系不能继承,也就是说基类友元不能访问子类私有和保护…

淘宝扭蛋机小程序开发,吸引更多的消费者

随着互联网科技的快速发展,小程序已经成为了一个必不可少的发展趋势。小程序具有门槛低、曝光度高、方便的优势,能够满足消费者的需求,还可以为企业商家带来更多的影响力,因此,扭蛋机小程序也成为了市场发展的重要力量…

Linux网络编程:守护进程

目录 1.会话 2.守护进程的特点 3.如何将一个进程变成守护进程 1.会话 在Linux下一个会话就是 终端文件 bash,会话就是人类和计算机沟通的窗口和解释器。 可以在xshell中新建立一个会话验证一下。 复制会话 使用 ls /dev/pts 命令,查看有几个终端文…

(Lane Deteciton-1)PersFormer

介绍 在自动驾驶中,下游模块如规划和控制通常需要将车道位置表示为正交的鸟瞰图(BEV)而不是前视图表示。使用BEV表示有助于更好地与环境中的交互式代理(如车辆、道路标志、交通灯等)对齐任务,并且与其他传…

tomato靶场通关

1、使用nmap扫描C段查找网址 2、使用dirb扫描目录 3、打开网站查看目录 4、发现一个info.php文件查看 5、查看源代码,发现文件包含漏洞 6、查看etc/passwd ,查看日志 7、写入一句话木马 8、使用蚁剑进行连接查看,可以使用终端

Vue 3 组合式 API

相比较 Vue.js 2.x 版本传统的方法组织形式, Vue.js 3.x 提出了组合式 API 的格式。本 章带领读者系统学习 Vue.js 3.x 新增的有关组合式 API 的知识。 本章主要涉及到如下知识。 组合式 API 与选项式 API 的语法区别。 在组合式 API 中使用生命周期…

从监控到智能:EasyCVR视频汇聚平台助力加油站安全监管升级转型

随着科技的不断进步,视频监控技术在各个行业的应用日益广泛,尤其在加油站这一关键领域,视频智能监管系统的应用显得尤为重要。TSINGSEE青犀视频EasyCVR视频汇聚平台作为一款基于“云-边-端”一体化架构的视频融合与AI智能分析平台&#xff0c…

guava中对Map的扩展数据结构

Multimap - 多值Map guava中的Multimap提供了将一个键映射到多个值的形式&#xff0c;使用起来无需定义复杂的内层集合&#xff0c;可以像使用普通的Map一样使用它&#xff0c;定义及放入数据如下&#xff1a; Multimap<String, Integer> multimap ArrayListMultimap.…

小琳Python课堂:Python高并发实现的基本原理(高阶版)

大家好&#xff0c;这里是小琳Python课堂&#xff01; 今天&#xff0c;我们将从高阶视角深入探讨Python高并发实现的基本原理&#xff0c;特别是线程安全性、线程同步和原子性这三个核心概念。这些概念对于构建复杂、高效的多线程应用程序至关重要。 线程安全性 首先&#x…

飞机制造5G智能工厂数字孪生工业物联平台,推进制造业数字化转型

飞机制造行业作为高端制造业的典范&#xff0c;正积极探索数字化转型的新路径。飞机制造5G智能工厂数字孪生工业物联平台&#xff08;以下简称“平台”&#xff09;的兴起&#xff0c;不仅为飞机制造业注入了强劲动力&#xff0c;更为整个制造业的数字化转型树立了新的标杆。 …