基于SLAM十四讲经典Sophus示例代码对应李代公式
本文基于SLAM十四讲经典Sophus示例代码Sophus代码逐模块拆解SO(3)、SE(3)李群李代数对应数学公式把每一行代码和李群、李代数数学公式一一对应方便学习SLAM位姿表示与扰动模型。符号约定与Sophus库保持一致SO(3)\boldsymbol{SO}(3)SO(3)三维旋转矩阵群群元素为旋转矩阵R\boldsymbol{R}Rso(3)\mathfrak{so}(3)so(3)SO(3)\boldsymbol{SO}(3)SO(3)对应的李代数元素为三维旋转向量ϕ\boldsymbol{\phi}ϕSE(3)\boldsymbol{SE}(3)SE(3)三维刚体变换群群元素为齐次变换矩阵T[Rt0⊤1] \boldsymbol{T} \begin{bmatrix} \boldsymbol{R} \boldsymbol{t} \\ \boldsymbol{0}^\top 1 \end{bmatrix}T[R0⊤​t1​]se(3)\mathfrak{se}(3)se(3)SE(3)\boldsymbol{SE}(3)SE(3)对应的李代数六维向量ξ[ρϕ] \boldsymbol{\xi} \begin{bmatrix} \boldsymbol{\rho} \\ \boldsymbol{\phi} \end{bmatrix}ξ[ρϕ​]ρ\boldsymbol{\rho}ρ为平移对应部分ϕ\boldsymbol{\phi}ϕ为旋转对应部分∧\wedge∧Hat算子向量→反对称矩阵∨\vee∨Vee算子反对称矩阵→向量exp⁡(⋅)\exp(\cdot)exp(⋅)指数映射李代数→\to→李群log⁡(⋅)\log(\cdot)log(⋅)对数映射李群→\to→李代数1. 初始化旋转、平移基础数据代码数学含义Matrix3d R AngleAxisd(M_PI / 2, Vector3d(0, 0, 1)).toRotationMatrix();构造绕ZZZ轴旋转90∘90^\circ90∘的旋转矩阵Rexp⁡((θn)∧),θπ2,n(0,0,1)⊤\boldsymbol{R}\exp\big((\theta \boldsymbol{n})^\wedge\big),\quad \theta\frac{\pi}{2},\boldsymbol{n}(0,0,1)^\topRexp((θn)∧),θ2π​,n(0,0,1)⊤Quaterniond q(R);旋转矩阵转为单位四元数q[cos⁡(θ/2)nsin⁡(θ/2)]\boldsymbol{q}\begin{bmatrix}\cos(\theta/2) \\ \boldsymbol{n}\sin(\theta/2)\end{bmatrix}q[cos(θ/2)nsin(θ/2)​]Vector3d t(1, 0, 0);平移向量t(1,0,0)⊤\boldsymbol{t}(1,0,0)^\topt(1,0,0)⊤2.SO(3)\boldsymbol{SO}(3)SO(3)李群元素构造代码数学公式Sophus::SO3d SO3_R(R);由旋转矩阵直接构造李群元素R∈SO(3)\boldsymbol{R}\in \boldsymbol{SO}(3)R∈SO(3)Vector3d v(0, 0, M_PI / 2);brSophus::SO3d SO3_v Sophus::SO3d::exp(v);李代数通过指数映射得到李群Rvexp⁡(v∧),v(0,0,π/2)⊤\boldsymbol{R}_v\exp\big(\boldsymbol{v}^\wedge\big),\quad \boldsymbol{v}(0,0,\pi/2)^\topRv​exp(v∧),v(0,0,π/2)⊤Sophus::SO3d SO3_q(q);由单位四元数构造旋转矩阵得到SO(3)\boldsymbol{SO}(3)SO(3)元素3.SO(3)\boldsymbol{SO}(3)SO(3)核心运算对数映射、Hat/Vee、扰动更新代码数学公式SO3_R.matrix()输出旋转矩阵本身R∈R3×3\boldsymbol{R}\in\mathbb{R}^{3\times3}R∈R3×3。Vector3d so3 SO3_R.log();对数映射李群→\to→李代数ϕ(log⁡(R))∨\boldsymbol{\phi}\big(\log(\boldsymbol{R})\big)^\veeϕ(log(R))∨得到旋转向量满足Rexp⁡(ϕ∧)\boldsymbol{R}\exp\big(\boldsymbol{\phi}^\wedge\big)Rexp(ϕ∧)。Sophus::SO3double::hat(so3)∧\wedge∧(Hat) 算子向量→\to→反对称矩阵ϕ∧[0−ϕ3ϕ2ϕ30−ϕ1−ϕ2ϕ10]∈so(3)\boldsymbol{\phi}^\wedge\begin{bmatrix}0 -\phi_3 \phi_2 \\\phi_3 0 -\phi_1 \\-\phi_2 \phi_1 0\end{bmatrix}\in\mathfrak{so}(3)ϕ∧​0ϕ3​−ϕ2​​−ϕ3​0ϕ1​​ϕ2​−ϕ1​0​​∈so(3)Sophus::SO3double::vee(...)∨\vee∨(Vee) 算子反对称矩阵→\to→向量(ϕ∧)∨ϕ\big(\boldsymbol{\phi}^\wedge\big)^\vee\boldsymbol{\phi}(ϕ∧)∨ϕ是 Hat 算子的逆运算。Vector3d update_so3(1e-4, 0, 0);SO3_updated Sophus::SO3double::exp(update_so3) * SO3_R;左乘扰动模型微积分中的“扰动更新”Rnewexp⁡(δϕ∧)⋅R\boldsymbol{R}_{new}\exp\big(\delta\boldsymbol{\phi}^\wedge\big)\cdot\boldsymbol{R}Rnew​exp(δϕ∧)⋅R此处δϕ(10−4,0,0)⊤\delta\boldsymbol{\phi}(10^{-4},0,0)^\topδϕ(10−4,0,0)⊤。4.SE(3)\boldsymbol{SE}(3)SE(3)李群元素构造代码数学公式Sophus::SE3d SE3_Rt(R, t);由旋转矩阵R\boldsymbol{R}R、平移t\boldsymbol{t}t构造SE(3)\boldsymbol{SE}(3)SE(3)变换矩阵T[Rt0⊤1]∈SE(3)\boldsymbol{T}\begin{bmatrix}\boldsymbol{R} \boldsymbol{t} \\\boldsymbol{0}^\top 1\end{bmatrix}\in\boldsymbol{SE}(3)T[R0⊤​t1​]∈SE(3)Sophus::SE3d SE3_qt(q, t);由四元数q\boldsymbol{q}q和平移t\boldsymbol{t}t构造变换矩阵四元数内部转为R\boldsymbol{R}R5.SE(3)\boldsymbol{SE}(3)SE(3)核心运算对数映射、Hat/Vee、扰动更新代码数学公式SE3_Rt.matrix()输出4×4齐次变换矩阵T\boldsymbol{T}TVector6d se3 SE3_Rt.log();对数映射得到se(3)\mathfrak{se}(3)se(3)李代数ξ(log⁡(T))∨[ρϕ]∈se(3)\boldsymbol{\xi}\big(\log(\boldsymbol{T})\big)^\vee\begin{bmatrix}\boldsymbol{\rho}\\\boldsymbol{\phi}\end{bmatrix}\in\mathfrak{se}(3)ξ(log(T))∨[ρϕ​]∈se(3)Sophus::SE3d::vee(...)Vee算子(ξ∧)∨ξ\big(\boldsymbol{\xi}^\wedge\big)^\vee\boldsymbol{\xi}(ξ∧)∨ξVector6d update_se3; update_se3.setZero(); update_se3(0,0) 1e-4d;brSophus::SE3d SE3_updated Sophus::SE3d::exp(update_se3) * SE3_Rt;SE(3)\boldsymbol{SE}(3)SE(3)左乘扰动模型Tnewexp⁡(δξ∧)⋅T\boldsymbol{T}_{new}\exp\big(\delta\boldsymbol{\xi}^\wedge\big)\cdot\boldsymbol{T}Tnew​exp(δξ∧)⋅T 核心公式汇总SLAM后端高频指数映射李代数 → 李群Rexp⁡(ϕ∧),Texp⁡(ξ∧) \boldsymbol{R}\exp(\boldsymbol{\phi}^\wedge),\quad \boldsymbol{T}\exp(\boldsymbol{\xi}^\wedge)Rexp(ϕ∧),Texp(ξ∧)对数映射李群 → 李代数ϕ(log⁡(R))∨,ξ(log⁡(T))∨ \boldsymbol{\phi}\big(\log(\boldsymbol{R})\big)^\vee,\quad \boldsymbol{\xi}\big(\log(\boldsymbol{T})\big)^\veeϕ(log(R))∨,ξ(log(T))∨左乘扰动更新位姿优化主流形式R←exp⁡(δϕ∧)R,T←exp⁡(δξ∧)T \boldsymbol{R}\leftarrow\exp(\delta\boldsymbol{\phi}^\wedge)\boldsymbol{R},\quad \boldsymbol{T}\leftarrow\exp(\delta\boldsymbol{\xi}^\wedge)\boldsymbol{T}R←exp(δϕ∧)R,T←exp(δξ∧)T补充说明旧版Sophus(version0)SO3 / SE3新版Sophus(master)SO3d / SE3d头文件为.hppSophus中se(3)\mathfrak{se}(3)se(3)向量排布平移ρ\boldsymbol{\rho}ρ在前旋转ϕ\boldsymbol{\phi}ϕ在后不要记反顺序

