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

从零开始学习Slam--数学概念

正交矩阵

矩阵的转置等于它的逆矩阵,这样的矩阵称之为正交矩阵
即: Q T Q = I Q^T Q = I QTQ=I
这样的矩阵列向量都是单位向量两两正交

旋转矩阵属于特殊的正交群,即SO(n),这里n通常是3,所以SO(3)就是三维旋转矩阵的群。
行列式为1的正交矩阵构成SO(n),而行列式为-1的正交矩阵则可能包含反射变换 2 ^2 2。旋转不应该改变物体的手性,所以行列式必须是1。而 正交性保证了旋转时向量的长度和夹角不变 1 ^1 1,所以旋转矩阵必须是正交的,行列式1。

注释1:首先,正交性为什么能保证不拉伸或压缩物体呢?可能是因为正交矩阵作用于向量时,保持向量的长度不变。比如,如果有一个向量v,经过正交矩阵Q变换后的长度应该是v的原始长度。
数学上: ∣ ∣ Q v ∣ ∣ 2 = ( Q v ) T ( Q v ) = v T Q T Q v = v T v = ∣ ∣ v ∣ ∣ 2 ||Qv||² = (Qv)^T (Qv) = v^T Q^T Q v = v^T v = ||v||² ∣∣Qv2=(Qv)T(Qv)=vTQTQv=vTv=∣∣v2。所以长度确实不变。那夹角呢?
两个向量v和w的夹角由内积决定:
在这里插入图片描述
变换后的内积 ( Q v ) ⋅ ( Q w ) = v T Q T Q w = v T w (Qv)·(Qw) = v^T Q^T Q w = v^T w (Qv)(Qw)=vTQTQw=vTw,所以内积不变,夹角也不变。所以正交性确实保证了旋转操作不会改变长度和夹角,也就是不拉伸或压缩。

注释2 :之前在介绍旋转矩阵时讲过一个方法:“绕谁谁不变”,所以向量 [ a , b ] T [a,b]^T [a,b]T 绕x轴旋转之后变为 [ a , − b ] T [a,-b]^T [a,b]T,所以反射矩阵为 [ 1 0 0 − 1 ] \begin{bmatrix} 1&0 \\ 0&-1 \end{bmatrix} [1001],行列式的值为-1

行列式

计算方法

在这里插入图片描述
在这里插入图片描述

性质

  1. 矩阵是否可逆
    若det(A) ≠ 0,则矩阵 A 可逆(非奇异矩阵)。
    若det(A) = 0,则矩阵 A 不可逆(奇异矩阵)。

  2. 线性变换的几何意义
    行列式的绝对值表示矩阵对应线性变换对空间的体积缩放比例:
    二维矩阵:行列式是面积缩放因子。
    三维矩阵:行列式是体积缩放因子。例如,若 det(A) = 2, 则线性变换将原空间的体积放大2倍。

  3. 方向是否改变
    行列式的符号反映线性变换是否改变空间的方向:
    det(A) > 0 : 保持空间方向(如纯旋转)。
    det(A) < 0 : 反转空间方向(如镜像反射)。

  4. 矩阵的正交性与旋转
    正交矩阵(列向量为单位正交向量)的行列式值为 ±1.
    det(A) = 1: 对应旋转变换(如 SO(n) 群)。
    det(A) = -1: :包含反射变换(改变手性)。

  5. 特征值的乘积
    行列式等于矩阵所有特征值的乘积:
    det(A) = λ 1 ∗ λ 2 ∗ λ 3 ∗ λ 4 ∗ λ 5 . . . {\lambda }_{1}*{\lambda }_{2}*{\lambda }_{3}*{\lambda }_{4}*{\lambda }_{5}... λ1λ2λ3λ4λ5...

李群与李代数

李群

李群是同时具有光滑流形结构群结构的数学对象,群操作(乘法与取逆)是光滑的。例如:
SO(3):三维旋转矩阵群,元素是3×3正交矩阵,行列式为1。
SE(3):三维刚体变换群(旋转+平移),元素是4×4齐次变换矩阵。

光滑流形结构(Smooth Manifold Structure):流形是可以局部看作点组成的空间。而“光滑”意味着这个空间是处处平滑的,没有尖角或断点。也就是说,在流形上的每一点周围都可以找到一个局部,使得这部分在数学上可以和一个欧氏空间(例如平面在二维,或者三维空间)完全一致,而且这些局部映射是光滑的(平滑无突变)。简单来说,光滑流形就是一个处处可以进行微分运算的空间。

