视觉SLAM14精讲——三维空间刚体运动1.0

2024-05-12 03:04

本文主要是介绍视觉SLAM14精讲——三维空间刚体运动1.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介


第一份工作是一家比较大的机器人企业,被迫在AI视觉的基础上自学SLAM。一开始接触的就是vslam14讲,现在想把一些心得和基础知识分享一下。但是目前网络上有关视觉SLAM14讲挺多了,所以本系列不会重复书本中已经有的基本内容,也不一定按顺序发表。想要体现的还是一些更深层的理解和书本意外的一些知识。


三位空间刚体运动

前两章的内容都是一些基础背景知识以及专业名词解释,因此我选择从第三章开始。第三章可以说是整本书,甚至整个3D计算视觉的基石。其中包含大量的数学内容,并需要非常好的空间想像能力。因此对这一章必须要有非常深的理解,才会有助于看懂后面的章节。


特殊正交群与特殊欧式群

旋转矩阵的理解

刚接触旋转向量的人可能会十分不适应这种表示方式,因为一般人直觉上更喜欢使用欧拉角来表示三维旋转,这种比较直观的方式。但是不得不承认,旋转矩阵在数学计算,尤其是编程方面是非常方便的(直接照公式敲的程度)。因此,深入了解旋转向量是非常重要的。

在十四讲中,对于旋转矩阵的推导非常干净利落。通过两组空间坐标的正交基,对等效坐标建立等式解出旋转矩阵的定义。如果我们只对空间坐标系的坐标轴进行旋转,则会有如下公式

R x ( β ) = [ 1 0 0 0 c o s β s i n β 0 − s i n β c o s β ] R_x(\beta) = \left[ \begin{array}{ccc} 1 & 0 & 0\\ 0 & cos\beta & sin\beta\\ 0 & -sin\beta & cos\beta \end{array} \right] Rx(β)= 1000cosβsinβ0sinβcosβ

R y ( β ) = [ c o s β 0 − s i n β 0 1 0 s i n β 0 c o s β ] R_y(\beta) = \left[ \begin{array}{ccc} cos\beta & 0 & -sin\beta\\ 0 & 1 & 0\\ sin\beta & 0 & cos\beta \end{array} \right] Ry(β)= cosβ0sinβ010sinβ0cosβ

R z ( β ) = [ c o s β s i n β 0 − s i n β c o s β 0 0 0 1 ] R_z(\beta) = \left[ \begin{array}{ccc} cos\beta & sin\beta & 0\\ -sin\beta & cos\beta & 0\\ 0& 0 & 1 \end{array} \right] Rz(β)= cosβsinβ0sinβcosβ0001
观察上述公式有两个结论。

  • 第一,我们可以通过欧拉角配合上述公式来构造我们所需要的旋转矩阵。构造旋转矩阵的时候需要注意旋转的先后顺序(群的性质,不满足交换律)。
  • 其次,旋转某个轴的时候,另外两个轴并不是孤立的,而是会受到影响的。比如我们将一个右手表示的三维坐标周的y轴旋转90度(正数为逆时针),会发现此时z轴替换了原来x轴的位置,而此时x轴正指向下方。

因此,上述公式有着非常重要的意义,建议背下来。别怕,很好记。
旋转哪个轴,该位置就为1,划掉该位置的行和列(均为0)。对角线是cos,副对角线是sin。除了y轴旋转,负号都在左下角。
[ x 0 0 0 y 0 0 0 z ] \left[ \begin{array}{ccc} x & 0 & 0 \\ 0 & y & 0 \\ 0 & 0 & z \end{array} \right] x000y000z

旋转矩阵求逆在工程中的应用

特殊正交群的一个非常重要的性质就是R的转置和R的逆是等价的。 然而在实际变成过程中我们会经常会按照思维惯性来求取旋转矩阵的逆:

#python
R_inv = np.linalg.inv(R)#C++
##OPENCV
cv::Mat R_inv = R.inv();
##EIGEN
Eigen::Matrix3d R_inv = R.inverse()

但是求逆的算法多数情况下求取的是近似值,并且计算过程复杂。多数库的求逆算法并不会假设矩阵的正交性,因此会使用普通的求逆算法来对矩阵进行运算。那么既然有着特殊正交群的前提条件,就应该使用转置替代求逆操作。这样做的好处不止于使用方便,求取的结果是精确值而非近似值,并且在效率上优于直接求逆的方法。

#python
R_inv = R.T#C++
##OPENCV
cv::Mat R_inv = R.t();
##EIGEN
Eigen::Matrix3d R_inv = R.transpose();

这篇关于视觉SLAM14精讲——三维空间刚体运动1.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981424

相关文章

Unity3D 运动之Move函数和translate

CharacterController.Move 移动 function Move (motion : Vector3) : CollisionFlags Description描述 A more complex move function taking absolute movement deltas. 一个更加复杂的运动函数,每次都绝对运动。 Attempts to

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

Python计算机视觉编程 第十章

目录 一、OpenCv基础知识 1.读取和写入图像 2.颜色空间 3.显示图像和结果 二、处理视频 1.输入视频 2.将视频读取到NumPy数组中 三、跟踪 1.光流 2.Lucas-Kanade算法 一、OpenCv基础知识 OpenCV 自带读取、写入图像函数以及矩阵操作和数学库。 1.读取和写入图像 import cv2# 读取图像im = c

机器视觉硬件选型根据某项目相机镜头

一 项目总需求 1、大视野检测需求: (1)大视野: ①产品尺寸15.6寸屏幕,产品大小:350mm x 225mm; ②产品料盘尺寸大小:565mm x 425mm; ③工作距离:880mm;检测精度:500μm; 1、大视野检测需求: (1)大视野: ①产品尺寸15.6寸屏幕,产品大小:350mm x 225mm; ②产品料盘尺寸大小:565mm x 425mm; 工作距离:

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP: 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率(采用顺推) 从 初始状态推向结果,同一般的DP类似,只是经历了概率论知识的包装。 老题: 添加链接描述 题意: 袋子里有w只白鼠,b只黑鼠,A和B轮流从袋子里抓,谁先抓到白色谁就赢。A每次随机抓一只,B每次随机 抓完一只后 会有另外一只随机老鼠跑出来。如果两个人都没有抓到白色,那么B赢。A先抓,问A赢得概率。 w b 均在

运动耳机哪个牌子的质量好?五款口碑绝佳机型安利!

​喜欢户外活动的你,肯定是个有格调的人。想象一下,如果在户外的时候,能戴上一款耳机,不仅跟环境搭,还能让你享受到超棒的音乐,那感觉得多爽!开放式耳机就是为这个目的设计的,它不塞耳朵,戴着更舒服,音质也棒,让你在户外能更好地感受到周围自然的声音。这耳机现在超受欢迎,作为一个既爱户外又爱数码的发烧友,我自己也试过不少款,它们真的给我的户外探险加了不少分。接下来,我会跟大家分享这些耳机的亮点,帮你挑出自