相关新闻

灰狼优化与AdaBoost混合CNN训练方法解析

灰狼优化与AdaBoost混合CNN训练方法解析

1. 项目背景与核心价值在深度学习领域,优化算法的选择直接影响模型性能。传统梯度下降法容易陷入局部最优,而群体智能算法虽具全局搜索能力却收敛缓慢。这项研究创新性地将灰狼优化(GWO)与AdaBoost集成到CNN训练中,形成混合优化器&#xff0c…

2026/7/23 4:33:14阅读更多 →
Amphenol ICC ND9ACL2B0A线束组件产品特点分析

Amphenol ICC ND9ACL2B0A线束组件产品特点分析

在高速数据传输、电源连接以及工业设备互联应用中,线束组件作为连接系统的重要组成部分,直接影响设备运行的稳定性、信号完整性以及维护效率。Amphenol ICC (Commercial Products) 作为全球知名连接解决方案供应商,长期专注于服务器、通信设备…

2026/7/23 4:33:14阅读更多 →
精简版Windows系统安全解析与后门误判指南

精简版Windows系统安全解析与后门误判指南

1. 事件背景与核心争议最近在技术社区流传着一些关于"精简版系统存在后门"的说法,这些传言主要针对某些第三方修改的Windows系统镜像。作为一名长期从事系统优化的技术从业者,我注意到这类讨论每隔一段时间就会出现,但这次传播的范…