群结构(Group Structure):群是集合上定义了一种满足特定条件的二元运算(通常称为“乘法”,但不是字面意义上的乘法)的代数结构。这些条件包括:

  1. 封闭性:对于任意的群内元素 a 和 b,它们的运算结果 a * b 也必定属于这个群。
  2. 结合律:对于任意的群内元素 a, b, 和 c,恒有 ( a ∗ b ) ∗ c = a ∗ ( b ∗ c ) (a * b) * c = a * (b * c) (ab)c=a(bc)
  3. 运算封闭性下,群总包含一个单位元e,使得对于群内任意元素 a,恒有 a ∗ e = e ∗ a = a a * e = e * a = a ae=ea=a
  4. 对于群内任意元素 a,都存在一个逆元 a − 1 a^{-1} a1,使得 a ∗ a − 1 = a − 1 ∗ a = e a * a^{-1} = a^{-1} * a = e aa1=a1a=e。 简单来说,群结构是以一个集合和满足特定性质的运算为基础的代数结构。

群操作(Group Operation):在上面群结构的定义中,我们使用了“运算”这个词,指的是群内元素之间可以进行的某种操作。这种操作一般被称为群操作,它必须满足上面定义的群结构所要求的那几个条件(封闭性、结合律、包含单位元和逆元)。最直观的理解就是,给定群中的任意两个元素,它们经过群操作后得到的结果仍然是这个群的一个合法元素,而且这个操作需满足一系列的代数性质。

李代数(Lie Algebra)

李代数是与李群对应的向量空间,附加一个李括号运算(非交换的二元运算)。它描述了李群在单位元处的切空间,可以看作李群的局部线性近似。例如:
so(3):对应SO(3)的李代数,由3×3反对称矩阵组成(形式为 ω × {\omega }_{×} ω×,其中 ω ∈ R 3 {ω∈\mathbb{R}}^{3} ωR3)
se(3):对应SE(3)的李代数,包含平移和旋转分量,形式为 [ ρ , ω ] ⊤ ∈ R 6 [ρ,ω]^⊤∈\mathbb{R}^6 [ρ,ω]R6

李括号运算:
李括号运算(Lie bracket operation)是定义在李代数上的一个特定类型的二元运算,它反映了李代数与相关的李群之间的微分结构。具体来说,李括号运算是一个从李代数的两个元素到李代数的映射,记作 ([X, Y]),其中 (X) 和 (Y) 是李代数中的元素。
李括号运算有以下几个重要性质:

  • 双线性:对任意的元素 (X, Y, Z) 和标量 (a, b) (来自相关的标量域),有 [ [aX + bY, Z] = a[X, Z] + b[Y, Z] ] 和 [ [X, aY + bZ] = a[X, Y] + b[X, Z]. ]
  • 交错(反对称)性:对于任意的 (X),有 [ [X, X] = 0. ] 进一步推论出 ([X, Y] = -[Y, X])。
  • 雅可比恒等式:对于任意的 (X, Y, Z), 有 [ [[X, Y], Z] + [[Y, Z], X] + [[Z, X], Y] = 0 ]

李括号运算并不总是可交换的,也就是说,通常情况下 ( [ X , Y ] ≠ [ Y , X ] ) ([X, Y] \neq [Y,X]) ([X,Y]=[Y,X])。具体到李代数与李群之间的关系,李代数可以被看作李群在单位元(即李群的恒等元素)的切空间,李括号反映了李群上流形局部的非交换性,即群操作在局部上的非交换性质。将李群上的局部微分结构(通过切空间)转化为代数结构上的运算,李括号就是非常关键的形式化工具。

例如,在一般的线性李代数 ( g l ( n ) ) (\mathfrak{gl}(n)) (gl(n)) 中,李括号运算是由矩阵的换位子定义的,即对于两个 [ n n ] {[n \ n]} [n n] 矩阵 (A) 和 (B),定义李括号为: [ A , B ] = A B − B A [A, B] = AB - BA [A,B]=ABBA其中 (AB)被理解为矩阵乘法。这个交换子运算满足上述李括号的所有性质,并且可以明确表示两个算子在操作上的非交换性。

李群与李代数的相互转换

