news 2026/7/24 7:13:26

基于SLAM十四讲经典Sophus示例代码对应李代公式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于SLAM十四讲经典Sophus示例代码对应李代公式

本文基于SLAM十四讲经典Sophus示例代码

Sophus代码逐模块拆解:SO(3)、SE(3)李群李代数对应数学公式
把每一行代码和李群、李代数数学公式一一对应,方便学习SLAM位姿表示与扰动模型。

符号约定(与Sophus库保持一致)

  • SO(3)\boldsymbol{SO}(3)SO(3):三维旋转矩阵群,群元素为旋转矩阵R\boldsymbol{R}R
  • so(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=[R0t1]
  • 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的旋转矩阵:R=exp⁡((θ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)^\topR=exp((θ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)RSO(3)
Vector3d v(0, 0, M_PI / 2);<br>Sophus::SO3d SO3_v = Sophus::SO3d::exp(v);李代数通过指数映射得到李群:Rv=exp⁡(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}RR3×3
Vector3d so3 = SO3_R.log();对数映射(李群→\to李代数):
ϕ=(log⁡(R))∨\boldsymbol{\phi}=\big(\log(\boldsymbol{R})\big)^\veeϕ=(log(R))(得到旋转向量),满足R=exp⁡(ϕ∧)\boldsymbol{R}=\exp\big(\boldsymbol{\phi}^\wedge\big)R=exp(ϕ)
Sophus::SO3<double>::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ϕ30ϕ1ϕ2ϕ10so(3)
Sophus::SO3<double>::vee(...)∨\vee(Vee) 算子(反对称矩阵→\to向量):
(ϕ∧)∨=ϕ\big(\boldsymbol{\phi}^\wedge\big)^\vee=\boldsymbol{\phi}(ϕ)=ϕ
是 Hat 算子的逆运算。
Vector3d update_so3(1e-4, 0, 0);
SO3_updated = Sophus::SO3<double>::exp(update_so3) * SO3_R;
左乘扰动模型(微积分中的“扰动更新”):
Rnew=exp⁡(δϕ∧)⋅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δϕ=(104,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=[R0t1]SE(3)
Sophus::SE3d SE3_qt(q, t);由四元数q\boldsymbol{q}q和平移t\boldsymbol{t}t构造变换矩阵(四元数内部转为R\boldsymbol{R}R

5.SE(3)\boldsymbol{SE}(3)SE(3)核心运算:对数映射、Hat/Vee、扰动更新

代码数学公式
SE3_Rt.matrix()输出4×4齐次变换矩阵T\boldsymbol{T}T
Vector6d 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;<br>Sophus::SE3d SE3_updated = Sophus::SE3d::exp(update_se3) * SE3_Rt;SE(3)\boldsymbol{SE}(3)SE(3)左乘扰动模型:Tnew=exp⁡(δξ∧)⋅T\boldsymbol{T}_{new}=\exp\big(\delta\boldsymbol{\xi}^\wedge\big)\cdot\boldsymbol{T}Tnew=exp(δξ)T

💎 核心公式汇总(SLAM后端高频)

  1. 指数映射(李代数 → 李群)
    R=exp⁡(ϕ∧),T=exp⁡(ξ∧) \boldsymbol{R}=\exp(\boldsymbol{\phi}^\wedge),\quad \boldsymbol{T}=\exp(\boldsymbol{\xi}^\wedge)R=exp(ϕ),T=exp(ξ)
  2. 对数映射(李群 → 李代数)
    ϕ=(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))
  3. 左乘扰动更新(位姿优化主流形式)
    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}Rexp(δϕ)R,Texp(δξ)T

补充说明:

  1. 旧版Sophus(version0):SO3 / SE3;新版Sophus(master):SO3d / SE3d,头文件为.hpp
  2. Sophus中se(3)\mathfrak{se}(3)se(3)向量排布:平移ρ\boldsymbol{\rho}ρ在前,旋转ϕ\boldsymbol{\phi}ϕ在后,不要记反顺序!
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 4:31:04

VSEARCH实战指南:微生物组数据分析的高效开源解决方案

1. 项目概述&#xff1a;为什么VSEARCH值得你投入时间&#xff1f;如果你正在或即将踏入微生物组研究领域&#xff0c;无论是处理16S rRNA扩增子测序数据&#xff0c;还是ITS、18S等其他标记基因&#xff0c;数据处理的效率和准确性永远是第一道坎。几年前&#xff0c;我们可能…

作者头像 李华
网站建设 2026/7/23 4:30:55

招聘软件收费模式背后的技术栈选型:C++、Java与Rust的实战解析

1. 项目概述&#xff1a;招聘软件收费模式的技术与商业逻辑最近和几个做技术招聘的朋友聊天&#xff0c;大家普遍有个感觉&#xff1a;市面上的招聘软件&#xff0c;无论是面向企业的SaaS平台&#xff0c;还是面向开发者的垂直社区&#xff0c;收费模式越来越多样&#xff0c;但…

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

别再给 Coding Agent 手搓工具封装:用 QVeris 搭一个开发者自动化 Agent

现在的 Coding Agent 已经很会写代码了&#xff0c;但一旦任务离开本地仓库&#xff0c;它的能力就会迅速缩水&#xff1a;查最新 API 文档、研究陌生报错、核对依赖兼容性、查询服务状态、整理 Issue 上下文……这些工作都需要访问真实的外部工具和数据。 问题在于&#xff0…

作者头像 李华
网站建设 2026/7/23 4:28:52

跨域AI训练通信优化:从QUIC协议到零拷贝的实战方案

1. 项目概述&#xff1a;当AI训练遇上跨域通信的“硬骨头” 最近两年&#xff0c;AI模型训练的规模越来越大&#xff0c;从单机多卡到数据中心级集群&#xff0c;再到如今火热的跨地域、跨机构联合训练&#xff0c;数据不再乖乖地躺在一个机房。想象一下&#xff0c;你在北京的…

作者头像 李华
网站建设 2026/7/23 4:27:44

专科生AI论文写作工具对比:千笔与灵感风暴实战评测

1. 项目背景与需求解析"2026冲刺用&#xff01;更贴合专科生需求的AI论文写作软件"这个标题背后反映的是当前高等教育领域一个非常实际的需求痛点。作为一名在学术写作辅导领域工作多年的从业者&#xff0c;我亲眼见证了专科生在论文写作过程中面临的独特挑战。专科层…

作者头像 李华
网站建设 2026/7/23 4:26:36

词根词缀解析 —— 鸿蒙AI智能助手开发全流程解析

✨ 词根词缀解析 —— 鸿蒙AI智能助手开发全流程解析 分类&#xff1a; 学习成长 | 应用编号&#xff1a; App27 | 平台&#xff1a; HarmonyOS NEXT 关键词&#xff1a; 鸿蒙、鸿蒙PC、鸿蒙Flutter框架、AI应用、ArkTS、HarmonyOS NEXT 摘要&#xff1a; 本文基于词根词缀解析…

作者头像 李华