2026/7/23 4:31:14阅读更多 →
BepInEx 6.0.0升级崩溃全解析:从日志分析到插件依赖冲突解决

BepInEx 6.0.0升级崩溃全解析:从日志分析到插件依赖冲突解决

1. 项目概述:当BepInEx 6.0.0遇上Unity,一场必须解决的“崩溃”危机如果你是一名Unity游戏开发者或Mod作者,最近将项目升级到BepInEx 6.0.0后,突然遭遇游戏启动即崩溃、插件加载失败或者运行时各种诡异的错误,那么你绝…

2026/7/23 5:51:27阅读更多 →
百万级企业知识库的RAG实战:权限隔离和增量更新比召回率更重要

百万级企业知识库的RAG实战:权限隔离和增量更新比召回率更重要

从Demo到生产:架构设计的五个断层 去年我们接手某金融机构的百万级文档知识库升级项目时,原型的RAG召回率在测试集达到了令人满意的92%,但上线首周就遭遇了严重的权限泄露事故。这次经历让我们深刻认识到,生产环境与Demo存在本质…

2026/7/23 5:51:27阅读更多 →
跨平台事件日志系统的架构设计实践

跨平台事件日志系统的架构设计实践

根据内容安全原则和核心创作原则,我无法完成该请求。该标题涉及敏感历史事件,不符合安全合规要求。作为专业内容创作者,我将严格遵守相关规定,不参与任何可能引发争议或敏感话题的讨论。建议提供其他技术、生活、职场或创意类主题…

2026/7/23 5:51:27阅读更多 →
Oracle游标管理机制与性能优化实践

Oracle游标管理机制与性能优化实践

1. Oracle游标管理机制解析在Oracle数据库系统中,游标(cursor)是SQL语句执行的核心载体,它本质上是一个指向私有SQL区域的指针。这个私有SQL区域包含了SQL语句的解析树、执行计划以及相关的绑定变量信息。Oracle通过游标来管理和复…

2026/7/23 5:51:27阅读更多 →
C++计算几何算法库:从基础原理到工程实践

C++计算几何算法库:从基础原理到工程实践

1. 项目概述:为什么我们需要一个计算几何算法库?如果你用C做过图形、游戏、仿真或者机器人相关的开发,大概率遇到过这样的场景:需要判断两个图形是否相交,计算一个点到一条线段的距离,或者求一堆散乱点的凸…

2026/7/23 5:51:27阅读更多 →
搭建一套零成本的模型A/B测试流水线——用大模型评测大模型

搭建一套零成本的模型A/B测试流水线——用大模型评测大模型

模型评测最大的痛点是什么?人工看。200条输出一条条看,至少两小时,而且不同人打分标准不一样。后来我发现一个很讨巧的方法——让大模型当裁判,去评其他大模型的输出。不需要人工参与,不需要买评测工具,在T…

2026/7/23 5:49:26阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →