当前位置: 首页 > news >正文

SLAM中的非线性优-3D图优化之相对位姿g2o::EdgeSE3Expmap(十)

本讲总结下g2o中实现的相对位姿约束,本节主要还是参考了“白巧克力亦唯心”的那篇博客,尊重下原创,当然个人对g2o的代码风格不太喜欢,并且时间有限,因此这里只是展示下,不做代码验证,依然沿用之前的图进行说明

一. 基础知识

Ethan Eade的《Lie Groups for 2D and 3D Transformations》,发现他的文档早已有相关推导。比如针对两个SO3乘积对其中一个求导:

上面这两个推导都利用了伴随矩阵(adjoint)的性质。这部分内容在Ethan Eade的文档中有阐述,也可参考Strasdat博士论文2.4.7节的定义:

以及

利用该性质可以交换二者的乘法顺序(左乘变为右乘),这在求导时非常有用。同理可得其变体形式:

二. EdgeSE3Expmap边分析

新版貌似不在那个文件下了,不过问题不大

void computeError() { const VertexSE3Expmap* v1 = static_cast<const VertexSE3Expmap*>(_vertices[0]); const VertexSE3Expmap* v2 = static_cast<const VertexSE3Expmap*>(_vertices[1]); SE3Quat C(_measurement); SE3Quat error_= v2->estimate().inverse()*C*v1->estimate(); _error = error_.log(); }

void EdgeSE3Expmap::linearizeOplus() { VertexSE3Expmap * vi = static_cast<VertexSE3Expmap *>(_vertices[0]); SE3Quat Ti(vi->estimate()); VertexSE3Expmap * vj = static_cast<VertexSE3Expmap *>(_vertices[1]); SE3Quat Tj(vj->estimate()); //注意这里把测量标记为Tij应该是标记错误了,应该是Tji,不然整个误差公式说不通了 //这个可以看orbslam EdgeSim3里添加测量时就是用的Sji const SE3Quat & Tij = _measurement; // shoulb be Tji SE3Quat invTij = Tij.inverse(); SE3Quat invTj_Tij = Tj.inverse()*Tij; SE3Quat infTi_invTij = Ti.inverse()*invTij; _jacobianOplusXi = invTj_Tij.adj(); _jacobianOplusXj = -infTi_invTij.adj(); }

总结

本节博客主要总结,收集相关理论,并非个人原创,因为本博客系列是以后端优化为背景介绍的,虽然个人不太愿意完全参考别人的博客,但出于完整性考虑,此处还是搬运下,也作为以后的工具可查询。

http://www.cnnetsun.cn/news/42029.html

相关文章:

  • COMSOL模拟锌离子电池锌负极电场模型教程:从零开始构建并详细解析源文件,适合初学者的电场建模教学
  • 终极指南:如何用PIKE-RAG打造领域专属的智能问答系统
  • 5分钟从文档小白到OCR专家:Zerox如何让文字识别变得像拍照一样简单
  • RocketMQ如何防止消息丢失?
  • CSS尺寸、盒子模型、定位、浮动与布局(Flex/Grid)
  • 《构建游戏实时流失预警模型的核心逻辑》
  • 两个步骤,打包war,tomcat使用war包
  • idea修改maven的刷新引入依赖快捷键
  • 纯电动汽车Simulink仿真模型建模详细步骤。 通过文档的形式,跟着文档一步一步操作,既可以...
  • 同花顺平衡多空看图操作多空理论
  • 通达信222222测试帖别下载
  • 通达信大盘个股共振指标公式
  • 这些核心特征,让芯片散料转编带设备成行业刚需
  • ~给媳妇的新称呼~
  • java计算机毕业设计社区服务微信小程序 基于微信生态的社区便民服务平台 SpringBoot+微信小程智慧社区服务系统
  • SynthPose-VitPose终极部署指南:从零到精通的人体姿态估计实战
  • DataEase vs PowerBI:当数据分析遇见选择困难症,你该如何破局?
  • android 之 AAudio
  • anoconda简单操作
  • 多场景头盔佩戴检测
  • 70看看:AI如何帮你快速生成代码项目
  • 13、Puppet 模块与类:从基础到高级应用
  • JBoltAI 识图阅卷:AI 赋能教育考评,开启智能阅卷新时代
  • 16、模板与容器管理:Puppet 实践全解析
  • MinGW-w64实战:从下载到编译第一个C++项目
  • 分享英飞凌晶闸管模块:浪涌防护解决方案
  • 日拱一卒之Wirtinger 导数
  • GG3M 前沿项目:组织架构与核心管理团队解析 | Analysis of Organizational Structure and GG3M Core Management Team
  • 产学研融合:智慧农业的创新密码
  • Visual C++运行库入门指南:从安装到故障排除