视觉SLAM中的数学基础01 -3D空间的位置表示

在视觉SLAM中,理解和表示3D空间中的位置是至关重要的。这涉及到多种数学概念和工具,如坐标系、向量、矩阵、旋转和平移等。这些数学基础构成了视觉SLAM算法的核心。以下是3D空间位置表示的基本数学概念。

在这里插入图片描述
这是一个表示世界坐标系和相机坐标系之间关系的3D图。图中:

红色、绿色和蓝色的箭头分别表示各个坐标系的X、Y、Z轴。
“World” 表示世界坐标系的轴,原点位于图中的中心。
“Camera” 表示相机坐标系的轴,原点相对于世界坐标系有一个位移,并且围绕Z轴旋转了45度。
虚线连接了世界坐标系的原点和相机坐标系的原点,表示两者之间的平移关系。

1. 坐标系和点的表示

1.1 世界坐标系(World Coordinate System):

通常在SLAM中,设定一个全局参考系,称为世界坐标系,表示整个环境中的固定参考点。

1.1.1 定义与用途

定义:世界坐标系是一个三维笛卡尔坐标系,通常由三个正交的轴(X轴、Y轴和Z轴)构成。在SLAM系统中,世界坐标系的原点通常选择为某个固定位置,如机器人的初始位置、地图的某个基准点等。

1.1.2用途:

定位与地图构建:世界坐标系用于统一表示所有物体、特征点、传感器的位置信息。通过统一的世界坐标系,SLAM系统可以在地图构建过程中确保所有点和物体的位置关系是一致的。

坐标转换:SLAM系统经常涉及多个坐标系之间的转换,如相机坐标系、机器人坐标系与世界坐标系之间的转换。世界坐标系作为全局基准,使得这些转换有了一个统一的参考点。

路径规划与导航:在机器人导航中,路径通常以世界坐标系为基准进行规划,这样可以确保机器人按照全球统一的路径移动,而不受局部坐标系变化的影响。

1.2 相机坐标系(Camera Coordinate System):

相机自身的坐标系,通常定义为相机光心为原点,光轴为Z轴。

相机坐标系是视觉SLAM和计算机视觉中一个非常重要的坐标系,它用于描述相机所看到的世界中的物体或点的位置。理解相机坐标系有助于进行从三维空间到图像平面的投影变换,进而用于视觉SLAM中的定位和地图构建。

  1. 定义
    相机坐标系是以相机的光心(光学中心)为原点的三维坐标系,具体的定义如下:

原点:相机的光心,即相机的光轴与成像平面交点在相机内部的理想位置。
Z轴:通常定义为沿着相机的光轴方向,指向前方(也就是相机镜头看向的方向)。
X轴:水平 指向右(从相机的视角来看)。

Y轴:垂直 指向下(从相机的视角来看)。

这种坐标系的定义与相机的几何和物理结构紧密相关,是所有图像处理和计算的基础。

  1. 3D点的表示
    在相机坐标系中,三维空间中的一个点
    在这里插入图片描述
    表示该点相对于相机光心的位置。该坐标系中的Z轴表示相机的前方,X轴表示相机的右侧,Y轴表示相机的下方。

3. 投影与相机模型

为了将3D世界中的点投影到2D图像平面上,需要使用相机模型,通常采用针孔相机模型来描述这一过程。

针孔相机模型:假设光线通过相机光心进行投影,空间中的3D点

在这里插入图片描述
在图像平面上的投影点(u,v) 可以通过以下关系表示:

在这里插入图片描述
在这里插入图片描述
4. 相机坐标系与其他坐标系的转换

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

1.3 点的表示:

在3D空间中,一个点的位置可以用一个三维向量
在这里插入图片描述

表示。这个向量表示点相对于某个坐标系的坐标值。
其中,X、Y、Z 是点在该坐标系中沿着三个轴的坐标值。这个点的位置相对于所选择的坐标系原点(通常是相机的光心、世界坐标系的原点等)进行测量。

在这里插入图片描述

在这里插入图片描述

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

