news 2026/6/22 15:58:52

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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(); }

总结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 8:29:22

Hdlbits

HDLBits 入门必刷50题&#xff08;Verilog 带注释功能说明&#xff09;以下题目按“组合逻辑→时序逻辑→状态机→工程模块”梯度排序&#xff0c;每道题含核心考点、完整代码及关键注释&#xff0c;可直接复制到 HDLBits 提交验证&#xff0c;也能本地仿真复用。一、组合逻辑基…

作者头像 李华
网站建设 2026/6/14 20:16:35

EtherCAT 逐帧报文解析:EEPROM 读取与配置阶段

主站采用 APRD&#xff08;定点读&#xff09;、APWR&#xff08;定点写&#xff09;指令替代广播指令&#xff0c;实现对单个从站的精准操作。1、APRD 定点读机制说明&#xff1a;访问特性&#xff1a;非统一批量读取&#xff0c;为定点访问模式&#xff1b;从站 adp 地址范围…

作者头像 李华
网站建设 2026/6/20 17:49:34

风-储系统仿真模型;通过模糊逻辑控制策略驱动蓄电池变换器运行,以达到为电网提供惯量的目的

风-储系统仿真模型&#xff1b;通过模糊逻辑控制策略驱动蓄电池变换器运行&#xff0c;以达到为电网提供惯量的目的。 可以实现功率平滑输出在能源转型的大背景下&#xff0c;风能作为一种重要的可再生能源&#xff0c;因其清洁、无污染的特点受到广泛关注。然而&#xff0c;风…

作者头像 李华
网站建设 2026/6/20 6:53:21

async/await 的原理

基础问答问&#xff1a;async/await 的原理是什么&#xff1f;答&#xff1a;关键字本身就是 Promise 的语法糖&#xff0c;依托于生成器函数 &#xff08;Generator&#xff09; 函数能力实现的。async 关键字标志这个函数为异步函数&#xff0c;并且将返回结果封装为一个 Pro…

作者头像 李华
网站建设 2026/6/19 7:12:27

Flutter 应用保活与后台任务:在 OpenHarmony 上实现定时上报

前言 在 OpenHarmony 生态中&#xff0c;许多应用场景&#xff08;如健康监测、设备状态上报、位置追踪&#xff09;要求应用即使在退到后台或屏幕关闭后&#xff0c;仍能周期性执行任务。然而&#xff0c;出于系统资源与电池优化的考虑&#xff0c;OpenHarmony 对后台进程有严…

作者头像 李华