李群与李代数通过**指数映射(Exponential Map)和对数映射(Logarithmic Map)**相互转换:

指数映射:李代数 → 李群
在这里插入图片描述

  • a × {a}_{×} a× 是旋转轴单位向量 a 的反对称矩阵,θ 是旋转角度
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

对比一下之前多维矩阵旋转的罗德里格斯公式:
在这里插入图片描述
我们发现:矩阵形式的罗德里格斯公式在系数上进行了归一化处理,以适应矩阵指数的形式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

优化中的应用

无约束优化:在李代数空间中,旋转表示为3维向量 ω ∈ R 3 {ω∈\mathbb{R}}^{3} ωR3 ,无需正交性或行列式约束,可直接用梯度下降等算法优化。

更新步骤:每次优化迭代后,通过指数映射将李代数增量转换为李群(旋转矩阵),确保结果始终满足约束。

ps:暂停笔记,数学不好,脑容量有限

相关文章:

从零开始学习Slam--数学概念

正交矩阵 矩阵的转置等于它的逆矩阵&#xff0c;这样的矩阵称之为正交矩阵 即&#xff1a; Q T Q I Q^T Q I QTQI&#xff0c; 这样的矩阵列向量都是单位向量且两两正交。 旋转矩阵属于特殊的正交群&#xff0c;即SO(n)&#xff0c;这里n通常是3&#xff0c;所以SO(3)就是…...

【零基础到精通Java合集】第十五集:Map集合框架与泛型

课程标题:Map集合框架与泛型(15分钟) 目标:掌握泛型在Map中的键值类型约束,理解类型安全的键值操作,熟练使用泛型Map解决实际问题 0-1分钟:泛型Map的意义引入 以“字典翻译”类比泛型Map:明确键和值的类型(如英文→中文)。说明泛型Map的作用——确保键值对的类型一…...

从小米汽车召回看智驾“命门”:智能化时代 — 时间就是安全

2025年1月&#xff0c;小米因车辆“授时同步异常”召回3万余辆小米SU7&#xff0c;成为其造车历程中的首个重大安全事件。 从小米SU7召回事件剖析&#xff0c;授时同步何以成为智能驾驶的命门&#xff1f; 2024年11月&#xff0c;多名车主反馈SU7标准版的智能泊车辅助功能出现…...

Visual Studio Code 如何编写运行 C、C++ 程序

目录 安装 MinGW-w64 编译器&#xff08;推荐&#xff09;在 VS Code 中配置 C 开发环境 参考链接 在vs code上运行c脚本&#xff0c;报了下面的错误&#xff0c;我仅仅安装了vs code及在商店里下载了插件&#xff0c;其它配置操作没有做&#xff0c;直接对一个脚本进行运行&am…...

动静态库-Linux 学习

在软件开发中&#xff0c;程序库是一组预先编写好的程序代码&#xff0c;它们存储了常用的函数、变量和数据结构等。这些库可以帮助开发者节省大量的时间和精力&#xff0c;避免重复编写相同的代码。当我们在 Linux 系统中开发程序时&#xff0c;经常会用到两种类型的程序库&am…...

【Hudi-SQL DDL创建表语法】

CREATE TABLE 命令功能 CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。 命令格式 CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name[ (columnTypeList)]USING hudi[ COMMENT table_comment ][ LOCATION location_path ][ OPTIONS (options_lis…...

HTML label 标签使用

点击 <label> 标签通常会使与之关联的表单控件获得焦点或被激活。 通过正确使用 <label> 标签&#xff0c;可以使表单更加友好和易于使用&#xff0c;同时提高整体的可访问性。 基本用法 <label> 标签通过 for 属性与 id 为 username 的 <input> 元素…...

bge-large-zh-v1.5 与Pro/BAAI/bge-m3 区别

ge-large-zh-v1.5 和 Pro/BAAI/bge-m3 是两种不同的模型&#xff0c;主要区别在于架构、性能和应用场景。以下是它们的对比&#xff1a; 1. 模型架构 bge-large-zh-v1.5&#xff1a; 基于Transformer架构&#xff0c;专注于中文文本的嵌入表示。 参数量较大&#xff0c;适合处…...

JVM常用概念之对象初始化的成本

在JVM常用概念之新对象实例化博客中我讲到了对象的实例化&#xff0c;主要包含分配&#xff08;TLAB&#xff09;、系统初始化、用户初始化&#xff0c;而我在JVM常用概念之线程本地分配缓冲区&#xff08;ThreadLocal Allocation Buffer&#xff0c;TLAB&#xff09;博客中也讲…...

[AI机器人] Web-AI-Robot机器人前瞻版--比奇堡海之霸凯伦

文章目录 简述开源Web-AI-Robot 项目-比奇堡-海之霸-凯伦 技术架构效果预览 简述 本项目配合前端项目bikini_bottom_karen_ui运行&#xff0c;来源于柒杉工作室&#xff08;截止2025.2&#xff0c;目前我自己&#xff09;。 打造一个只需要在浏览器上运行的AI智能机器人&#…...

嵌入式学习-EXTI外部中断

STM32 是一种基于 ARM Cortex-M 内核的微控制器系列&#xff0c;广泛应用于嵌入式系统开发。中断&#xff08;Interrupt&#xff09;是 STM32 中一个非常重要的功能&#xff0c;它允许微控制器在执行主程序的同时&#xff0c;响应外部事件或内部事件的请求&#xff0c;从而实现…...

CSS—元素水平居中:2分钟掌握常用的水平居中

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–行内元素水平居中3–块级元素水平居中 2. 行内元素水平居中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" …...

PyTorch 中结合迁移学习和强化学习的完整实现方案

结合迁移学习&#xff08;Transfer Learning&#xff09;和强化学习&#xff08;Reinforcement Learning, RL&#xff09;是解决复杂任务的有效方法。迁移学习可以利用预训练模型的知识加速训练&#xff0c;而强化学习则通过与环境的交互优化策略。以下是如何在 PyTorch 中结合…...

大语言模型学习--本地部署DeepSeek

本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型&#xff08;LLM&#xff09;本地化部署与管理工具&#xff0c;旨在简化在本地计算机上运行和管理大语言模型…...

Linux:vim快捷键

Linux打开vim默认第一个模式是&#xff1a;命令模式&#xff01; 命令模式快捷键操作&#xff1a; gg&#xff1a;光标快速定位到最开始 shift g G&#xff1a;光标快速定位到最结尾 n shift g n G&#xff1a;光标快速定位到第n行 shift 6 ^&#xff1a;当前行开始 …...

Unity 对象池技术

介绍 是什么&#xff1f; 在开始时初始化若干对象&#xff0c;将它们存到对象池中。需要使用的时候从对象池中取出&#xff0c;使用完后重新放回对象池中。 优点 可以避免频繁创建和销毁对象带来性能消耗。 适用场景 如果需要对某种对象进行频繁创建和销毁时&#xff0c;例…...

算法1-4 凌乱的yyy / 线段覆盖

题目描述 现在各大 oj 上有 n 个比赛&#xff0c;每个比赛的开始、结束的时间点是知道的。 yyy 认为&#xff0c;参加越多的比赛&#xff0c;noip 就能考的越好&#xff08;假的&#xff09;。 所以&#xff0c;他想知道他最多能参加几个比赛。 由于 yyy 是蒟蒻&#xff0c…...

【计网】数据链路层

数据链路层 3.1 数据链路层概述3.2 封装成帧3.3 差错检测3.4 可靠传输3.4.1 可靠传输的概念3.4.2 可靠传输的实现机制 - 停止等待协议3.4.3 可靠传输的实现机制 -回退N帧协议3.4.4 可靠传输的实现机制 -选择重传协议 3.5 点对点协议3.5.1 帧格式3.5.2 透明传输 3.6 媒体接入控制…...

javaweb自用笔记:Vue

Vue 什么是vue vue案例 1、引入vue.js文件 2、定义vue对象 3、定义vue接管的区域el 4、定义数据模型data 5、定义视图div 6、通过标签v-model来绑定数据模型 7、{{message}}直接将数据模型message展示出来 8、由于vue的双向数据绑定&#xff0c;当视图层标签input里的…...

CSS Overflow 属性详解

CSS Overflow 属性详解 在网页设计和开发中,CSS Overflow 属性是一个非常重要的特性,它决定了当内容超出其容器大小时应该如何处理。本文将详细介绍 CSS Overflow 属性的相关知识,包括其语法、作用、常用属性值以及一些实际应用场景。 1. CSS Overflow 属性概述 CSS Over…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...