1.3.6. 点的重建

在一些情况下,需要从多个图像视角中重建3D点的位置。这通常通过三角测量法完成,即根据两个或多个相机视角的2D点,反推出原始3D点的坐标。这种重建过程在SLAM中非常关键,用于构建地图和环境模型。

2 各个坐标系的关系

在SLAM中,世界坐标系通常与其他几个坐标系互相配合使用:

相机坐标系(Camera Coordinate System):以相机光心为原点,通常Z轴朝向相机的视线方向,X轴水平指向右,Y轴指向下。在SLAM中,需要将相机坐标系中的点转换到世界坐标系中,以统一表示这些点在全局环境中的位置。

机器人坐标系(Robot Coordinate System):以机器人自身的某个点为原点,通常X轴指向机器人前方,Y轴指向左方,Z轴指向上方。SLAM中,机器人的位置和姿态常用世界坐标系来表示。

图像坐标系(Image Coordinate System):用于描述图像中的像素点位置。SLAM系统通过相机模型将图像坐标系中的点与世界坐标系中的3D点关联起来。

2. 旋转矩阵和欧拉角

在计算机视觉和SLAM(Simultaneous Localization and Mapping)中,旋转矩阵和欧拉角是用于描述物体在三维空间中旋转的两种常见方式。它们各有优缺点,并在不同的应用场景中发挥作用。

在这里插入图片描述

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

2.2 欧拉角(Euler Angles)

定义

欧拉角是一种用来描述三维旋转的方式,通过三个角度来表示物体绕固定坐标轴的旋转。这三个角度通常称为 俯仰角(Pitch)、横滚角(Roll)和 偏航角(Yaw),分别表示绕X轴、Y轴和Z轴的旋转。
在这里插入图片描述

在这里插入图片描述

2.3. 旋转矩阵与欧拉角的转换

在实际应用中,经常需要在旋转矩阵和欧拉角之间进行转换。

在这里插入图片描述

2.4. 实际应用中的选择

使用旋转矩阵:如果需要高精度计算,或者需要频繁地组合和分解旋转,旋转矩阵通常是更好的选择。

使用欧拉角:如果旋转角度的直观解释很重要,或者系统中旋转不会涉及到极端的姿态(如接近万向锁),欧拉角可能会更方便。

3. 四元数(Quaternion)

四元数是用于描述三维空间中旋转的一种数学工具,在计算机视觉、SLAM(Simultaneous Localization and Mapping)、计算机图形学等领域被广泛应用。与欧拉角和旋转矩阵相比,四元数具有许多独特的优点,如避免了欧拉角的万向锁问题、存储效率更高、计算更高效等。

1. 四元数的定义

四元数是一种扩展的复数,由一个实数部分和一个三维向量部分组成。它可以表示为:

在这里插入图片描述

3.2. 四元数表示旋转

在这里插入图片描述

3. 四元数的性质

在这里插入图片描述

3.4. 四元数的应用

在这里插入图片描述

3. 5. 四元数的优点

避免万向锁问题:四元数不会像欧拉角那样遇到万向锁问题,适合表示任意角度的旋转。

计算效率高:四元数的旋转计算比旋转矩阵的乘法更高效,特别是在组合多个旋转时。

存储紧凑:四元数只需要4个参数,而旋转矩阵需要9个参数,存储和传输更为紧凑。

3.6. 实际应用中的四元数

SLAM系统:在SLAM系统中,四元数被广泛用于描述相机、传感器或机器人的姿态(位置和方向)。
计算机图形学:四元数用于3D动画中的旋转插值(如球面线性插值,SLERP),确保平滑的旋转效果。
无人驾驶和机器人学:四元数常用于路径规划、姿态控制和状态估计中,以描述和计算运动中的旋转。

4. 平移和齐次坐标

5. 刚体变换(Rigid Transformation)

6. 相机模型与投影

