news 2026/5/5 18:57:10

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/4/22 16:50:44

Slim模板引擎终极指南:如何快速构建SEO友好的网页

Slim模板引擎终极指南&#xff1a;如何快速构建SEO友好的网页 【免费下载链接】slim Slim is a template language whose goal is to reduce the syntax to the essential parts without becoming cryptic. 项目地址: https://gitcode.com/gh_mirrors/sli/slim Slim是一…

作者头像 李华
网站建设 2026/4/29 8:02:32

8051U深度入门到32位51大型实战

上面描述&#xff0c;跟前期USB不停电下载程序的差异&#xff0c; 进步是省去了几行代码&#xff0c;程序更简洁了【USB 下载方法 一&#xff0c;P3.2 按键&#xff0c;再结合停电上电 进自带USB直接下载】 1、按下板子上的 P3.2/INT0 按键&#xff0c;就是 P3.2 接地 2、给目标…

作者头像 李华
网站建设 2026/5/4 7:41:59

YashanDB数据库的分布式事务处理与性能调优指南

当前数据库系统面临着性能瓶颈和数据一致性难以兼顾的普遍挑战&#xff0c;尤其是在大规模分布式环境下&#xff0c;事务的管理和性能的优化愈加复杂。YashanDB作为一种具备多种部署形态&#xff08;单机部署、分布式部署及共享集群部署&#xff09;和多存储结构&#xff08;堆…

作者头像 李华
网站建设 2026/5/4 22:21:38

JavaEE进阶——SpringAOP从入门到源码全解析

目录 Spring AOP 超详细入门教程&#xff1a;从概念到源码 写给新手的话 1. AOP基础概念&#xff08;先理解思想&#xff09; 1.1 什么是AOP&#xff1f;&#xff08;生活化理解&#xff09; 1.2 AOP核心术语&#xff08;必须掌握&#xff09; 2. Spring AOP快速入门&…

作者头像 李华
网站建设 2026/5/1 19:10:18

SolidWorks装配体与装配图区别介绍

SolidWorks中的“装配体”和“装配图”是两个核心但常被混淆的概念&#xff0c;它们分别处于三维设计流程和二维工程制图两个不同但紧密关联的阶段。深入理解其区别与联系&#xff0c;是掌握现代机械设计流程的关键。 一、核心区别概览 特性维度 装配体​ 装配图​ 本质​ …

作者头像 李华