视觉SLAM第三讲

news2024/9/26 3:28:36

本讲将介绍视觉 SLAM 的基本问题之一:三维空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角。

点、向量和坐标系

  • 点:空间当中的基本元素,没有长度,没有体积。

  • 向量:可以将向量看作从一个点指向另一个点的箭头,它是空间中的一个实体。向量不同于坐标,只有在指定了三维空间中的某个坐标系后,才能讨论该向量在此坐标系下的坐标,即通过若干个实数来表示这个向量。

向量内积:

a ⋅ b = a T b = ∑ i = 1 3 a i b i = ∣ a ∣ ∣ b ∣ cos ⁡ ⟨ a , b ⟩ \boldsymbol{a} \cdot \boldsymbol{b}=\boldsymbol{a}^{\mathrm{T}} \boldsymbol{b}=\sum_{i=1}^{3} a_{i} b_{i}=|\boldsymbol{a}||\boldsymbol{b}| \cos \langle\boldsymbol{a}, \boldsymbol{b}\rangle ab=aTb=i=13aibi=a∣∣bcosa,b

向量外积:

在这里插入图片描述

反对称矩阵:

a ∧ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] \boldsymbol{a}^{\wedge}=\left[\begin{array}{ccc}0 & -a_{3} & a_{2} \\a_{3} & 0 & -a_{1} \\-a_{2} & a_{1} & 0\end{array}\right] a= 0a3a2a30a1a2a10

坐标系间的欧式变换:

通过坐标系欧式变换(旋转+平移)表征刚体运动是一种常见的方法。

在实际场景中,我们通常定义各种坐标系。例如,在机器人学中,每个连杆和关节都有自己的坐标系。如果考虑移动的机器人,通常设定一个固定的世界坐标系,同时相机或机器人自身则是一个移动坐标系。刚体坐标系相对于参考坐标系的变换,即是其局部定位的过程。

旋转矩阵的性质:

  1. 正交性

    旋转矩阵是一个正交矩阵,这意味着它的列向量(或行向量)是正交的,并且都是单位向量。 R T R = R R T = I , R − 1 = R T \mathbf{R}^T \mathbf{R} = \mathbf{R} \mathbf{R}^T = \mathbf{I},\mathbf{R}^{-1} = \mathbf{R}^T RTR=RRT=IR1=RT

  2. 行列式为1

    det ⁡ ( R ) = 1 \det(\mathbf{R}) = 1 det(R)=1,旋转矩阵保持向量的长度(或范数)不变, ∣ ∣ R v ∣ ∣ = ∣ ∣ v ∣ ∣ ||\mathbf{R} \mathbf{v}|| = ||\mathbf{v}|| ∣∣Rv∣∣=∣∣v∣∣(矩阵的范数等于自身的内积平方根)。

变换矩阵与齐次坐标

a ′ = R a + t \boldsymbol{a}'=\boldsymbol{Ra}+\boldsymbol{t} a=Ra+t

该公式完整地表达了欧氏空间的旋转与平移,不过还存在一个小问题:这里的变换关系不是一个线性关系。假设我们进行了两次变换:

b = R 1 a + t 1 , c = R 2 b + t 2 \boldsymbol{b}=\boldsymbol{R_{1} a}+\boldsymbol{t_{1} },\boldsymbol{c}=\boldsymbol{R_{2} b}+\boldsymbol{t_{2} } b=R1a+t1c=R2b+t2

那么,从 a \boldsymbol{a} a c \boldsymbol{c} c的变换为:

c = R 2 ( R 1 a + t 1 ) + t 2 \boldsymbol{c}=\boldsymbol{R_{2}(\boldsymbol{R_{1} a}+\boldsymbol{t_{1} })}+\boldsymbol{t_{2} } c=R2(R1a+t1)+t2

这样的形式在变换多次之后会显得很啰嗦。因此,我们引入齐次坐标和变换矩阵:

[ a ′ 1 ] = [ R t 0 T 1 ] [ a 1 ] ≜ T [ a 1 ] \left[\begin{array}{l}\boldsymbol{a}^{\prime} \\1\end{array}\right]=\left[\begin{array}{ll}\boldsymbol{R} & \boldsymbol{t} \\\mathbf{0}^{\mathrm{T}} & 1\end{array}\right]\left[\begin{array}{l}\boldsymbol{a} \\1\end{array}\right] \triangleq \boldsymbol{T}\left[\begin{array}{l}\boldsymbol{a} \\1\end{array}\right] [a1]=[R0Tt1][a1]T[a1]