在这里插入图片描述
在3D空间中表示位置和姿态是视觉SLAM的数学基础,涉及坐标系、向量、矩阵、旋转和平移等多个概念。这些数学工具不仅用于描述相机的位置和方向,还用于在不同坐标系之间进行转换,是视觉SLAM算法的核心部分。理解这些基础对于进一步深入学习和应用视觉SLAM技术至关重要。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JNPF快速开发平台赋能数字办公方式转变

随着信息技术的飞速发展,数字化转型已成为各行各业提升效率、优化流程的重要手段。JNPF快速开发平台正是在这样的背景下应运而生,它通过简化开发流程,使得非技术人员也能参与到应用的构建中来,从而加速了数字办公方式的转变。 数字…

畅捷通基于Flink的实时数仓落地实践

摘要:本文整理自畅捷通总架构师、阿里云MVP专家郑芸老师在 Flink Forward Asia 2023 中闭门会上的分享。内容主要为以下四部分: 业务背景数仓建设具体案例未来展望 一、业务背景 畅捷通是用友旗下成员企业,一直持续专注于小微企业的数字化转…

4K YouTube to MP3 Pro:跨平台音频提取与转换的好用工具

4K YouTube to MP3 Pro是一款专为追求高品质音频体验的用户设计的跨平台(支持Mac与Windows)音频提取与转换软件。该软件以其卓越的音频提取能力和简便的操作流程,在同类产品中脱颖而出,成为众多用户的心头好。 功能强大&#xff…

AI革新3D建模:Stable Fast 3D工具的高效应用——图片快速生成3D模型

在3D建模领域,AI技术的介入正引发一场革命。Stable Diffusion(SD)的最新应用——Stable Fast 3D,为快速生成3D模型提供了一个强大的解决方案。以下是对这项技术及其应用的详细介绍和优化建议。 一、工具概览 Stable Fast 3D模型:这是一个基于AI的3D模型生成工具,可通过H…

社交电商系统:技术融合与商业创新

一、引言 随着社交平台的普及和电商系统的不断发展,社交电商系统作为一种新型的商业模式应运而生。这种模式结合了传统电子商务和社交媒体的优势,为消费者和商家提供了一个全新的购物和销售环境。本文将深入探讨社交电商系统的技术架构、主要模式、优势以…

每日学术速递8.8

1.Rethinking temporal self-similarity for repetitive action counting 标题:重新思考重复动作计数的时间自相似性 作者: Yanan Luo, Jinhui Yi, Yazan Abu Farha, Moritz Wolter, Juergen Gall 文章链接:https://arxiv.org/abs/2407.09…

LVS(Linux Virtual Server)详解

LVS(Linux Virtual Server)是一个用于负载均衡的开源软件项目,旨在通过集群技术实现高性能、高可用的服务器系统。它运行在Linux操作系统上,并且可以利用内核级的资源来提高性能和稳定性。 思维导图 LVS的工作原理 LVS主要基于Ne…

【树的遍历】

题目 代码 #include<bits/stdc.h> using namespace std;const int N 40;int in[N], pos[N]; //中序、后序 int idx[N]; //中序的值->索引 unordered_map<int, int> l, r; //根节点的左、右树根节点 int n; int build(int il, int ir, int pl, int pr) {int ro…

vite + tsc 打包报TS类型错误问题及解决方法

当新建vue3项目&#xff0c;package.json文件会自动添加一些配置选项&#xff0c; 这些选项基本没有问题&#xff0c;但是在实际操作过程中&#xff0c;列举一个目前我遇到的一个问题&#xff1a;打包后报了一堆TS类型错误&#xff0c;怎么消除这些错误&#xff1f; 报错信息&a…

ubuntu20从docker安装到制作自己的镜像使用记录

ubuntu20从docker安装到制作自己的镜像使用记录 第一章&#xff1a;配置环境 1.ubuntu20 2.docker镜像18.04 3.参考&#xff1a;https://www.runoob.com/docker/docker-tutorial.html 第二章&#xff1a;安装docker 一、安装docker 参考1&#xff1a;Ubuntu安装docker并运…

Go语言编程大全,web微服务数据库十大专题精讲

本课程主要从数据结构、Go Module 依赖管理、IO编程、数据库编程、消息队列、加密技术与网络安全、爬虫与反爬虫、web开发、微服务通用技术、Kitex框架等方面讲解~ 链接&#xff1a;https://pan.quark.cn/s/d65337a0e60d

视频循环存储的实现

目录 1. 三方工具 2. 视频存储的实现 2.1 分段存储 - 比如每15分钟 2.2 对齐到15分钟整边界 2.3 循环存储的实现 video_space_daemon.sh 3.封装 3.1 主执行程序&#xff0c;修订版 3.2 创建服务 3.3 service关联的执行脚本文件 4.额外的工作 附录A: ffmpeg视频存储…

矩阵算法的介绍和实现

一. 介绍 首先我们要清楚矩阵是什么&#xff1a;矩阵是一个按照长方阵列排列的复数或实数集合 1> 定义 定义&#xff1a;mn矩阵为mn个数排成的m行n列的表格&#xff0c;当mn时&#xff0c;矩阵A称为n阶方阵或者n阶矩阵。零矩阵&#xff1a;矩阵所有元素都为0。同型矩阵&a…

一个简单的录音软件(利用QT录音,ffmpeg进行音频重采样,fdk-aac编码)

录音软件是一种非常有用的工具&#xff0c;可以帮助我们记录和存储语音信息。在本文中&#xff0c;我们将介绍一个简单的录音软件&#xff0c;该软件利用QT进行录音&#xff0c;使用ffmpeg进行音频重采样&#xff0c;并使用fdk-aac编码。 一、 环境介绍 1、QT版本: QT5.…

SuccBI+低代码文档中心 — 可视化分析(仪表板)(上)

有关仪表板的设计器&#xff1a; 查询设置 由于仪表板的设计器是所见即所得的&#xff0c;可以将当前制作的内容和数据的查询结果实时展示在界面中&#xff0c;当引入到仪表板的模型数据量较大时&#xff0c;为了提高设计器界面的查询性能&#xff0c;提供了以下两种方法&…

Azure openai connection with javascript

题意&#xff1a;使用JavaScript与Azure OpenAI进行连接 问题背景&#xff1a; I have created my chatbot with javascript and used open ai. I need to change it to azure open ai but can not find the connection details for javascript. This is how i connect with p…

基于C#调用文心一言大模型制作桌面软件(可改装接口)

目录 开发前的准备账号注册应用创建应用接入开始开发创建项目设计界面使用 AK,SK 生成鉴权签名窗体代码百度智能云千帆大模型平台什么是百度智能云千帆大模型平台模型更新记录开发前的准备 账号注册 访问百度智能云平台,通过百度账号登录或手机号验证。 点此跳转百度智能云平…

数值分析【4】

目录 ​编辑第六章 数值积分微分 龙贝格 高斯求积 查表&#xff1f; 插值求导 两点 ​编辑 三点​编辑 第七章 ode 龙哥库塔 线性多步法 第八章 eig 幂法&#xff1a;v-》Av-》AAv-》……​编辑 反幂法 每次成得是A逆&#xff0c;这样得到摸最小的特征值​编辑 Q…

ubuntu大模型GPU版本安装及部署

版本查看&#xff1a; nvidia-smi 离线下载地址&#xff1a; 下载 NVIDIA 官方驱动 | NVIDIA (选型) Linux x64 (AMD64/EM64T) Display Driver | 535.146.02 | Linux 64-bit | NVIDIA(选型结果) 下载 NVIDIA 官方驱动 | NVIDIA apt-get update 禁用nouveau(nouveau是通用的…

【深度学习|目标跟踪】快速入门卡尔曼滤波!

卡尔曼滤波详解 申明一、什么是卡尔曼滤波1.1 卡尔曼滤波的使用场景1.2 卡尔曼滤波的定义 二、卡尔曼滤波公式详解&#xff08;无推导&#xff09;三、卡尔曼滤波的简单应用 申明 本博客参考了b站up主“华南小虎队”的卡尔曼滤波教学视频以及Lauszus Kristian Sloth Lauszus的卡…