这是一个数学技巧:我们在一个三维向量的末尾添加1,将其变成了四维向量,称为齐次坐标。对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成线性关系。该式中,矩阵 T \mathbf{T} T称为变换矩阵(Transform Matrix)。

在不引起歧义的情况下,以后我们就直接把它写成 b = T a \mathbf{b} =\mathbf{Ta} b=Ta的样子,默认其中进行了齐次坐标的转换。

旋转向量和四元数

旋转向量

矩阵表示方式至少有以下几个缺点:

  1. 旋转矩阵有9个量,但一次旋转只有3个自由度。因此这种表达方式冗余的。同理,变换矩阵用16个量表达了6自由度的变换。那么,是否有更紧凑的表示呢?
  2. 旋转矩阵自身带有约束:它必须是个正交矩阵,且行列式为1。变换矩阵也是如此。当想要估计或优化一个旋转矩阵/变换矩阵时,这些约束会使得求解变得更困难

一种紧凑地描述旋转的方式:任意旋转都可以用一个旋转轴和一个旋转角来刻画。

于是,我们可以使用一个向量,其方向与旋转轴一致,而长度等于旋转角。这种向量称为旋转向量(或轴角/角轴,Axis-Angle),只需一个三维向量即可描述旋转。

假设旋转轴为一个单位长度的向量 n \mathbf{n} n,角度为 θ \mathbf{\theta } θ,那么向量 θ n \mathbf{\theta n} θn也可以描述这个旋转,从旋转向量到旋转矩阵的转换过程由罗德里格斯公式:

R = cos ⁡ θ I + ( 1 − cos ⁡ θ ) n n T + sin ⁡ θ n ∧ \boldsymbol{R}=\cos \theta \boldsymbol{I}+(1-\cos \theta) \boldsymbol{n} \boldsymbol{n}^{\mathrm{T}}+\sin \theta \boldsymbol{n}^{\wedge} R=cosθI+(1cosθ)nnT+sinθn

反之,我们也可以计算从一个旋转矩阵到旋转向量的转换。对于转角 θ \mathbf{\theta } θ,取两边的迹,有:

在这里插入图片描述

因此:

θ = arccos ⁡ ( t r ( R ) − 1 2 ) \theta =\arccos (\frac{\mathbf{tr}(R)-1 }{2} ) θ=arccos(2tr(R)1)

关于转轴 n \mathbf{n} n,由于旋转轴上的向量在旋转后不发生改变,说明:

R n = n Rn=n Rn=n

因此,转轴 n \mathbf{n} n是矩阵 R \mathbf{R} R特征值1对应的特征向量。求解此方程,再归一化,就得到了旋转轴。

四元数

四元数的定义

四元数 q q q通常表示为 q = w + x i + y j + z k q=w+xi+yj+zk q=w+xi+yj+zk,其中 w , x , y , z w,x,y,z w,x,y,z是实数, i , j , k i,j,k i,j,k是虚单位,满足以下乘法规则:

i 2 = j 2 = k 2 = i j k = − 1 i^{2} =j^{2} =k ^{2} =ijk=−1 i2=j2=k2=ijk=1

四元数可以用向量形式表示为:

q = ( w , v ) q=(w,\mathbf{v} ) q=(w,v)

其中 w w w是标量部分, v = ( x , y , z ) v=(x,y,z) v=(x,y,z)是向量部分。

四元数表示旋转

四元数可以有效地表示三维空间中的旋转。给定旋转轴 u \mathbf{u} u和旋转角度 θ θ θ,我们可以构造一个四元数 q q q来表示旋转:

q = c o s ( θ 2 ​ ) + s i n ( θ 2 ) ( u ⋅ i ) q=\mathrm{cos} ( \frac{\theta}{2} ​)+\mathrm{sin} (\frac{\theta}{2})(\mathbf{u} ⋅\mathbf{i} ) q=cos(2θ)+sin(2θ)(ui)

其中 u \mathbf{u} u是单位向量,表示旋转轴, u = ( u x , u y , u z ) \mathbf{u}=(u_{x},u_{y},u_{z} ) u=(ux,uy,uz),且 i = ( i , j , k ) \mathbf{i}=(i,j,k ) i=(i,j,k)

更具体地,四元数 q q q的分量为:

q = ( c o s ( θ 2 ​ ) , u x ​ s i n ( θ 2 ​ ) , u y ​ s i n ( θ 2 ​ ) , u z ​ s i n ( θ 2 ) ) q=(\mathrm{cos} (\frac{\theta}{2}​),u_{x} \mathrm{​sin} (\frac{\theta}{2}​),u_{y} \mathrm{​sin} (\frac{\theta}{2}​),u_{z} \mathrm{​sin} (\frac{\theta}{2})) q=(cos(2θ),uxsin(2θ),uysin(2θ),uzsin(2θ))

四元数旋转向量

如果我们要旋转一个三维向量 p p p,使用四元数的方法如下:

  1. 构造旋转四元数

    q = ( c o s ( θ 2 ​ ) , u x ​ s i n ( θ 2 ​ ) , u y ​ s i n ( θ 2 ​ ) , u z ​ s i n ( θ 2 ) ) q=(\mathrm{cos} (\frac{\theta}{2}​),u_{x} \mathrm{​sin} (\frac{\theta}{2}​),u_{y} \mathrm{​sin} (\frac{\theta}{2}​),u_{z} \mathrm{​sin} (\frac{\theta}{2})) q=(cos(2θ),uxsin(2θ),uysin(2θ),uzsin(2θ))

  2. 构造向量四元数(纯四元数):

    p = ( 0 , p x ​ , p y , p z ​ ) p=(0,p_{x}​,p_{y},p_{z} ​) p=(0,px,py,pz)

  3. 计算旋转后的向量
    使用四元数乘法进行旋转:

    p ′ = q p q − 1 p' =qpq^{-1} p=qpq1

    其中, q − 1 q^{-1} q1等于 q q q的共轭( q − 1 = q ˉ / ∥ q ∥ 2 q^{-1}=\bar{q} / \parallel q \parallel ^{2} q1=qˉ/q2,共轭也就是实部不变,虚数相反​)。

习题p6:

一般线性方程 A x = b Ax=b Ax=b有哪几种做法?

  • 从解析解和数值解分析

    解析解

    解析解(Analytical Solution)指的是通过数学公式或代数操作直接求出精确解。对于线性方程组 A x = b Ax=b Ax=b,常用的方法有:

    1. 高斯消元法
      通过行变换将矩阵 A A A 化为上三角矩阵,然后通过回代求解 x x x

      • 优点:可以得到精确解。
      • 缺点:计算复杂度较高,适用于较小规模的线性方程组。
    2. 矩阵逆
      如果矩阵 A A A是可逆的,则解可以表示为 x = A − 1 b x=A^{-1} b x=A1b

      • 优点:直接使用矩阵运算得到精确解。
      • 缺点:计算矩阵逆的过程复杂度高( O ( n 3 ) O(n^{3}) O(n3)),并且数值不稳定;对于大规模矩阵病态矩阵不适用。
    3. 克拉默法则
      如果 A A A是方阵且行列式不为零,则每个未知数可以用行列式表示。

      • 优点:概念简单。
      • 缺点:仅适用于小规模方程组,计算行列式复杂度高( O ( n ! ) O(n!) O(n!))。

    数值解

    数值解(Numerical Solution)指的是通过数值方法近似求解方程组。常用的数值解方法有:

    1. 迭代法

      • 雅可比迭代法(Jacobi Method):依次更新每个未知数。
      • 高斯-赛德尔迭代法(Gauss-Seidel Method):每次迭代使用最新的解。
      • 超松弛迭代法(SOR Method):对高斯-赛德尔方法进行加速。
      • 优点:适用于大型稀疏矩阵
      • 缺点:收敛性依赖于矩阵的特性,可能需要很多迭代次数。
    2. 直接法

      • LU 分解:将矩阵 A A A分解为下三角矩阵 L L L和上三角矩阵 U U U,然后解两个三角方程组。
      • QR 分解:将矩阵 A A A分解为正交矩阵 Q Q Q和上三角矩阵 R R R,然后解三角方程组。
      • Cholesky 分解:如果矩阵 A A A是正定的,则可以分解为 L L T LL^{T} LLT,其中 L L L是下三角矩阵。
      • 优点:比计算矩阵逆更稳定、更高效,适用于大规模或病态矩阵
      • 缺点:仍然是 O ( n 3 ) O(n^{3}) O(n3)复杂度,对于非常大的矩阵可能不适用。

    比较与选择

    • 解析解

      • 优点:如果可行,能提供精确解。
      • 缺点:仅适用于小规模问题,且计算复杂度高,数值不稳定。
    • 数值解

      • 优点:适用于大规模问题和稀疏矩阵,计算速度快,方法稳定。
      • 缺点:提供的是近似解,可能存在数值误差,收敛性依赖于问题特性。

    在实际应用中,选择解析解还是数值解通常取决于问题的规模矩阵的特性计算资源。对于小规模的线性方程组或特定类型的矩阵(如对称正定矩阵),解析解是一个可行的选择。而对于大规模的线性方程组或稀疏矩阵,数值解通常是更好的选择。

数值解解析解是解决数学方程或问题的两种不同方法。它们各自有其优缺点和适用范围。下面详细介绍它们的定义、区别、优缺点。

定义
  • 解析解

    解析解是通过代数操作解析函数得到的精确解。它通常用数学表达式来表示,并且能提供问题的精确解。

  • 数值解

    数值解是通过数值方法计算机算法近似求得的解。它提供了问题的近似解,通常以数值形式表示。

区别
  1. 形式

    • 解析解:以数学公式或解析表达式的形式给出。
    • 数值解:以数值结果或近似值的形式给出。
  2. 精度

    • 解析解:精确解,假设没有计算误差。
    • 数值解:近似解,精度取决于算法、步长、计算机精度等因素。
  3. 求解过程

    • 解析解:通常通过符号运算、代数技巧或解析函数求得。
    • 数值解:通常通过迭代算法、数值方法或计算机程序求得。
  4. 适用范围

    • 解析解:适用于方程或问题有明确的解析表达式,并且能通过代数操作求解的情况。
    • 数值解:适用于复杂方程或问题解析求解困难或无解析解的情况。
优缺点

解析解

  • 优点:
    • 提供精确解
    • 便于理解问题的内在结构和性质
  • 缺点:
    • 复杂或高阶问题可能难以求得解析解
    • 某些方程或问题根本没有解析解

数值解

  • 优点:
    • 能处理复杂问题无解析解的问题。
    • 利用计算机可以高效地求解大规模问题。
  • 缺点:
    • 解是近似的,精度依赖于算法和计算资源
    • 可能会有数值误差稳定性问题
  • 提供精确解
    • 便于理解问题的内在结构和性质
  • 缺点:
    • 复杂或高阶问题可能难以求得解析解
    • 某些方程或问题根本没有解析解

数值解

  • 优点:
    • 能处理复杂问题无解析解的问题。
    • 利用计算机可以高效地求解大规模问题。
  • 缺点:
    • 解是近似的,精度依赖于算法和计算资源
    • 可能会有数值误差稳定性问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何快速创建一个微信报名链接

在这个快节奏的时代,如何让活动报名更加便捷、高效,成为了众多主办方关注的焦点。今天,就让我们一起探索如何快速创建一个微信报名链接,让您的活动报名变得前所未有的简单与智能。 一、洞悉需求,解锁报名新方式 在数字…

【Pyspark-驯化】一文搞定spark的代码执行原理和使用技巧

【Pyspark-驯化】一文搞定spark的代码执行原理和使用技巧 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获取 微信公众号 &…

国标GB28181协议设备通道告警没有快照图片怎么办?实时流抓图/录像抓图

熟悉国标GB28181协议的同学都知道,国标协议在告警推送这一块定义了各种告警类型和告警参数,但就是没有定义告警的图片应该怎么上传到平台,所以,现在市面上的所有设备,几乎都不支持上传告警图片,这给我们的项…

CCRC-DSA数据安全评估师:加快构建大网络安全工作格局

7月31日,第十二届ISC.AI互联网安全大会开幕式在北京国家会议中心隆重举行,本次大会以“构建大型安全防护模型,引领安全产业创新”为主题。 中央网络安全和信息化委员会办公室副主任、国家互联网信息办公室副主任王京涛出席并发表了重要讲话。…

【简历】黑龙江某一本大学:Java简历指导,中厂面试通过率低

简历说明 这是黑龙江某一本大学25届的校招简历,计算机专业,那么我们说像这种比较好的一本大学叫老一本,大家应该定下,一本的就业主体在中厂,所以校招你要先定你的就业范围,因为考察的项目要求,…

企微中台助力私域用户营销

背景 为了提升公司内外部的沟通、协作效率,我们在内部广泛使用了企业微信服务。同时,随着互联网获客成为主要手段,企业面临着激烈的竞争,导致获客变得更加困难,这需要我们花费更多的时间和资源。因此,精细化…

【中项】系统集成项目管理工程师-第10章 项目整合管理-10.1制定项目章程

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

包的基本使用

目录 一、看一个应用场景 二、基本介绍 三、快速入门 四、注意事项和使用细节 1、导入包的基本语法 2、导入包的模块的指定函数、类、变量 3、__init__.py 通过__all__控制允许导入的模块 4、包可以有多个层级 5、快捷键 altenter/shiftaltenter 可以快捷的导入 6、…

【计算机方向】五本计算机SCI,国人占比高,沾边就收!堪称“水刊之王”!

本期将为您带来五本计算机SCI 妥妥毕业神刊! KNOWLEDGE ENGINEERING REVIEW Evolving Systems ASIAN JOURNAL OF CONTROL EUROPEAN JOURNAL OF CONTROL INTERNATIONAL JOURNAL OF CONTROL AUTOMATION AND SYSTEMS 期刊名称&#xf…

电话外呼系统功能详解

外呼系统的功能特点 1、数据管理:外呼系统全面管理电销数据,数据报表应有尽有。 2、高频拨号:外呼系统具有多种拨号方式,专属的电销线路,不限制高频拨号。 3、一键拨号:外呼系统的一键拨号功能可以减少手动输入号码的繁琐过程。 4、筛选号…

深度学习中常见的四种数据标准化方法详细解读(StandardScaler、MinMaxScaler、RobustScaler、MaxAbsScaler)

目录 1. 前提摘要 2. 标准化方法 2.1 StandardScaler 2.1.1 计算方法 2.1.2 计算公式 2.1.3 适用场景 2.2 MinMaxScaler 2.2.1 计算方法 2.2.2 计算公式 2.2.3 适用场景 2.3 RobustScaler 2.3.1 计算方法 2.3.2 计算公式 2.3.3 适用场景 2.4 MaxAbsScaler 2.…

一篇文章让你用我的世界中的红石搞懂什么是ALU!

目录 1.一些在开始的约定 2.七大逻辑门电路 1、 与门 2、 或门 3、 非门 5、 或非门 6、 异或门 7、 同或门 3.半加器 4.全加器 5.ALU 1.一些在开始的约定 相同的概念:相同的概念:高电平低电平逻辑真逻辑假 开关的开 开关的关 灯的亮 灯…

聚鼎科技:装饰画怎么做盈利更快

在当今社会,艺术与商业的界限日渐模糊,装饰画作为一种独特的艺术形式,不仅美化了空间,同时也成为了一种盈利的途径。要在竞争激烈的市场中脱颖而出,实现盈利最大化,创作者及销售者必须采取一些明智的策略。…

19 注意力机制

目录 1.注意力机制从心理学的角度出发注意力机制非参注意力池化层Nadaraya-Watson 核回归:总结注意力汇聚:Nadaraya-Watson 核 代码实现非参数注意力汇聚(非参数注意力池化)注意力权重参数注意力汇聚(参数注意力池化)2.注意力分数如何将 key 和 value 拓展到更高的维度掩…

C#图片批量下载Demo

目录 效果 项目 代码 下载 效果 C#图片批量下载 项目 代码 using Aspose.Cells; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.…

【zookeeper 第六篇章】分布式锁

一、分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。 二、zookeeper 分布式锁 1、客户端A创建临时顺序节点 demo。并在节点下创建 x_00000001。 2、客户端A判断是否自己是第一个节点,如果是就锁成功。 3、客户端B创建临时顺序节点 demo。 并…

文件操作及面试题

目录 文本文件和二进制文件 File概述 递归去查看某个目录下的所有文件与目录 InputStream概述 OutputStream 概述 文件操作的应用 面试题:递归文件路径并且删除指定文件 将一个指定路径的文件复制到另一个文件中去 1.文件 此处的文件有多种含义&#xff0c…

基于京东家电数据分析与价格预测研究【爬虫、Pyecharts、Flask、机器学习】《商品可换》

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍研究背景研究目的研究意义数据获取数据预处理数据分析与可视化大屏可视化基于Flask的系统框架集成价格预测模型每文一语 有需要本项目的代码或文档以及全部资源,或者部署…

去字节面试大模型算法岗,体验极佳!!

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…

拳击与格斗杂志拳击与格斗杂志社拳击与格斗编辑部2024年第4期目录

搏击研究 拳击运动员灵敏素质训练策略研究 巫金君; 4-6 拳击运动员体能训练的方法与策略 彭天泽;任安萍;高刚; 7-9 高校武术教学与体能训练的结合研究 黄昊; 10-12《拳击与格斗》投稿:cn7kantougao163.com 拳击运动员核心力量训练研究 宋林董;张钰涵…